Рубрика «java11»

Вышла общедоступная версия Java 17. В этот релиз попало более 2700 закрытых задач и 14 JEP'ов. Изменения API можно посмотреть по этой ссылке.

Читать полностью »

Какие есть причины переходить на новые версии Java? Кто-то это сделает из-за новых языковых возможностей вроде выражений switch, блоков текста или записей. Кому-то понадобятся новые интересные возможности вроде модулей или низкопаузных сборщиков мусора. Кто-то это сделает просто из-за того, что обновив версию Java, их программа станет быстрее и будет есть меньше памяти. Но есть ещё одна, не менее важная причина. Это новые API, которые позволят писать меньше кода и избежать траты времени на поиск нужной функциональности во внешних библиотеках. А в некоторых случаях сделают ваш код быстрее.

В предыдущих двух частях мы уже рассмотрели по 10 новых API, которые появились в Java 9 и более поздних версиях (часть 1, часть 2). Сегодня мы рассмотрим ещё 10.

Читать полностью »

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

1. Files.mismatch()

Появился в: Java 12

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

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

public static void syncDirs(Path srcDir, Path dstDir)
        throws IOException {
    // Для простоты демонстрации считаем, что поддиректорий нет
    List<Path> srcFiles = Files.list(srcDir).collect(toList());
    for (Path src : srcFiles) {
        Path dst = dstDir.resolve(src.getFileName());
        if (!Files.exists(dst)) {
            System.out.println("Copying file " + dst);
            Files.copy(src, dst);
        } else if (Files.mismatch(src, dst) >= 0) {
            System.out.println("Overwriting file " + dst);
            Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
        }
    }
}

Читать полностью »

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

Однако в этом цикле статей не будет никакого сухого перечисления JEP'ов. Вместо этого я хочу просто рассказать об интересных API, которые появились в новых версиях. Каждая статья будет содержать по 10 API. В выборе и порядке этих API не будет какой-то определённой логики и закономерности. Это будет просто 10 случайных API, не ТОП 10 и без сортировки от наиболее важного API к наименее важному. Давайте начнём.

Читать полностью »

Java REPL вам не ScriptEngine - 1

Привет! Меня зовут Дима, я разработчик в команде “Архитектура” в hh.ru. Среди прочего, я занимаюсь тем, что делаю разработку проще для коллег. Выполнение кода в продакшене является типовой задачей. Поэтому когда я услышал, что с этим есть проблемы, я решил заняться их устранением.

Не всегда изменения данных можно сделать простым UPDATE/INSERT — иногда нужно задействовать валидацию, шины событий и прочее. В таких случаях самым оптимальным решением является выполнение произвольного кода прямо в приложении. У нас Java, поэтому когда появился JEP-222, я сразу подумал, что JShell, возможно, сможет снова сделать написание скриптов удобным. Чуда не произошло, а потому под катом вы найдете не очень глубокое сравнение самых известных интерпретаторов Java (и «около-Java») для jvm с примерами. Всех интересующихся приглашаю под кат.
Читать полностью »

Вчера на Хабре был опубликован перевод поста «Не попадитесь в ловушку используя Oracle JDK 11» с последующим обсуждением «платности Java», но не всё так страшно, как кажется на первый взгляд — ниже перевод публикации из блога Oracle с официальной позицией по лицензированию и распространению версий JDK 11+.

Резюме

Начиная с Java 11, Oracle будет выпускать JDK под лицензией GNU General Public License v2, with the Classpath Exception (GPLv2+CPE) и под коммерческой лицензией для тех, кто использует Oracle JDK как часть продуктов или сервисов Oracle, или кто не хочет использовать открытое программное обеспечение. Эта комбинация из OS-лицензии и коммерческой заменяет старую лицензию BCL (Oracle Binary Code License), которая состоит из коммерческих и бесплатных условий использования.

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

Всем привет! С момента выхода Java 11 прошли сутки, и вот уже наконец стали появляться первые обзоры релиза. Я же посвящу свою небольшую статью незаметному для официальных релизов и потому обделённому вниманием обновлению класса String, тем более, что оно не упоминается в официальной документации 11-й Java (я, во всяком случае, там информации об этом не нашёл).
Java 11: новое в String - 1
Действительно, если мы заглянем в класс String, то среди множества знакомых нам методов мы найдём несколько, помеченных как "@since 11". И да, официально в Java они появились только вчера.
Читать полностью »

Товарищи по оружию, Java-бойцы ! Этот день мы приближали как могли.

Сегодня стала доступна релизная версия JDK 11 — референсная реализация Java 11, и первая LTS-версии Java, выпущенная по быстрому 6-месячному релизному циклу. Самый большой и важный релиз новейшего времени, который даст толчок всему Java-сообществу переходить на самые новые и продвинутые технологии.

Java 11 - JDK 11: General Availability - 1

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js