LINUX.ORG.RU

Релиз Java SE 9

 ,


1

6

21 сентября вышел очередной релиз платформы Java SE. С выхода предыдущего релиза Java SE 8 прошло три с половиной года.

Самым главным глобальным нововведением является Java Platform Module System — поддержка концепции модулей на уровне языка и JVM. Теперь сама стандартная библиотека JDK разбита на модули, а Java-разработчики имеют возможность создавать собственные модули, определять зависимости между ними, а также управлять видимостью пакетов в модуле для других модулей.

Подробнее про систему модулей Java 9 можно прочитать в книге Java 9 Modularity.

Другие важные нововведения:

  • Команда jshell — функциональность REPL (read-eval-print loop) для платформы Java.
  • Multi-Release JAR Files — возможность объединять в одном JAR-файле разные версии классов и ресурсов для разных версий Java.
  • jlink — инструмент для создания собственных сборок JRE под конкретную программу, включающих только нужные для запуска модули.
  • Браузерный плагин Java Plug-in и технология апплетов теперь помечены как устаревшие. Де факто апплеты уже не поддерживаются в современных браузерах.
  • Небольшие изменения в синтаксисе языка Java; например, в интерфейсах теперь поддерживаются private-методы.
  • Новый API для управления процессами (ProcessHandle).
  • Новый API для прохода по стеку вызовов (StackWalker).
  • Различные мелкие улучшения стандартной библиотеки, например, синтаксис для создания неизменяемых коллекций (List.of, Set.of, Map.of) и новые методы в API Stream и CompletableFuture.
  • Новые возможности ECMAScript 6 (let, const, for..of и т. д.) в JavaScript-интерпретаторе Nashorn, а также новый API для синтаксического анализа JavaScript (Parser).
  • Поддержка HiDPI для приложений AWT и Swing под Windows и Linux.
  • Поддержка GTK3 как альтернативы GTK2 для создания окон AWT, Swing и JavaFX под Linux. По умолчанию используется GTK2, либо, если он недоступен, GTK3.

Список изменений

>>> Скачать

anonymous

Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Что интересно, OpenJ9 релизнулся немного раньше :)

Поддержка GTK3 как альтернативы GTK2 для создания окон AWT, Swing и JavaFX под Linux. По умолчанию используется GTK2, либо, если он недоступен, GTK3.

Интересно, что там с Wayland? Кто тестировал?

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

Что интересно, OpenJ9 релизнулся немного раньше :)

Как связаны Java SE 9 и OpenJ9? =)

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

J9 - просто название проекта, а не номер версии.

$ /opt/IBM/WebSphere/AppServer/java/bin/java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pxa6460_26sr8fp3-20141218_02(SR8 FP3))
IBM J9 VM (build 2.6, JRE 1.6.0 Linux amd64-64 Compressed References 20141211_226933 (JIT enabled, AOT enabled)

hippi90 ★★★★★
()

С выхода предыдущего релиза Java SE 8 прошло три с половиной года.

Как быстро время летит. Казалось, словно это совсем недавно было.

Я правильно понимаю, что в контексте Android тут ничего интересного нет?

mono ★★★★★
()

Поддержка GTK3 как альтернативы GTK2 для создания окон AWT, Swing

Я думал, что AWT, а значит и Swing, не используют GTK.

Deleted
()

Говно ваша жаба.

Иногда приходится обмазываться :(

Oxdeadbeef ★★★
()

в интерфейсах теперь поддерживаются private-методы.

Жесть какая, они в курсе, что у них абстрактные классы уже есть?

Команда jshell — функциональность REPL (read-eval-print loop) для платформы Java.

Зачем это компилируемому языку? Не проще завести отдельный main, ибо все равно в текстах куча импортов требуется.

Где действительно нужные вещи, где проперти, где алиасы для импортов, где value type?

Самый унылый релиз

wist512
()
Ответ на: комментарий от hippi90

Я имел ввиду OpenJDK 9 + Eclipse OpenJ9, они же раньше подготовили свой релиз?

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

Я думал, что AWT, а значит и Swing, не используют GTK.

Хм.

There are a number of Java packages that use GTK. These include AWT/Swing, JavaFX, and SWT. SWT has migrated to GTK 3, though there is a system property that can be used to force it to use the older version. This mixing of packages using different GTK versions causes application failures. This issue is particularly noticeable with Eclipse, which is SWT based. JavaFX can coexist with either Swing or SWT.

http://openjdk.java.net/jeps/283

EXL ★★★★★
()

Новые возможности ECMAScript 6

ниче, что ecmascript 6 это EcmaScript 2015, а новый в этом году вышел EcmaScript 2017 ?

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

что бы на собеседованиях спрашивать, чем отличается интерфейс от абстрактного класса

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

Интерфейсы с приватными методами, очевидно же. Нельзя.

Deleted
()
Ответ на: комментарий от nikolnik

Нахера в жаву (в сам язык) в интерфейсы впихнули приватные и статические методы?

Из-за лямбд и сохранения совместимости. Если бы не было дефолтных методов, то использовать старые проекты с новым classpath было бы невозможно. А так, за очень редким исключением, можно взять приложение созданное для java 1.1 и запустить на java9.

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

Нахера в жаву (в сам язык) в интерфейсы впихнули приватные и статические методы?

Начиная с 8й версии в жабе возможна дефолтная реализация метода интерфейса. В классе можно реализовать метод самому, а можно оставить ту, которая в определении интерфейса. Вот для того, чтоб специфичные для реализации вещи необязательно было открывать приватные методы в интерфейсе и разрешили.

khrundel ★★★★
()

Самым главным глобальным нововведением является Java Platform Module System

Вы мне скажите вот что: уменьшится ли потребление памяти java-приложениями? Может повысится производительность? Или эти изменения заметят исключительно разработчики?

Im_not_a_robot ★★★★★
()

Команда jshell — функциональность REPL (read-eval-print loop) для платформы Java.
22.09.2017

Это так смешно что даже не смешно.

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

Вы мне скажите вот что: уменьшится ли потребление памяти java-приложениями? Может повысится производительность?

Ничего не изменится. И разработчики будут продолжать кодить так, как научились в прошлых версиях. Всё тлен.

Alve ★★★★★
()

Браузерный плагин Java Plug-in и технология апплетов теперь помечены как устаревшие. Де факто апплеты уже не поддерживаются в современных браузерах.

Де факто все, кому нужно, уже собрали chroot, контейнеры или ВМ с нужными версиями плагинов и браузеров

Т.к. задолбали всякие мозила-ко с гуглом решать, что мне нужно, а что нет. Для работы консолей ( ilo/rsa ) и веб-интерфейсов ( fc свичи, схд ) и т.д. java plugin кровь из носу нужен

router ★★★★★
()

21 сентября вышел очередной релиз платформы Java SE.

Поздравляю всех современных программистов с релизом их любимого языка :-) Чем меньше красноглазия, тем больше КПД :-)

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

Всё самое важное было в gradle-retrolambda, поэтому и не торопились.

С Java9, видимо, тоже не будут торопиться.

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

Хм, и правда. До сих пор не могу привыкнуть к этой мысли. =)

Впрочем, пока я только с одним проектом на Kotlin сталкивался. А писать одновременно на двух языках не очень хочется.

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

Вы мне скажите вот что: уменьшится ли потребление памяти java-приложениями? Может повысится производительность? Или эти изменения заметят исключительно разработчики?

Из-за модулизации? Потребление не уменьшится. Вообще там как бы безопасность, рефлекшен между модулями не будет работать если явно не задекламировать, например явно обозначит, что мое приложение открывает полный доступ спрингу, и только тогда спринг сможет получать доступ к приватным членам моих классов через рефлекшен. Как я это вижу, допускаю что раньше можно было саботировать работу сервлет-контейнера (tomcat, jetty, etc) посредство хитро написанного веб приложения. Например взять в runtime поменять состояния классов из rt.jar. Может я не прав?

А еще я допускаю, что в дальнейшем будет возможно выпиливать всякий legacy из дефолтной поставки jre, например swing, будет подружатся по мере необходимости.

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

Нахера в жаву (в сам язык) в интерфейсы впихнули приватные и статические методы?

Возможно для default methods, которые нужны, для имитации множественного наследования.
Например ты хочешь создать default method, который сам вызывает несколько статических методов, но они не должны входить в интерфейс.

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

только как-то криво юзают gtk приложения у меня скейлятся, а вот жабные на swing нет

lberserq
()

Самым главным глобальным нововведением является Java Platform Module System

Jigsaw! Я джва... стоп! На самом деле, ее обещали еще в Java 7, которая вышла аж 6 лет назад...

X-Pilot ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Вы мне скажите вот что: уменьшится ли потребление памяти java-приложениями?

Теоретически, уменьшится размер дистрибутивов приложений

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

AOT enabled. Вообще-то, нужно

На opennet.ru в новости про Java SE 9:

Обеспечена возможность упреждающей (Ahead-of-Time) компиляции классов в машинный код перед запуском виртуальной машины, что позволяет заметно сократить время старта крупных приложений;

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

это значит что компоненты возможно будет обновлять независимо друг от друга. хорошо это или плохо - посмотрим

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

Обеспечена возможность упреждающей (Ahead-of-Time) компиляции классов в машинный код перед запуском виртуальной машины, что позволяет заметно сократить время старта крупных приложений;

Если я правильно помню презентацию на JUG (и судя по описанию JEP-295), то у этой реализации пока что много ограничений.

X-Pilot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.