Ina ua maeʻa le ono masina o atinaʻe, Oracle tatalaina tulaga JavaSE 14 (Java Platform, Standard Edition 14), o le open-source OpenJDK project o loʻo faʻaaogaina e fai ma faʻamatalaga faʻatinoga. Java SE 14 o loʻo faʻatumauina le fesoʻotaʻiga i tua ma faʻasalalauga muamua o le Java platform; o galuega uma Java na tusia muamua o le a galue e aunoa ma ni suiga pe a faʻatautaia i lalo o le lomiga fou. Sauni-e fa'apipi'i Java SE 14 fausia (JDK, JRE ma Server JRE) saunia mo Linux (x86_64), Windows ma macOS. Fa'atinoga fa'asino na fa'atupuina e le poloketi OpenJDK Java 14 o lo'o tatala atoatoa le puna i lalo ole laisene GPLv2, fa'atasi ai ma GNU ClassPath tuusaunoaga e mafai ai ona feso'ota'i malosi ma oloa fa'apisinisi.
Java SE 14 ua faʻavasegaina o se faʻasalalauga lagolago lautele ma o le a faʻaauau pea ona maua faʻamatalaga seia oʻo i le isi faʻasalalauga. Ole lala ole Long Term Support (LTS) e tatau ona Java SE 11, lea o le a faʻaauau pea ona maua faʻamatalaga seia oʻo i le 2026. O le lala LTS muamua o Java 8 o le a lagolagoina seia oʻo ia Tesema 2020. O le isi faʻasalalauga LTS ua faʻatulagaina mo Setema 2021. Sei matou faamanatu atu ia te oe e amata i le tatalaina o le Java 10, o le poloketi na suia i se faiga fou o le atinaʻe, e faʻaalia ai se taamilosaga puupuu mo le faʻavaeina o faʻasalalauga fou. O lo'o fa'atupuina nei galuega fou i se tasi o paranesi fa'afou fa'afou, lea e aofia ai suiga ua uma ona fai ma o lala e fa'aputuina i le ta'i ono masina e fa'amautu ai fa'asalalauga fou.
Добавлена экспериментальная поддержка fa'atusa fa'atusa i le "instanceof" operator, lea e mafai ai ona e vave faʻamalamalamaina se fesuiaiga i le lotoifale e maua ai le tau siaki. Mo se faʻataʻitaʻiga, e mafai ona e tusia vave "pe a (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" e aunoa ma le faʻamalamalamaina manino "String s = (String) obj".
Ole taimi nei e mafai ona e faia e aunoa ma le faʻamatalaga "Vaega Vaega = (Vaega) obj":
afai (obj instanceof Group group) {
var entries = group.getEntries();
}
Добавлена экспериментальная поддержка нового ключевого слова «faamaumauga", lea e maua ai se pepa faʻapitoa mo le faʻamalamalamaina o vasega, e mafai ai ona e aloese mai le faʻamalamalamaina manino o auala maualalo maualalo e pei o le tutusa (), hashCode () ma le toString () i mataupu e teuina ai faʻamatalaga i totonu o fanua o latou amio e le suia. Pe a faʻaaogaina e le vasega faʻataʻitaʻiga masani o le tutusa (), hashCode () ma toString () metotia, e mafai ona faia e aunoa ma a latou faʻamatalaga manino:
faamaumauga a tagata lautele BankTransaction(LocalDate aso,
tau faalua
Fa'amatalaga o manoa) {}
O lenei ta'utinoga o le a otometi lava ona fa'aopoopo fa'atinoga o le tutusa(), hashCode() ma toString() metotia fa'aopoopo i le faufale ma auala e maua ai.
Стандартизирована и включена по умолчанию поддержка новой формы выражений «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;
}
};
Расширена экспериментальная поддержка poloka mau — новой формы строковых литералов, позволяющих включать в исходный код многострочные текстовые данные без применения в них экранирования символов и сохраняя исходное форматирования текста в блоке. Обрамление блока осуществляется тремя двойными кавычками. В 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.
Fa'atinoina предварительный вариант утилиты jpackage, позволяющей создавать пакеты для самодостаточных (self-contained) Java-приложений. Утилита базируется на javapackager из JavaFX и позволяет формировать пакеты в форматах, родных для различных платформ (msi и exe для Windows, pkg и dmg для macOS, deb и rpm для Linux). Пакеты включают все необходимые зависимости.
В сборщик мусора G1 faʻaopoopo новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру Numera. Новый распределитель памяти включается при помощи флага «+XX:+UseNUMA» и позволяет существенно поднять производительность на NUMA-системах.
Faʻaliliuga API для отслеживания на лету событий JFR (JDK Flight Recorder), например для организации непрерывного мониторинга.
Faʻaliliuga модуль jdk.nio.mapmode, предлагающий новые режимы (READ_ONLY_SYNC, WRITE_ONLY_SYNC) для создания отображаемых байтовых буферов (MappedByteBuffer), ссылающихся на энергонезависимую память (NVM).
Fa'atinoina предварительный вариант API Foreign-Memory Access, позволяющий Java-приложениям безопасно и эффективно получить доступ к областям памяти, вне кучи Java, манипулируя новыми абстракциями MemorySegment, MemoryAddress и MemoryLayout.
Объявлены устаревшими порты для ОС Solaris и процессоров SPARC (Solaris/SPARC, Solaris/x64 и Linux/SPARC) c намерением удалить данные порты в будущем. Перевод указанных портов в разряд устаревших позволит сообществу ускорить разработку новых возможностей OpenJDK, не тратя время на поддержание особенностей, специфичных для Solaris и SPARC.
Ave'esea сборщик мусора CMS (Concurrent Mark Sweep), который два года назад был отмечен устаревшим и остался без сопровождения (на смену CMS давно пришёл сборщик мусора G1). Кроме того, faasilasila устаревшим применение комбинации алгоритмов сборки мусора ParallelScavenge и SerialOld (запуск с опциями «-XX:+UseParallelGC -XX:-UseParallelOldGC»).
Обеспечена экспериментальная поддержка сборщика мусора ZGC (Z Garbage Collector) на платформах macOS и Windows (ранее поддерживался только в Linux). ZGC работает в пассивном режиме, насколько это возможно минимизирует задержки из-за сборки мусора (время остановки при использовании ZGC не превышает 10 мс.) и может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт.
Ave'esea инструментарий и API для сжатия JAR-файлов с использованием алгоритма Pack200.