Після шести місяців розробки компанія Oracle випустила платформу JavaSE 13 (Java Platform, Standard Edition 13), як еталонної реалізації якої використовується відкритий проект OpenJDK. У Java SE 13 збережено зворотну сумісність з минулими випусками платформи Java, всі раніше написані Java-проекти без змін будуть працездатні при запуску під керуванням нової версії. Готові для встановлення складання Java SE 13 (JDK, JRE та Server JRE) підготовлено для Linux (x86_64), Solaris, Windows та macOS. Розроблена у рамках проекту OpenJDK еталонна реалізація Java 13 повністю відкрита під ліцензією GPLv2 з винятками GNU ClassPath, що дозволяють динамічне зв'язування з комерційними продуктами.
Java SE 13 віднесено до категорії випусків із звичайним терміном підтримки, оновлення для якого будуть випускатися до наступного випуску. Як гілка з тривалим терміном підтримки (LTS) слід використовувати Java SE 11, оновлення для якого будуть випускатися до 2026 року. Минула LTS-гілка Java 8 підтримуватиметься до грудня 2020 року. Наступний LTS-реліз заплановано на вересень 2021 року. Нагадаємо, що починаючи з випуску Java 10 проект перейшов на новий процес розробки, який передбачає більш короткий цикл формування нових релізів. Нова функціональність тепер розвивається в одній master-гілці, що постійно оновлюється, в яку включаються вже готові зміни і від якої раз на шість місяців відгалужуються гілки для стабілізації нових випусків. На березень наступного року заплановано випуск Java 14, попередні збирання якого вже доступні для тестування.
Додана підтримка динамічного доповнення архівів CDS (Class-Data Sharing), що забезпечують спільний доступ додатків до загальних класів. За допомогою CDS загальні класи можуть розміщуватися в окремому спільно архіві, що дозволяє прискорити запуск додатків і знизити накладні витрати. У новій версії додано кошти для динамічного архівування класів після закінчення програми. Поміщені в архів класи включають усі завантажені в процесі роботи програми класи та супутні бібліотеки, які були відсутні в початковому базовому CDS-архіві;
У збирач сміття ZGC (Z Garbage Collector) додано підтримка повернення невикористовується пам'яті операційній системі;
Задіяна перероблена реалізація API Legacy Socket (java.net.Socket та java.net.ServerSocket), яка простіше у супроводі та налагодженні. Крім того, запропоновану реалізацію простіше адаптуватиме для роботи з новою системою потоків у просторі користувача (fibers), що розвиваються в рамках проекту Loom;
Продовжено розвиток нової форми виразів "switch". Додана експериментальна (Preview) можливість використання "switch" у формі не тільки оператора, але і як висловлювання. Наприклад, тепер можна використовувати конструкції виду:
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
або
System.out.println (
switch (k) {
case 1 -> "one"
case 2 -> «two»
default -> «many»
}
);
У майбутньому з урахуванням цієї можливості планується реалізувати підтримку зіставлення за шаблонами;
Додана експериментальна підтримка текстових блоків - нової форми рядкових літералів, що дозволяють включати в вихідний код багаторядкові текстові дані без застосування в них екранування символів та зберігаючи вихідне форматування тексту в блоці. Обрамлення блоку здійснюється трьома подвійними лапками. Наприклад, замість виразу
String query = «SELECT 'EMP_ID', 'LAST_NAME' FROM 'EMPLOYEE_TB'\n» +
"WHERE `CITY` = 'INDIANAPOLIS'\n" +
ORDER BY `EMP_ID`, `LAST_NAME`;\n";
тепер можна застосовувати конструкцію:
String query = """
SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
WHERE `CITY` = 'INDIANAPOLIS'
ORDER BY `EMP_ID`, `LAST_NAME`;
""";
Закрито 2126 звітів про помилки, з яких 1454 усунуті співробітниками Oracle, а 671 сторонніми учасниками, з яких шоста частина змін внесена незалежними розробниками, а решта представників таких компаній, як IBM, Red Hat, Google, Loongson, Huawei, ARM та SAP.