WildFly 13 «Чётрова дюжина» выпущен!

Перевод статьи Jason Greene

WildFly 13 Final сейчас доступен для загрузки http://wildfly.org/downloads

Возможность EE8 и новая модель выпуска релизов

Это второй релиз, который следует новой квартальной модели доставки релизов. Основная тема этого плана заключается в предоставлении функциональности EE8 в полностью завершённых небольших инкрементальных наборах изменений, в отличие от ожидания завершения полностью функционального релиза. WildFly 13, в целом, достигает этой цели полнотой фич EE8. WildFly 14 будет фокусироваться на получение сертификатов и использовании единственной модели выполнения EE8. Поскольку Java EE8 полностью обратно совместима, то деплой-пакеты EE7 будут функционировать так же, как и сейчас. Ниже представлен обзор изменений для модели выполнения EE8.
Продолжить чтение “WildFly 13 «Чётрова дюжина» выпущен!”

Merging или Rebasing?

Команда git rebase имеет репутацию магической команды Git, от которой начинающие должны держаться подальше, но в действительности она может сделать жизнь намного легче для команды разработчиков, когда используется с осторожностью. В этой статье, мы сравним git rebase с родственной командой git merge и определим все потенциальные возможности для использования перемещения (rebasing) в типичном рабочем процессе работы с Git.

Концептуальный обзор

Первую вещь, которую нужно понять о команде git rebase заключается в том, что она решает ту же самую проблему, что и git merge. Обе эти команды предназначены для внесения изменений из одной ветки в другую – правда они выполняют это абсолютно разными способами.
Продолжить чтение “Merging или Rebasing?”

Объяснение архитектуры JVM

Каждый разработчик Java знает, что байткод выполняется при помощи JRE (Java Runtime Environment). Но многие не знают того факта, что JRE это имплементация виртуальной машины Java (JVM), которая анализирует, интерпретирует и исполняет байткод. Для разработчика очень важно знать архитектуру виртуальной машины Java, т.к. это позволяет нам писать код беолее эффективно. В данной статье мы изучим глубины архитектуры JVM и различные компоненты виртуальной машины.

Что такое JVM?

Виртуальная машина — это программная имплементация реальной машины. При разработке Java использовалась концепция WORA (Write Once Run Anywere) – пиши однажды, запускай везде, которая используется в виртуальной машине. Компилятор компилирует файлы Java в файлы .class, затем данные файлы являются входом для виртуальной машины JVM, которая загружает и исполняет .class файл. Ниже вы можете видеть архитектуру виртуальной машины JVM.

Диаграмма архитектуры JVM

Продолжить чтение “Объяснение архитектуры JVM”

Выразительный код с Java Optionals

Каждый из нас, кто программировал на языках, которые позволяют ссылаться на null, знает, что произойдет, когда вы попытаетесь получить значение подобной переменной. Независимо от того, будет ли это segfault или появление NullPointerException, это всегда является ошибкой. Tony Hoare описал это поведение как ошибку на один миллиард долларов (https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare). Обычно проблема появляется тогда, когда функция возвращает ссылку на null клиенту, в то время как это совсем не ожидалось разработчиком клиента. Скажем, в коде подобном такому:

User user = userRepository.find("Alice");

Сообразительный программист сразу подумает о том, что должно произойти, когда мы не найдем пользователя с именем «Alice», однако в самой сигнатуре метода find() так ничего и не будет говорить, что подобное поведение возможно. Типичное решение в мире Java в прошлом заключалось бы в том, что метод выбрасывал бы проверяемое исключение, например UserNotFoundException, которое определённо бы говорило разработчику клиента, что подобное поведение возможно, однако никаким образом не улучшало бы выразительность кода. Отлов исключений в коде мешает его пониманию. Также следует заметить, что работа с проверяемыми исключениями больше не в почёте, и люди больше не стремятся писать код, который бы выбрасывал их.
Продолжить чтение “Выразительный код с Java Optionals”