LINUX.ORG.RU

Первый релиз Java 11

 , , , ,


1

3

Сегодня состоялся первый релиз Java 11. Это первая LTS (Long Time Support) версия Java, после изменения политики выпуска новых версий начиная с Java 9. Публичные обновления Java 11 будут выпускаться до сентября 2023 года.

В JDK 11 внесены следующие изменения:

  1. Стек развёртывания апплетов и WebStart-приложений, объявленный устаревшим в Java 9, теперь удалён окончательно. Вместе с удалением стека развёртывания исчез список поддерживаемых браузеров.
  2. Удалено автоматическое обновление JRE и сам JRE для Windows и MacOS.
  3. Вместо JRE и Server JRE предлагается использовать утилиту jlink для создания меньших кастомных рантаймов.
  4. JavaFX более не является частью JDK, а поставляется отдельно из openjfx.io.
  5. Java Mission Control, поставлявшийся вместе с JDK 7, 8, 9, 10 также перестал быть частью JDK и поставляется отдельно. ]*] Формат обновлений для Windows переведён с tar.gz на zip, как на более часто используемый в этой операционной системе.
  6. Формат обновлений для MacOS переведён с .app на .dmg, как на более соответствующий стандартам этой операционной системы.

Изменения в JDK:

  1. JEP 327 Unicode 10 включая 16018 новых символов среди которых:
    а. 19 новых символов для 4K TV стандарта
    б. символ Биткоина
    в. 128 эмоджи-символов
    г. 10 новых алфавитов, среди которых: албанский, брахманский (11-го века) и прочая экзотика.
    д. 18 новых блоков символов для новых и существующих алфавитов, среди которых Cyrillic Extended-C.
  2. JEP 321 HTTP Client (Standard) стандартизирован и переведён из jdk.incubator.http в java.net.http.
  3. В интерфейс Collection добавлен toArray(IntFunction<T[]>) Default Method, перегружающий toArray(T[]). Это привело к несовместимости со старым кодом, в котором есть вызов toArray(null). Теперь такой вызов приводит к ошибке компиляции и должен быть изменён на аналогичный с переводом null в требуемый тип.
  4. Обновлены локали для Unicode CLDR v33
  5. Добавлена возможность ленивого создания потоков компиляции. Включается опцией -XX:+UseDynamicNumberOfCompilerThreads.
  6. Добавлен новый экспериментальный Scalable Low-Latency Garbage Collector, известный под именами Z и ZGC. Включается одновременным использованием опций -XX:+UnlockExperimentalVMOptions и -XX:+UseZGC.
  7. JEP 318 Epsilon, A No-Op Garbage Collector новый ничего не освобождающий сборщик мусора, предназначенный для тестирования.
  8. JEP 331 Low-Overhead Heap Profiling - поддержка низкозатратного профилирования выделения памяти в куче. Доступно через JVMTI.
  9. JEP 329 ChaCha20 and Poly1305 Cryptographic Algorithms.
  10. Системные свойства java.home, user.home, user.dir и user.name теперь неизменяемы

И ещё много других изменений. Также можно упомянуть удаление поддержки CORBA и мониторинга JVM через SNMP. Из JDK удалены модули, связанные с Java EE. По умолчанию используется не GTK2, а GTK3. Расширено использование нового ключевого слова var, которое теперь может использоваться при объявлении параметров лямбд. При этом все параметры таких лямбд обязаны быть var. Удалены фонты Lucida. Плагин javax.imageio больше не поддерживает JPEG с альфа каналом, судя по всему из-за проприетарности старой реализации.

JDK 11 можно скачать тут. Также следует обратить внимание на то, что изменена лицензия Oracle JDK. Теперь она GPL+CE, как и у OpenJDK.

Для переходящих на Java 11 LTS с Java 8 такой переход добавит ещё и массу новшеств Java 9 и Java 10, перечислять которые тут излишне.

>>> Подробности

★★★★★

Проверено: leave ()

Стек развёртывания апплетов и Web Start приложений, объявленный устаревшим в Java 9, теперь удалён окончательно.

Вместо апплетов теперь JavaFX, или её теперь тоже отправили на помойку?

// Не специалист в обсуждаемых технологиях, просто интересно.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

Вместо апплетов теперь JavaFX, или её теперь тоже отправили на помойку?

JavaFX лишь исключили из поставки JDK, но она всё ещё есть и развивается. На сколько я понял вместо апплетов ничего нет.

bbk123 ★★★★★ ()

Вмести с удалением стека

Вместе.

вмести с JDK 7, 8, 9, 10 так же перестал

Опять вместе, также слитно (можно по смыслу заменить на “тоже”, далее по тексту встречается та же ошибка).

env ★★ ()
Последнее исправление: env (всего исправлений: 1)

Вмести с удалением стека
Изменений много, устал все перечислять.
Для переходящих на Java 11 LTS с Java 8 такой переход добавит ещё и массу новшеств Java 9 и Java 10, перечислять которые я тут не буду.

Ржал аки конь. Мы же не будем подтверждать это на главную?

MEZON ★★★★★ ()
Ответ на: комментарий от Midael

GPL+CE действительно не чистый GPL. По сути GPL+CE почти полностью аналогичен LGPL. Отличие лишь в том, что GPL+CE не требует давать разрешение исследовать и изменять слинкованый код, как это делает LGPL. То есть это более подходящий для коммерческого использования вариант LGPL.

bbk123 ★★★★★ ()

На днях собирал одну программку для Андроид и пришлось переконфигурировать стандартную джаву назад на 8-ку. Оказалось, что Гугл ни 10-ку, ни 9-ку толком ещё не поддерживает. А тут уже 11-ая вышла. Куда Оракл так спешит. Или это Гугл так тормозит.

gag ★★★★★ ()

Только java 9 поставил... Серьезно, в прошлые выходные обновил 8 до 9 на дебовом и до 10 на убунтовом серверах (в 18.04 по дефолту десяточка).

rj45 ()
Ответ на: комментарий от hobbit

Всё это выбросили на помойку. Идея возродить апплеты жива, но до ее реализации еще пройдет некоторое время - нужен нормально и быстро работающий webassembly и еще годик хотя бы развития Грааля

stevejobs ★★★☆☆ ()
Ответ на: комментарий от gag

Или это Гугл так тормозит.

это глобальная проблема. Во-первых, на Андроиде Java вообще никогда не была реализована, был реализован только ее какой-то огрызок. Это часть тех претензий, которые Оракл выкатил в том самом знаменитом иске, за который Гугл теперь будет платить лютейшие миллионы. У них на сайте даже написано везде, что Андроид - это не Java, а нечто, что может запускать джава-программы (а может и не запускать)

во-вторых, Гуглу никогда особо не было интересно счастье разработчиков под Android, им скорей интересно собственное бабло и только. Совершенно очевидно, что и в будущем Гугл не будет особо поддерживать джаву, и съедет как минимум на Kotlin.

в общем, вся эта сказка про корпорацию добра разваливается как карточный домик - вот в таких как раз мелочах

stevejobs ★★★☆☆ ()
Ответ на: комментарий от stevejobs

Во-первых, на Андроиде Java вообще никогда не была реализована, был реализован только ее какой-то огрызок. Это часть тех претензий, которые Оракл выкатил в том самом знаменитом иске, за который Гугл теперь будет платить лютейшие миллионы.

Разве не за использование джавовского API?
https://www.bloomberg.com/news/articles/2018-03-27/oracle-wins-revival-of-bil...

bbk123 ★★★★★ ()
Ответ на: комментарий от stevejobs

Это часть тех претензий, которые Оракл выкатил в том самом знаменитом иске, за который Гугл теперь будет платить лютейшие миллионы.

Я что-то пропустил и оракел не обосрался с этим иском? И при всей нелюви к гуглу - не приходит в голову другая столь же мерзкая контора, как кокаиновое депо Ларри.

ptarh ★★★★★ ()
Ответ на: комментарий от stevejobs

Гуглу никогда особо не было интересно счастье разработчиков под Android, им скорей интересно собственное бабло и только

Это как бы связанные цели. Developers-developers и всё такое.

anonymous ()

массу новшеств Java 9 и Java 10, перечислять которые тут излишне

То ли дело подробно расписать юникодные символы! И в одну кучу лямбды, библиотеки, автообновление, шрифты...

Поцоны, не кочайте яву, она кашу в голове создает! Пишите на скале, скала уже затем нужна, что ум в порядок приводит (с) Ломоносов

anonymous ()
Ответ на: комментарий от bbk123

Sencha прекрасно поживает, что для микрокомпании нелохо.

CERN хорошо сидит на GXT - пруф -

https://www.sencha.com/blog/gxt-customer-spotlight-cern/

А из самых хайповых проектов - https://vaadin.com/

«Голый» Гвит (GWT) никто и не использует.

Bioreactor ★★★★★ ()
Ответ на: комментарий от stevejobs

Как я понял, «фигня с лицензиями» скорее надумана болтунами хипстерочками-блоггерами, чем реальными разработчиками -

http://openjdk.java.net/projects/jdk/11/

This page provides production-ready open-source builds of the Java Development Kit, version 11, an implementation of the Java SE 11 Platform under the GNU General Public License, version 2, with the Classpath Exception.

Commercial builds of JDK 11 from Oracle under a non-open-source license, for a wider range of platforms, can be found at the Oracle Help Center.

(C)

Bioreactor ★★★★★ ()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Bioreactor

Sencha прекрасно поживает, что для микрокомпании нелохо.

Как мне рассказывал бывший коллега, Sencha уже умерла и её выкупила какая-то компания, специализирующася на поддержке legacy. В той компании, где мы работали отказались от Sencha в пользу React.

А из самых хайповых проектов - https://vaadin.com/

Так же слышал, что он потерял свою былую популярность.

«Голый» Гвит (GWT) никто и не использует.

А ведь буквально несколько лет назад использовали. Мне как-то «посчастливилось» поддерживать один такой проект.

bbk123 ★★★★★ ()

В интерфейс Collection добавлен toArray(IntFunction<T[]>) Default Method, перегружающий toArray(T[]). Это привело к несовместимости со старым кодом, в котором есть вызов toArray(null). Теперь такой вызов приводит к ошибке компиляции и должен быть изменён на аналогичный с переводом null в требуемый тип.

А зачем вообще вызывать toArray(null)? Тем более что это выкинет исключение.

FilosofeM ★★ ()
Ответ на: комментарий от gag

Джава в нейтив может через Грааль, так что на Гугль со временем можно будет забить. Он в свою очередь хочет забить на андроид своей фучей в режиме совместимости. Короче, все друг на друга забивают...

foror ★★★ ()
Ответ на: комментарий от EvilSpirit

Перегрузку операторов не завезли? Закапывайте

И не просите. Вас закопать по интернету невозможно. Перегрузки операторов не будет потому, что не нужна в Java. Авторы Java стремились к повышению надёжности программ, которая особенно важна для серверных приложений. Поэтому исключили перегрузку операторов как ненадёжный элемент - из-за неё программный код был был бы менее читаемым(поскольку для понимания его смысла надо смотреть участок программы с определением перезагрузки... А если он в чужой библиотеке? А если в программе нужно несколько чужих библиотек, в которых оператор переопределён по-разному?), а дополнительных возможностей они не дали бы (в Java. В других языках может быть иначе, но синтаксис Java приспособлен к его назначению). А если вы отказываетесь программировать на Java пока в него не завезут перегрузку операторов, то это и хорошо, потому что плохих программистов в Java и так хватает. Лучше научитесь плохо программировать на чём-нибудь другом.

Partisan ()