Обновить
128K+

Java *

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

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

Kaspresso: фреймворк для автотестирования, который вы ждали

Время на прочтение7 мин
Охват и читатели37K
Все, кто занимался или занимается автотестами под Android, знают, какая это боль.
От объема задач и проблем устаешь так, что и отпуск не помогает. Люди даже увольняются из-за автотестов.

Боль, страдания и мучения неизбежно приводят к появлению чего-то нового и прекрасного. Мы постарались собрать вместе все грабли, на которые нам пришлось наступить, объединили свои усилия с ребятами из «Авито» и HH и создали то, что сделает ваши отношения с автотестами несравнимо лучше и плодотворнее.

Встречайте: Kaspresso — фреймворк для автотестирования, который вы ждали!


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

Эволюция создания веб-приложений на Java

Время на прочтение18 мин
Охват и читатели31K
История развития построения веб-приложений на языке программирования Java с примерами их использования на временном промежутке от появления спецификации сервлетов до сегодняшнего дня.


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

Как я создавал «WildMAN» — пародию на множество 8-битных игр и недавно ее портировал на Android

Время на прочтение3 мин
Охват и читатели7.9K
Я думаю каждого фаната приставочных игр интересовала тема создания игр и была мечта создать свою игру, в студенческие годы я увлёкся программированием.

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

Безопасность в AEM – это вопрос платформы или способа внедрения?

Время на прочтение6 мин
Охват и читатели3.8K
Автор: Андрей Пинчук | Certified Senior AEM Developer

Представьте ситуацию: вы спокойно спите и видите свой третий сон, как вдруг раздается телефонный звонок — недовольный клиент жалуется, что вся система недоступна. Согласитесь, подобные события — дискомфорт для жизни AEM-разработчика, всей команды и провайдера решения. Ничего не попишешь, ранний подъем и поиск решения впереди.


Чтобы в вашей профессиональной жизни не встречалось таких нерадостных моментов, расскажу о типичных проблемах безопасности и как от них лучше застраховаться.


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

Внутренности JVM, Часть 1 — Загрузчик классов

Время на прочтение5 мин
Охват и читатели55K
Перевод статьи подготовлен специально для студентов курса «Разработчик Java».




В этой серии статей я расскажу о том, как работает Java Virtual Machine. Сегодня мы рассмотрим механизм загрузки классов в JVM.
Читать дальше →

Камбеки, топ-10 докладов JPoint 2019

Время на прочтение5 мин
Охват и читатели7.7K
Открывающий кейноут JPoint 2019

Взгляды камрадов обращены в будущее. Новая, с пылу с жару версия джавы — Java/JDK 13, о которой недавно писал olegchir в хабрапосте, манит смотреть в завтрашний день. Коварно верну в прошлое — не такое далёкое, как хотелось бы, но достаточно ламповое, чтобы потратить десяток часов.

Дело в том, что коллеги сделали публичными видеозаписи докладов JPoint 2019. Под катом топ-10 докладов по версии участников конференции, а я честно расскажу: почему эти доклады стоит посмотреть в записи.

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

Время на прочтение5 мин
Охват и читатели65K
Перевод статьи подготовлен специально для студентов курса «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 мин
Охват и читатели14K
Привет! Из заголовка вы уже поняли, о чём я собираюсь рассказать. Тут будет много хардкора:
мы обсудим Java, С, С++, ассемблер, немного Linux, немного ядра операционной системы. А ещё разберём практический кейс, поэтому статья будет в трёх больших частях (достаточно объёмных).



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

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

Время на прочтение6 мин
Охват и читатели4.6K
Всем привет, меня зовут Дмитрий, и сегодня я расскажу о том, как производственная необходимость заставила меня стать контрибутором для фреймворка 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 мин
Охват и читатели142K
Продолжение перевода небольшой книги:
«Understanding Message Brokers»,
автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

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

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

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


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

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

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

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





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

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

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

Содержание

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

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

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

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

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

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


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

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

Время на прочтение3 мин
Охват и читатели65K
Содержание

  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.6K
Приглашаем 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 мин
Охват и читатели21K
В процессе работы над очередным проектом в команде возникли споры по поводу использования формата XML или SQL в Liquibase. Естественно про Liquibase уже написано много статей, но как всегда хочется добавить свои наблюдения. В статье будет представлен маленький туториал по созданию простенького приложения с бд и рассмотрим разницу метаинформации по данным типам.

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

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


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

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

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

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


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


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