Обновить
128K+

Java *

Объектно-ориентированный язык программирования

135,33
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Java Native Image: проверка возможности использования

Время на прочтение14 мин
Охват и читатели15K


Не так давно Oracle выпустил первый релиз проекта GraalVM (https://www.graalvm.org/). Релизу был сразу присвоен номер 19.0.0, видимо, для того чтобы убедить, что проект зрелый и готов к использованию в серьезных приложениях. Одна из частей этого проекта: Substrate VM — фреймворк, который позволяет превращать Java-приложения в нативные исполняемые файлы (а также нативные библиотеки, которые можно подключать в приложениях, написанных, например, на С/С++). Эта возможность пока объявлена экспериментальной. Также стоит отметить, что у нативных приложений на Java есть некоторые ограничения: необходимо перечислять все используемые ресурсы, чтобы включить их в нативную программу; нужно перечислить все классы, которые будут использоваться с помощью reflection и другие ограничения. Полный список указан тут Native Image Java Limitations. Изучив этот список, в принципе понятно, что ограничения не такие значительные, чтобы нельзя было разработать более сложные приложения, чем хелловорлды. Мною была поставлена такая цель: разработка небольшой программы, которая имеет встроенный web-сервер, использует базу данных (через ORM библиотеку) и компилируется в нативный бинарник, который может запускаться на системах без установленной Java машины.
Читать дальше →

Обзор докладов Java-трека c конференции RigaDevDays

Время на прочтение4 мин
Охват и читатели2.9K

image Всем привет! С 29 по 31 мая состоялась конференция RigaDevDays в Риге. Это был 5-ый юбилейный год конференции. Более 600 участников собрались в кинотеатре Forum Cinemas, чтобы послушать доклады по технологиям — C#, Java, MachineLearning, Microservices, SQL.


Конференция проходила в кинотеатре. Это поначалу вызывало у меня скепсис, но как только я утонул в удобнейшем кинозальном кресле с видом на огромный экран кода, я понял что кинотеатр это идеальное место для конференций.

Читать дальше →

Сравнение алгоритмов сортировки обменами

Время на прочтение29 мин
Охват и читатели7.4K

В данной статье рассматриваются различные варианты сортировки обменами, попутно даётся описание простого графического приложения processing.js с примерами сортировок.

Пузырьковая сортировка


Простейший вариант: перебирать массив от первого элемента к последнему, меняя местами (если потребуется) соседние элементы.

→ Проверить здесь

Читать дальше →

Иван Углянский и Владимир Ситников на jug.msk.ru

Время на прочтение3 мин
Охват и читатели3.3K
30 мая 2019 года Иван Углянский и Владимир Ситников представили свои доклады «Ходячие объекты-мертвецы, или GC всегда прав» и «Java тормозит: CodeCache edition» на встрече московского сообщества Java-разработчиков jug.msk.ru.


Читать дальше →

Конкурс разработчиков плагинов TeamCity

Время на прочтение1 мин
Охват и читатели2.5K
Привет, Хабр!

Недавно мы запустили конкурс разработчиков плагинов для TeamCity, и вы все еще можете в нем поучаствовать.



Правила просты: участники присылают нам плагины до 24 июня, а взамен получают годовую подписку на любую IDE от JetBrains на свой выбор. После того как сбор заявок завершится, мы — команда разработчиков TeamCity и трое независимых судей — наградим авторов трех лучших плагинов подарочными сертификатами Amazon на сумму от 1000 до 3000 долларов США. А еще один автор будет приглашен на экскурсию в офис JetBrains в Санкт-Петербурге или Мюнхене!
Читать дальше →

10 принципов объектно-ориентированного программирования, о которых должен знать каждый разработчик

Время на прочтение5 мин
Охват и читатели55K


Мне довольно часто встречаются разработчики, которые не слышали о принципах SOLID (мы подробно рассказывали о них здесь. — Пер.) или объектно-ориентированного программирования (ООП), или слышали, но не используют их на практике. В этой статье описываются преимущества принципов ООП, которые помогают разработчику в его ежедневном труде. Некоторые из них хорошо известны, другие — не очень, так что статья будет полезна и новичкам, и уже опытным программистам.
Читать дальше →

Как мы учились эксплуатировать Java в Docker

Время на прочтение13 мин
Охват и читатели57K
Под капотом hh.ru — большое количество Java-сервисов, запущенных в докер-контейнерах. За время их эксплуатации мы столкнулись с большим количеством нетривиальных проблем. Во многих случаях чтобы докопаться до решения приходилось долго гуглить, читать исходники OpenJDK и даже профилировать сервисы на продакшене. В этой статье я постараюсь передать квинтэссенцию полученного в процессе знания.


Читать дальше →

Создание многомодульного Gradle проекта SpringBoot + Angular в IDEA

Время на прочтение3 мин
Охват и читатели26K

Достаточно часто в моей практике используется связка Spring + Angular. Хочу поделится своим опытом по подготовке подобного проекта в среде разработки IntelliJ IDEA.


Создаем пустой Gradle проект


Для начала создадим пустой Gradle проект в IDEA, при этом снимите все галочки библиотек и фреймворков.




Пусть наш артефакт будет «demo», а группа «com.habr». После создания проекта будет автоматически сгенерировано файлы settings.gradle и build.gradle со следующим содержанием:

Читать дальше →

Используем Firebase в качестве хранилища изображений для Android-приложения

Время на прочтение3 мин
Охват и читатели20K

Используем Firebase в качестве хранилища изображений для Android-приложения


В этой статье вы узнаете, как извлечь изображение из хранилища Firebase для Android-приложения.

Читать дальше →

В Java 13 хотят добавить «текстовые блоки»

Время на прочтение2 мин
Охват и читатели11K
Блоки текста запланированы к появлению в Java 13. Об этом стало известно из JEP 355.

Блоки текста — это многострочный строковый литерал, который устраняет необходимость в экранировании большинства специальных символов и автоматически делает переносы строки.

Это дальнейшая попытка исследований, начавшихся в JEP 326(необработанные строковые литералы, был отозван).


Читать дальше →

Как перестать забывать про индексы и начать проверять execution plan в тестах

Время на прочтение9 мин
Охват и читатели13K
кдпв

Какое-то время назад, приключилась со мной неприятная история, которая послужила триггером для небольшого проекта на гитхабе и вылилась в эту статью.

Обычный день, обычный релиз: все задачи вдоль и поперек проверены нашим QA-инженером, поэтому со спокойствием священной коровы «закатываем» на stage. Приложение ведет себя хорошо, в логах — тишина. Принимаем решение делать switch (stage <-> prod). Переключаем, смотрим на приборы…

Проходит пару минут, полет стабильный. QA-инженер делает smoke-тест, замечает, что приложение как-то неестественно подтормаживает. Списываем на прогрев кешей.

Проходит еще пару минут, первая жалоба из первой линии: у клиентов очень долго загружаются данные, приложение тормозит, долго отвечает и т.д. Начинаем беспокоиться… смотрим логи, ищем возможные причины.
Читать дальше →

Java это не только кровавый энтерпрайз, но и быстрые latency-sensitive приложения

Время на прочтение6 мин
Охват и читатели12K
Я занимаюсь алгоритмической торговлей в Райффайзенбанке. Это довольно специфичная область банковской сферы. Мы делаем торговую платформу, работающую с низкими и предсказуемыми задержками. Успех приложения зависит, в том числе, и от скорости работы приложения, поэтому нам приходится заниматься всем стеком, задействованным в торговле: приватными сетевыми каналами, специальным аппаратным обеспечением, настройками ОС и специальной JVM, и, конечно же, самим приложением. Мы не можем остановиться на оптимизации исключительно самого приложения — настройки ОС или сети имеют не меньшее значение. Это требует технической экспертизы и эрудиции, чтобы понять, как через весь стек проходят данные, и где может быть задержка.

Читать дальше →

Spring Boot — OAuth2 и JWT

Время на прочтение13 мин
Охват и читатели109K
Салют, друзья! Уже завтра стартуют первые занятия в новом потоке курса «Разработчик на Spring Framework». В связи с этим традиционно делимся полезным материалом по теме.



В этой статье мы изучим использование OAuth2 и JWT совместно со Spring Boot и Spring Security.

Сервер авторизации (Authorization Server)


Сервер авторизации (Authorization Server) является наиболее важным компонентом в архитектуре безопасности Web API. Сервер авторизации действует как единая точка авторизации и позволяет вашим приложениям и HTTP endpoints определять функции вашего приложения.

Сервер ресурсов (Resource Server)


Сервер авторизации предоставляет клиентам токен доступа для доступа к HTTP Endpoints сервера ресурсов (Resource Server). Сервер ресурсов — это коллекция библиотек, которая содержит HTTP Endpoints, статические ресурсы и динамические веб-страницы.
Читать дальше →

Ближайшие события

JetBrains Open Day в Петербурге

Время на прочтение1 мин
Охват и читатели7.6K
Приглашаем всех на День открытых дверей в Петербурге!



Устроим большую тусовку в нашем новом офисе. Будут тематические зоны по технологиям, доклады, сессии ответов на вопросы, еда, музыка и даже открытый stand-up.
Читать дальше →

Selenium WebDriver – Метрика тестов в реальном времени с использованием Grafana и InfluxDB

Время на прочтение6 мин
Охват и читатели8.8K
Всем привет! Уже на следующей неделе стартуют занятия в группе «Java QA Engineer». Этому и будет приурочена нынешняя публикация.



Обзор:


Ежедневное выполнение автоматизированных регрессионных тестов в рамках каждодневной сборки неизбежно на настоящий момент. Приятно находить и сообщать об ошибках, сразу после их нахождения. Одновременно с этим проблематично проводить сотни автоматизированных тестов и удаленное параллельное выполнение. Как только у вас появляется набор автоматизированных регрессионных тестов, вы можете разбить его на несколько наборов по бизнес-модулям и запускать их параллельно, как часть ежедневного автоматизированного регрессионного тестирования. Большинство таких тестовых наборов выполняются на удаленной виртуальной машине, а результаты теста становятся доступны только после его выполнения. В противном случае, вы можете заглянуть в консоль jenkins, чтобы увидеть логи процесса выполнения теста. Иногда это раздражает. Было бы здорово иметь приложение, которое выдавало бы информацию о прохождении теста во время выполнения их на удаленных виртуальных машинах.

[Питер] Встреча JUG.ru с Сергеем Мельниковым — Профилирование со сверхсветовой скоростью: теория и практика

Время на прочтение2 мин
Охват и читатели1.5K

В четверг, 30 мая, в петербургском офисе компании Oracle состоится встреча JUG.ru с Сергеем Мельниковым из Райффайзенбанка. Сергей расскажет, как с помощью обычного perf и технологии Intel Processor Trace получить высокодетализированные профили для ваших Java-приложений.


Участие бесплатное, регистрация обязательная. Зарегистрироваться можно тут. Информация о теме встречи и спикере — под катом.


Читать дальше →

Custom Bottom Sheet: как это должно работать

Время на прочтение2 мин
Охват и читатели13K

Предисловие


Не так давно я прочитал статью о Bottom Sheet'e и, посовещавшись с коллегами, принял решение внедрить данную штуку в наше приложение. Потратив достаточно часов с целью научить Bottom Sheet выезжать в несколько шагов (like Google Maps), я осознал его тупость и ограниченность.

Читать дальше →

Введение в Spring Boot Actuator

Время на прочтение10 мин
Охват и читатели155K
Салют, хабровчане! Уже через неделю стартуют занятия в новой группе курса «Разработчик на Spring Framework». В связи с этим делимся с вами полезным материалом в котором рассказано о том, что такое Spring Actuator и чем он может быть полезен.



  1. Что такое Spring Actuator?
  2. Как добавить Spring Actuator в проект Maven или Gradle?
  3. Создание проекта Spring Boot с зависимостью Spring Actuator.
  4. Мониторинг приложений с Spring Actuator Endpoints.
Читать дальше →

Пять лет рабства

Время на прочтение7 мин
Охват и читатели36K

Задумывались ли вы когда-нибудь о собственной игре? А о собственной многопользовательской игре? Думаю, что да! Многие из вас хотели бы прильнуть к разработке собственного шедевра, где сливаются ваша многогранная фантазия и исключительный перфекционизм. Я вас понимаю и хочу рассказать свою историю этого увлекательного пути.


Читать дальше →

Что должен знать каждый QA-инженер о Selenium 4?

Время на прочтение5 мин
Охват и читатели14K
Привет, друзья. Май богат новыми курсами, и прямо сейчас, в преддверии запуска курса «Java QA Engineer», мы продолжаем публиковать полезный материал для QA-специалистов.



Вернемся в август 2018 года, когда сообщество тестировщиков потрясла новость о том, что Саймон Стюарт, один из основателей Selenium, официально утвердил дату релиза и афишировал некоторые основные обновления Selenium 4 на Selenium Conference в Бангалоре. Четвертая версия всеми любимого фреймворка для автоматизации веб-тестирования должна была быть выпущена к рождеству 2018 года.
Читать дальше →