Как стать автором
Поиск
Написать публикацию
Обновить
181.46

Java *

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

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

Топ 20 навигационных фич в IntelliJ IDEA. Часть 1

Время на прочтение5 мин
Количество просмотров59K
Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Продвинутый курс». И хотя в данном материале речь пойдет преимущественно о Java, материал будет полезен Android-разработчикам




Продолжая серию статей, в которых я освещаю основные фичи IntelliJ IDEA (ранее я писал об основных возможностях дополнения и рефакторинга кода), я хотел бы поговорить о навигации, которая является еще одной возможностью повышения производительности IDE, которая экономит вам много времени, при условии, конечно, что вы используете ее правильно.
Читать дальше →

Только что вышла Java 13. ZGC начал делиться памятью, CDS сам запоминает классы, и другие чудеса техники

Время на прочтение3 мин
Количество просмотров39K


Сегодня вышла новая версия джавы — Java/JDK 13. Гонка началась с весеннего выпуска JDK 12, состоявшегося 19 марта, а форк от основной ветки произошел 13 июня. Кого-то мы там по пути потеряли вроде JEP 343: Packaging Tool, но в целом всё норм, и пора пожинать плоды.


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

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

Профилирование со сверхсветовой скоростью: теория и практика. Часть 1

Время на прочтение13 мин
Количество просмотров12K
Привет! Из заголовка вы уже поняли, о чём я собираюсь рассказать. Тут будет много хардкора:
мы обсудим Java, С, С++, ассемблер, немного Linux, немного ядра операционной системы. А ещё разберём практический кейс, поэтому статья будет в трёх больших частях (достаточно объёмных).



В первой мы попробуем выжать всё возможное из существующих профилировщиков.
Во второй части сделаем собственный маленький профилировщик, а в третьей посмотрим, как же профилировать то, что профилировать не принято, потому что существующие инструменты не очень для этого подходят. Если готовы пройти этот путь — жду вас под катом :)
Читать дальше →

Когда стандарта HTTP мало. Коммитим в Micronaut

Время на прочтение6 мин
Количество просмотров4.5K
Всем привет, меня зовут Дмитрий, и сегодня я расскажу о том, как производственная необходимость заставила меня стать контрибутором для фреймворка Micronaut. Наверняка многие о нём слышали. Если вкратце, то это легковесная альтернатива Spring Boot, где основной упор сделан не на рефлексию, а на предварительную компиляцию всех нужных зависимостей. Более подробное знакомство можно начать с официальной документации.

Фреймворк Micronaut используется в нескольких внутренних проектах Яндекса и зарекомендовал себя достаточно хорошо. Так чего же нам не хватало? Могу сказать сразу: из коробки фреймворк поддерживает, в принципе, все фичи, которые теоретически могут понадобиться программисту для разработки бэкендов. Однако есть редкие кейсы, которые из коробки не поддерживаются. Один из них — когда работать нужно не по HTTP, а с расширением HTTP. Например, с дополнительными методами. Таких случаев на самом деле гораздо больше, чем может показаться. Более того, часть таких протоколов является стандартами:

  • Webdav — расширение для доступа к ресурсам. Помимо стандартных методов, HTTP требует поддержки дополнительных методов типа LOCK, PROPPATCH и т. д.
  • Caldav — расширение Webdav для работы с событиями календарного типа. Данный протокол с большой долей вероятности есть в приложениях на вашем смартфоне: для синхронизации календарей, встреч и т. д.

И этим список не исчерпывается. Если вы заглянете в реестр HTTP-методов, то увидите, что HTTP-методов, лишь описанных стандартами RFC, на данный момент 39. А сколько ещё случаев, когда имеется самописный протокол поверх HTTP. Так что поддержка нестандартных HTTP-методов довольно распространена. Также часто бывает, что фреймворк, который вы используете, не поддерживает такие методы. Вот дискуссия на Stack Overflow для ExpressJS. А вот pull request на гитхабе для Tornado. Ну и поскольку Micronaut часто позиционируется как легковесная альтернатива Spring — то вот та же проблема для Spring.
Читать дальше →

«Менеджеру нужно продолжать кодить»: интервью со Стивеном Чином

Время на прочтение12 мин
Количество просмотров5.4K


Многие Java-разработчики знают Стивена Чина. Кто-то видел его трансляции с Java-мероприятий, кто-то — его интервью с другими известными джавистами, а кто-то — доклады про Java на Raspberry Pi. Да что уж там, в Твиттере он @steveonjava — то есть даже юзернеймом показывает, насколько его жизнь посвящена этому языку.

До недавних пор он работал в Oracle, а теперь перешёл в компанию JFrog. Это может звучать неожиданно: уйти из Oracle, когда твоя жизнь — это Java? Но второе название российским джавистам тоже хорошо знакомо, во многом благодаря работающему там Баруху jbaruch Садогурскому.

Скоро российские разработчики смогут увидеть лично и Стивена, и Баруха на конференции Joker, а пока что Стивен рассказал нам о самых разных вещах, например, таких:

  • Чем именно он занимается теперь;
  • Как разработчику правильнее становиться менеджером;
  • Насколько большим можно сделать кластер из Raspberry Pi (и зачем);
  • Жива ли JavaFX;
  • Чем Java-активисту полезен мотоцикл.
Читать дальше →

Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 3. Kafka

Время на прочтение20 мин
Количество просмотров115K
Продолжение перевода небольшой книги:
«Understanding Message Brokers»,
автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

Предыдущая часть: Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 2. ActiveMQ
Читать дальше →

Вышел окончательный релиз Jakarta EE 8

Время на прочтение2 мин
Количество просмотров6.9K
The Eclipse Foundation выпустила новые спецификации Jakarta EE 8 platform & web-profile.
Они также представили сервер приложений Jakarta EE и набор тестов(TCK) для проверки других совместимых реализаций.


10 сентября 2019 года была выпущена Jakarta EE 8.
Читать дальше →

Как полиморфизм реализован внутри JVM

Время на прочтение6 мин
Количество просмотров17K
Перевод данной статьи подготовлен специально для студентов курса «Разработчик Java».





В моей предыдущей статье Everything About Method Overloading vs Method Overriding (“Все о перегрузке и переопределении методов”) были рассмотрены правила и различия перегрузки и переопределения методов. В этой статье мы посмотрим, как обрабатывается перегрузка и переопределение методов внутри JVM.
Читать дальше →

Dagger 2 – это элементарно (Часть 2)

Время на прочтение4 мин
Количество просмотров18K
Предыдущая часть

Содержание

  1. Внедрение методов и полей
  2. Отложенная инициализация в dagger
  3. Модули dagger. Когда dagger вас не понимает
  4. Аннотация Named. Несколько экземпляра одного типа

Внедрение методов и полей
Читать дальше →

Приглашаем на DINS Java EVENING 18 сентября

Время на прочтение3 мин
Количество просмотров982
Приглашаем всех интересующихся java-разработкой на очередной открытый DINS Java EVENING, который пройдет в нашем офисе на Старо-Петергофском, 19.

Этим вечером Денис Репп из Wrike расскажет, как организовать работу с техническим долгом в критически важных частях продукта. Андрей Маркелов из Infobip покажет на конкретных примерах, как организовать анализ времени отклика Java-сервисов.

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


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

Dagger 2 – это элементарно (Часть 1)

Время на прочтение3 мин
Количество просмотров60K
Содержание

  1. Введение
  2. Что такое Dependency Injection, Пример зависимости
  3. Dagger 2 – введение
  4. Первое использование Dagger 2

Введение


Статья написана не продвинутым программистом для таких же, обычными и понятными словами
В статье используется пример кода на Kotlin. Версия dagger 2.17. Пример можно скачать в конце статьи.
Читать дальше →

[Екатеринбург, анонс] java.ural.Meetup @3 — анонс третьего Java-митапа + видео докладов с java.ural.Meetup @2

Время на прочтение3 мин
Количество просмотров1.5K
Приглашаем 21 сентября в субботу принять участие в третьей встрече java.ural.Meetup. Встреча пройдёт в конференц-зале в офисе Контура по адресу ул. Малопрудная, 5. Начало в 11:30.

Расписание:

11:30 — 12:00 Регистрация и кофе
12:00 — 14:30 Три доклада
14:30 — 15:00 Перерыв (для желающих — экскурсия по офису)
15:00 — 16:30 Мастер-класс

Под катом информация по докладам и МК. + бонус: материалы со второй встречи.
Читать дальше →

Выбор между XML и SQL для накатывания скриптов LiquiBase на примере Java/Spring/H2

Время на прочтение6 мин
Количество просмотров17K
В процессе работы над очередным проектом в команде возникли споры по поводу использования формата XML или SQL в Liquibase. Естественно про Liquibase уже написано много статей, но как всегда хочется добавить свои наблюдения. В статье будет представлен маленький туториал по созданию простенького приложения с бд и рассмотрим разницу метаинформации по данным типам.

Liquibase — это независимая от базы данных библиотека для отслеживания, управления и применения изменений схем базы данных. Для того, чтобы внести изменения в БД, создается файл миграции (*changeset*), который подключается в главный файл (*changeLog*), который контролирует версии и управляет всеми изменениями. В качестве описания структуры и изменений базы данных используется XML, YAML, JSON и SQL форматы.

Основная концепция миграций БД, выглядит следующим образом:


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

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

История второго места в Mini AI Cup 4: Paper IO

Время на прочтение7 мин
Количество просмотров7.5K

Меня зовут Волков Игорь. Я работаю в консалтинговой компании на позициях Java разработчика, архитектора, руководителя команды, технического менеджера. Разные роли в зависимости от текущих потребностей проекта. Обратил внимание на конкурсы от mail.ru давно, но активно поучаствовать получилось только на Paper IO.


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


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

Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 1

Время на прочтение7 мин
Количество просмотров113K
Всем привет!

Начал перевод небольшой книги:
"Understanding Message Brokers",
автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

Из введения к книге:
"… Эта книга научит вас рассуждать о системах обмена сообщениями на брокерах, сравнивая и противопоставляя две популярные технологии брокеров: Apache ActiveMQ и Apache Kafka. Здесь будут изложены примеры использования и стимулы разработки, которые привели к тому, что их разработчики использовали совершенно разные подходы к одной и той же области — обмену сообщениями между системами с промежуточным брокером. Мы рассмотрим эти технологии с нуля и выделим влияние различных вариантов дизайна на этом пути. Вы получите глубокое понимание обоих продуктов, понимание того, как их следует и не следует использовать, и понимание того, на что следует обращать внимание при рассмотрении других технологий обмена сообщениями в будущем ..."

Переведенные к настоящему моменту части:
Глава 1. Введение
Глава 2. ActiveMQ
Глава 3. Kafka

Перевод выполнен: t.me/middle_java

Буду выкладывать законченные главы по мере перевода.
Читать дальше →

Виды компиляции в JVM: сеанс черной магии с разоблачением

Время на прочтение11 мин
Количество просмотров19K
Всем привет!

Сегодня вашему вниманию предлагается перевод статьи, в котором на примерах разобраны варианты компиляции в JVM. Особое внимание уделено AOT-компиляции, поддерживаемой в Java 9 и выше.

Приятного чтения!
Читать дальше →

Пять причин пойти на JUG.EKB

Время на прочтение2 мин
Количество просмотров1.5K
Прошел год, как на Хабре вышла статья, что такое JUG.EKB. За это время сообщество выросло, но мы по-прежнему храним тёплые традиции, где главной целью является объединение Java-разработчиков. Поэтому с радостью сообщаем, что JUG.EKB уже на носу и пройдет 12 сентября.

Ниже приведем пять причин, почему стоит посетить это мероприятие :)

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

Spring Cache: от подключения кэширования за 1 минуту до гибкой настройки кэш-менеджера

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



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

Автоматизируем профилирование Java meetup 10/09

Время на прочтение1 мин
Количество просмотров2.2K
Приглашаем 10 сентября на открытый митап Автоматизируем профилирование Java, который пройдет на площадке Райффайзенбанка в Нагатино.

Вместе будем разбираться, как тестировать и оптимизировать производительность микросервисов, а еще узнаем, как достать себя из рутины проверки профайлеров для JVM.


Как я научил Яндекс.Алису говорить о секс-игрушках

Время на прочтение5 мин
Количество просмотров15K
Интегрируем Яндекс.Алису и интим магазины через Spring boot.

Тема голосовых ассистентов набирает обороты, и я решили присоединиться к этому тренду, интегрировав самого крупного оптового поставщика интим-товаров и Яндекс.Алису.
Читать дальше →

Вклад авторов