Wara sitt xhur ta 'żvilupp, Oracle meħlusa pjattaforma JavaSE 14 (Java Platform, Standard Edition 14), il-proġett OpenJDK open-source jintuża bħala implimentazzjoni ta 'referenza. Java SE 14 iżomm kompatibilità b'lura ma 'rilaxxi preċedenti tal-pjattaforma Java kollha tal-proġetti Java miktuba qabel se jaħdmu mingħajr bidliet meta jiġu mnedija taħt il-verżjoni l-ġdida; Java SE 14 builds lesti biex jiġu installati (JDK, JRE u Server JRE) ippreparat għal Linux (x86_64), Windows u macOS. Implimentazzjoni ta' referenza żviluppata mill-proġett OpenJDK Java 14 huwa sors kompletament miftuħ taħt il-liċenzja GPLv2, b'eċċezzjonijiet GNU ClassPath li jippermettu konnessjoni dinamika ma' prodotti kummerċjali.
Java SE 14 huwa kklassifikat bħala rilaxx ta 'appoġġ ġenerali u se jkompli jirċievi aġġornamenti sal-rilaxx li jmiss. Il-fergħa tal-Appoġġ fit-Tul (LTS) għandha tkun Java SE 11, li se tkompli tirċievi aġġornamenti sal-2026. Il-fergħa LTS preċedenti ta' Java 8 se tkun appoġġjata sa Diċembru 2020. Ir-rilaxx LTS li jmiss huwa skedat għal Settembru 2021. Ejjew infakkarkom li b'bidu bir-rilaxx ta 'Java 10, il-proġett qaleb għal proċess ta' żvilupp ġdid, li jimplika ċiklu iqsar għall-formazzjoni ta 'rilaxxi ġodda. Funzjonalità ġdida issa hija żviluppata f'fergħa prinċipali waħda aġġornata kontinwament, li tinkludi bidliet lesti u li minnha fergħat huma ramifikati kull sitt xhur biex jistabbilizzaw rilaxxi ġodda.
Добавлена экспериментальная поддержка tqabbil tal-mudell fl-operatur "instanceof", li jippermettilek tiddefinixxi immedjatament varjabbli lokali biex taċċessa l-valur iċċekkjat. Pereżempju, tista’ tikteb immedjatament “jekk (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” mingħajr ma tiddefinixxi espliċitament “String s = (String) obj”.
Kien:
if (obj instanceof Group) {
Grupp grupp = (Grupp) obj;
var entries = group.getEntries ();
}
Issa tista' tgħaddi mingħajr id-definizzjoni "Grupp tal-grupp = (Grupp) obj":
if (obj instanceof Group group) {
var entries = group.getEntries ();
}
Добавлена экспериментальная поддержка нового ключевого слова «rekord", li tipprovdi forma kompatta għad-definizzjoni tal-klassijiet, li tippermettilek tevita li tiddefinixxi b'mod espliċitu diversi metodi ta' livell baxx bħal equals(), hashCode() u toString() f'każijiet fejn id-dejta tinħażen biss f'oqsma li l-imġieba tagħhom ma tinbidilx. Meta klassi tuża implimentazzjonijiet standard tal-metodi equals(), hashCode() u toString(), tista’ tgħaddi mingħajr id-definizzjoni espliċita tagħhom:
rekord pubbliku BankTransaction (data LocalDate,
ammont doppju
Deskrizzjoni tal-istring) {}
Din id-dikjarazzjoni se żżid awtomatikament implimentazzjonijiet tal-metodi equals(), hashCode() u toString() minbarra l-metodi tal-kostruttur u getter.
Стандартизирована и включена по умолчанию поддержка новой формы выражений «switch», не требующей указания оператора «break», позволяющей объединять повторяющиеся метки и допускающей использование не только в форме оператора, но и как выражения.
var log = switch (event) {
case PLAY -> «User has triggered the play button»;
case STOP, PAUSE -> «User needs a break»;
default -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield «Unknown event » + message +
» logged on » + now;
}
};
Расширена экспериментальная поддержка blokki tat-test — новой формы строковых литералов, позволяющих включать в исходный код многострочные текстовые данные без применения в них экранирования символов и сохраняя исходное форматирования текста в блоке. Обрамление блока осуществляется тремя двойными кавычками. В Java 14 в текстовых блоках реализована поддержка escape-последовательности «\s» для определения одного пробела и «\» для объединения со следующей строкой (игнорирования перевода строки, когда нужно вывести очень длинную строку). Например, вместо кода
Расширена информативность диагностики при возникновении исключений NullPointerException. Если раньше сообщение об ошибке лишь ссылалось на номер строки, то теперь в нём детализируется какой из методов вызвал исключение. Расширенная диагностика пока включается только при запуске с флагом «-XX:+ShowCodeDetailsInExceptionMessages». Например, при указании данного флага исключение в строке
var name = user.getLocation().getCity().getName();
приведёт к выводу сообщения
Exception in thread «main» java.lang.NullPointerException: Cannot invoke «Location.getCity()»
because the return value of «User.getLocation()» is null
at NullPointerExample.main(NullPointerExample.java:5):5)
которое позволяет понять, что метод Location.getCity() не был вызван, а User.getLocation() вернул значение null.
Implimentati предварительный вариант утилиты jpackage, позволяющей создавать пакеты для самодостаточных (self-contained) Java-приложений. Утилита базируется на javapackager из JavaFX и позволяет формировать пакеты в форматах, родных для различных платформ (msi и exe для Windows, pkg и dmg для macOS, deb и rpm для Linux). Пакеты включают все необходимые зависимости.
В сборщик мусора G1 miżjud новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру IN. Новый распределитель памяти включается при помощи флага «+XX:+UseNUMA» и позволяет существенно поднять производительность на NUMA-системах.
Miżjud API для отслеживания на лету событий JFR (JDK Flight Recorder), например для организации непрерывного мониторинга.
Miżjud модуль jdk.nio.mapmode, предлагающий новые режимы (READ_ONLY_SYNC, WRITE_ONLY_SYNC) для создания отображаемых байтовых буферов (MappedByteBuffer), ссылающихся на энергонезависимую память (NVM).
Implimentati предварительный вариант API Foreign-Memory Access, позволяющий Java-приложениям безопасно и эффективно получить доступ к областям памяти, вне кучи Java, манипулируя новыми абстракциями MemorySegment, MemoryAddress и MemoryLayout.
Объявлены устаревшими порты для ОС Solaris и процессоров SPARC (Solaris/SPARC, Solaris/x64 и Linux/SPARC) c намерением удалить данные порты в будущем. Перевод указанных портов в разряд устаревших позволит сообществу ускорить разработку новых возможностей OpenJDK, не тратя время на поддержание особенностей, специфичных для Solaris и SPARC.
Imħassar сборщик мусора CMS (Concurrent Mark Sweep), который два года назад был отмечен устаревшим и остался без сопровождения (на смену CMS давно пришёл сборщик мусора G1). Кроме того, ħabbar устаревшим применение комбинации алгоритмов сборки мусора ParallelScavenge и SerialOld (запуск с опциями «-XX:+UseParallelGC -XX:-UseParallelOldGC»).
Обеспечена экспериментальная поддержка сборщика мусора ZGC (Z Garbage Collector) на платформах macOS и Windows (ранее поддерживался только в Linux). ZGC работает в пассивном режиме, насколько это возможно минимизирует задержки из-за сборки мусора (время остановки при использовании ZGC не превышает 10 мс.) и может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт.
Imneħħija инструментарий и API для сжатия JAR-файлов с использованием алгоритма Pack200.