miniJUG
1.46K subscribers
1 photo
127 links
Новости Java: https://www.youtube.com/@mini_jug
Также подписывайтесь на второй канал: @microJUG
Буст: https://t.me/miniJUG?boost
Twitter: https://twitter.com/mini_JUG
Сайт: https://minijug.org
Feed: https://minijug.org/feed.xml
Чат: https://t.me/mini_JUG
Download Telegram
Вышла Java 11.

Только что официально вышла новая, одиннадцатая версия Java. Скачать образы JDK можно либо в виде Oracle JDK под коммерческой лицензией, либо как OpenJDK с лицензией GPLv2. Различия между ними заключаются в том, что бесплатную версию Oracle JDK 11 можно легально использовать только для разработки, а OpenJDK можно использовать и в производственном целях...

Подробнее: https://telegra.ph/Java-11-is-out-09-25
Какую версию Java используете в своём главном проекте?
Anonymous Poll
1%
Java 5
0%
Java 6
6%
Java 7
75%
Java 8
1%
Java 9
0%
Java 10
13%
Java 11
4%
Другое
Вышла Java 12.

Вышла новая, двенадцатая версия платформы Java. Как и в случае с Java 11, на сайте Oracle доступен для скачки только JDK и только для некоммерческого использования. Также доступны для скачки архивы OpenJDK, которые можно использовать в коммерческих целях...

Подробнее: https://telegra.ph/Vyshla-Java-12-03-19
В Java у NullPointerException могут появиться детальные сообщения.

Вышел новый черновик JEP, в котором предлагается улучшить java.lang.NullPointerException, снабдив его сообщением, объясняющим причину выброса исключения. В этом сообщении будет содержаться информация о том, что именно было null и какое действие вызвало ошибку.

Например, если в выражении a.b.c.d поле b было null, то сообщение будет примерно следующим: 'a.b' is null. Can not read field 'c'...

Подробнее: https://telegra.ph/NPE-detailed-messages-03-26
Oracle прекращает поддержку Java.

Компания Oracle решила отказаться от дальнейшего развития языка Java и перейти на Kotlin. С таким заявлением сегодня выступил главный архитектор платформы Java Марк Рейнолд. Как сказал Рейнолд, языку Java более 20 лет и в нём есть фундаментальные изъяны, которые невозможно исправить, не нарушив обратную совместимость. «Изъяны языка не должны препятствовать развитию всей платформы, поэтому мы решили отказаться от Java в пользу более современного языка, который был создан намного позже и учёл многие ошибки Java». При этом виртуальная машина HotSpot никуда не исчезнет и будет продолжать разрабатываться дальше, поскольку она не зависит от исходного языка и работает с байт-кодом...

Подробнее: https://telegra.ph/Java-is-dead-04-01
В Java появятся записи и запечатанные типы.

В багтрекере OpenJDK появился новый черновик JEP, в котором специфицируются новые языковые конструкции Java: записи и запечатанные типы. Идея их введения была предложена полтора года назад и была описана в исследовательском документе. Наконец, после долгих дискуссий и экспериментов она достигла достаточного уровня зрелости для того, чтобы с большой уверенностью сказать, что она будет реализована в одной из будущих версий Java...

Подробнее: https://telegra.ph/Records-and-Sealed-Types-04-23
В Java появятся блоки текста.

Стало известно, что блоки текста запланированы к появлению в Java 13. Блоки текста – это многострочные литералы, в которых нет необходимости экранировать большинство специальных символов и которые форматируются предсказуемым образом. Ранее попытка введения многострочных литералов уже предпринималась в форме так называемых сырых многострочных литералов, но JEP был отвергнут в связи с большим количеством потенциальных проблем, которые может принести такой подход. Блоки же текста – это совершенно новая спецификация, лишённая большинства недостатков предыдущего подхода...

Подробнее: https://telegra.ph/Text-Blocks-05-30
В switch-выражениях break будет заменён на yield.

Улучшенный оператор switch, который появился в Java 12 в статусе Preview, будет слегка изменён в Java 13 и будет продолжать оставаться в статусе Preview. Единственным изменением будет замена оператора break, служащего для возврата значения из блока, на yield...

Подробнее: https://telegra.ph/yield-in-switch-06-01
Вышла Scala 2.13.

Спустя два с половиной года после выхода Scala 2.12 вышла новая версия языка 2.13. В эту версию вошло более 1500 пулл-реквестов, а контрибьюторами стали 162 человека. Список изменений и нововведений довольно внушающий. Целью многих из них стало упрощение языка и стандартной библиотеки. Перечислим некоторые из них...

Подробнее: https://telegra.ph/Scala-213-06-11
В Java может появиться новая сериализация.

На сайте OpenJDK появился новый исследовательский документ, в котором описывается идея введения в язык новой улучшенной сериализации взамен старой.

Сериализация в Java существует с версии 1.1, то есть практически с момента её рождения. С одной стороны, сериализация является очень удобным механизмом, который позволяет быстро и просто сделать любой класс сериализуемым посредством наследования этого класса от интерфейса java.io.Serializable. Возможно даже, эта простота стала одной из ключевых причин, почему Java набрала такую огромную популярность в мире, ведь она позволила быстро и эффективно писать сетевые приложения...

Подробнее: https://telegra.ph/Towards-Better-Serialization-06-12
В Java появятся две новые экранирующие последовательности для продолжения строки и пробела.

Вышел новый черновик JEP, в котором предлагается ввести в язык Java две новые экранирующие последовательности: \<line-terminator> и \s.

Первая последовательность позволит писать длинные однострочные литералы без использования конкатенации. Например, вместо...

Подробнее: https://telegra.ph/Escape-Sequences-For-Line-Continuation-and-White-Space-08-15
Вышла Java 13

Прошли очередные 6 месяцев, и в строгом соответствии с расписанием вышла новая, 13-я версия платформы Java. Как обычно, доступны для скачивания сборки Oracle JDK и OpenJDK.

Исчерпывающий список изменений, который можно посмотреть на сайте Алексея Шипилёва, содержит более 2 тысяч закрытых задач...

Подробнее: https://telegra.ph/Java-13-is-out-09-18
Пробуем улучшенный оператор instanceof в Java 14

Не за горами новая, 14-я версия Java, а значит самое время посмотреть, какие новые синтаксические возможности будет содержать эта версия Java. Одной из таких синтаксических возможностей является паттерн-матчинг по типу, который будет осуществляться посредством улучшенного (расширенного) оператора instanceof.

Сегодня я хотел бы поиграться с этим новым оператором и рассмотреть особенности его работы более детально. Так как паттерн-матчинг по типу ещё не вошёл в главный репозиторий JDK, мне пришлось скачать репозиторий проекта Amber, в котором ведётся разработка новых синтаксических конструкций Java, и собрать JDK из этого репозитория.

Подробнее: https://habr.com/ru/post/477654/
Друзья, хорошие новости! Илон Маск согласился сделать специальную версию Tesla Cybetruck для нашего сообщества! Как вам? :)
Плагинное приложение на Java без боли

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

• Нам не понадобятся специальные библиотеки или фреймворки (OSGi, Guice и т.п.)
• Мы не будем использовать парсинг байткода с помощью ASM и подобных библиотек.
• Не будем писать свой загрузчик классов.
• Не будем использовать рефлексию и аннотации.
• Не понадобится возня с classpath для поиска плагинов. Мы вообще не будем трогать classpath.
• Также мы не будем использовать XML, YAML или какие-либо другие декларативные языки для описания точек расширений (extension point’ов в плагинах).

Однако всё же есть одно требование — такое решение будет работать только на Java 9 или выше. Потому что оно будет основано на модулях и сервисах.

Читать далее: https://habr.com/ru/post/479478/
Исследуем записи в Java 14

В прошлый раз мы тестировали улучшенный оператор instanceof, который появится в грядущей, 14-й версии Java (выйдет в марте 2020). Сегодня я хотел бы исследовать в деталях вторую синтаксическую возможность, которая также появится в Java 14: записи (records).

У записей есть свой JEP, однако он не сильно блещет подробностями, поэтому многое придётся пробовать и проверять самим. Да, можно конечно, открыть спецификацию Java SE, но, мне кажется, гораздо интереснее самим начать писать код и смотреть на поведение компилятора в тех или иных ситуациях. Так что заваривайте чаёк и располагайтесь поудобнее. Поехали: https://habr.com/ru/post/482300/
У miniJUG появился сайт

Друзья, хорошие новости! Теперь у miniJUG появился свой веб-сайт minijug.ru, куда были старательно перенесены все публикации с telegra.ph и Хабра с момента создания нашего Телеграм-канала. Таким образом, весь контент за два с лишним года года теперь присутствует на сайте для вашего удобства. Если вдруг вы хотите перечитать какую-то статью или новость, то можете легко её найти с помощью карты сайта.

Подробнее: https://minijug.ru/introducing_minijug_website.html

(К сожалению, Instant View для ссылок на сайт пока что ещё недоступен, несмотря на, что я отправил шаблон почти неделю назад. Видимо, команда Telegram сейчас занята другими делами, и шаблон некому одобрить. Поэтому пока что я буду использовать обходной путь в виде второй ссылки, которая зашита в двоеточии)
В Java появятся скрытые классы

На сайте OpenJDK появился новый JEP 371, в котором предлагается ввести в язык специальный тип классов, называемых скрытыми. Скрытые классы будут стандартной заменой существующего метода sun.misc.Unsafe.defineAnonymousClass(), который станет deprecated for removal. Скрытый класс – это класс, который обладает следующими характеристиками:

• Скрытый класс создаётся во время выполнения с помощью нового метода Lookup.defineHiddenClass().
• На такой класс не могут прямо ссылаться другие классы. Всё его использование может осуществляться исключительно через рефлексию.
• Такой класс является необнаружимым: его нельзя найти ни по имени, ни обнаружить с помощью загрузчиков классов (через Class.forName(), ClassLoader.loadClass(), ClassLoader.findLoadedClass() и т.д.)
• Имя скрытого класса получается конкатенацией его имени в байт-коде, символа '/' и суффикса, который зависит от реализации JVM. Например, com.example.Foo/1234.
• Методы скрытых классов не появляются в стек-трейсах, если не включить опции -XX:+UnlockDiagnosticVMOptions и -XX:+ShowHiddenFrames.

Подробнее: https://minijug.ru/hidden_classes.html
Подписывайтесь на второй канал @microJUG

Друзья, я долго думал над тем, стоит ли в этот канал постить мелкие заметки и интересные ссылки, выражать в свободной форме свои мысли по поводу тех или иных событий, происходящих с Java. В итоге я решил, что нет, всё-таки не буду. Пусть формат этого канала остаётся как есть: здесь будут только новости и статьи, написанные мной. А для всякой отсебятины и мелочи я решил завести отдельный канал.

Встречайте: https://t.me/microJUG.

Контент в этих двух каналах никак не будет пересекаться. Вы можете подписаться на оба канала, можете остаться подписанным только на miniJUG, а можете подписаться только на microJUG. Вам решать.
API, ради которых наконец-то стоит обновиться с Java 8. Часть 1

На сегодняшний день Java 8 является самой популярной версией Java и ещё довольно долго будет ей оставаться. Однако с тех пор уже выпущено пять новых версий Java (9, 10, 11, 12, 13), и совсем скоро выйдет ещё одна, Java 14. В этих новых версиях появилось гигантское количество новых возможностей. Например, если считать в JEP'ах, то в сумме их было реализовано 141:

• 99 в JDK 9
• 12 в JDK 10
• 17 в JDK 11
• 8 в JDK 12
• 5 в JDK 13
• (+14 в JDK 14)

Однако в этом цикле статей не будет никакого сухого перечисления JEP'ов. Вместо этого я хочу просто рассказать об интересных API, которые появились в новых версиях. Каждая статья будет содержать по 10 API. В выборе и порядке этих API не будет какой-то определённой логики и закономерности. Это будет просто 10 случайных API, не ТОП 10 и без сортировки от наиболее важного API к наименее важному. Давайте начнём: https://habr.com/ru/post/485750/
API, ради которых наконец-то стоит обновиться с Java 8. Часть 2

Продолжаем рассказ про API, которые появились в новых версиях Java.

1. Files.mismatch()
Появился в: Java 12
На практике довольно часто возникает необходимость проверить, являются ли два файла в точности одинаковыми или нет. С помощью метода Files.mismatch(), появившегося в Java 12, это наконец-то можно сделать. Этот метод возвращает позицию первого несовпадающего байта в двух файлах или -1, если файлы идентичны.

Это может быть полезно, например, когда синхронизируешь содержимое двух директорий. Чтобы не перезаписывать файл при копировании тем же самым содержимым и лишний раз не нагружать диск, можно сначала проверить, идентичны файлы или нет: https://habr.com/ru/post/487636/