what to expect from java 9
TRANSCRIPT
![Page 1: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/1.jpg)
Чего ждать от Java 9?
Иван Крылов
1
![Page 2: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/2.jpg)
Зачем этот доклад?
2
![Page 3: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/3.jpg)
Зачем этот доклад?
• До выхода JDK9 меньше года
• Знать об изменениях лучше заранее
2
![Page 4: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/4.jpg)
Зачем этот доклад?
• До выхода JDK9 меньше года
• Знать об изменениях лучше заранее
• Я работаю в Azul Systems - производителе JDK
• Я - сторонний заинтересованный наблюдатель развития платформы
• Вся информация из публичных источников
2
![Page 5: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/5.jpg)
Переход на новую версию Java
3
![Page 6: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/6.jpg)
Переход на новую версию Java
New features!Новые возможности!3
![Page 7: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/7.jpg)
Переход на новую версию Java
New features!Новые возможности! New incompatibilities!Источник ошибок и несовместимостей3
![Page 8: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/8.jpg)
Переход на новую версию Java
Изображения - Ihttps://vijaybelola.wordpress.com/2011/09/20/let-the-games-begin/ ; https://ru.wikipedia.org/wiki/FacepalmNew features!Новые возможности! New incompatibilities!Источник ошибок и несовместимостей
3
![Page 9: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/9.jpg)
Временные интервалы выхода версий Java
4
![Page 10: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/10.jpg)
Временные интервалы выхода версий Java
JDK 6Дек 2006
JDK 7Июль 2011
JDK 8Мар 2014
JDK 9план. Сент 2016
4
GA
![Page 11: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/11.jpg)
Временные интервалы выхода версий Java
JDK 6Дек 2006
JDK 7Июль 2011
JDK 8Мар 2014
JDK 9план. Сент 2016
JDK 6Ноя 2012
JDK 7Апр 2015
JDK 8план. Сент 2017
J2SE 1.4 Дек 2006
JDK 5Окт 2009
4
GA
EOL
![Page 12: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/12.jpg)
Что означает наступление дня EOL?
5
![Page 13: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/13.jpg)
Что означает наступление дня EOL?
Настал день EOLНужны исправления
найденных уязвимостей
&
5
![Page 14: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/14.jpg)
Что означает наступление дня EOL?
Настал день EOLНужны исправления
найденных уязвимостей
&
5
![Page 15: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/15.jpg)
Что означает наступление дня EOL?
Настал день EOLНужны исправления
найденных уязвимостей
&
Подписать Support Contract c
Oracle
5
![Page 16: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/16.jpg)
Что означает наступление дня EOL?
Настал день EOLНужны исправления
найденных уязвимостей
&
Подписать Support Contract c
Oracle
Перейти на OpenJDK (Zulu, IcedTea, сборку своими силами)
5
![Page 17: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/17.jpg)
Что означает наступление дня EOL?
Настал день EOLНужны исправления
найденных уязвимостей
&
Подписать Support Contract c
Oracle
Перейти на OpenJDK (Zulu, IcedTea, сборку своими силами)
Обновиться до следующей версии JDK
5
![Page 18: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/18.jpg)
Вспомним новое в Java 8
6
![Page 19: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/19.jpg)
Вспомним новое в Java 8• Лямбды
• Method references
• Type аннотации
• Повторяющиеся аннотации • Интерфейсные методы
6
![Page 20: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/20.jpg)
Вспомним новое в Java 8• Лямбды
• Method references
• Type аннотации
• Повторяющиеся аннотации • Интерфейсные методы
6
• Stream API
• Date Time API• Замена PermGen• Nashorn, JavaScript Engine• Новые утилиты (jdeps,jjs,..)
![Page 21: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/21.jpg)
От идей до нового функционала Java
7
![Page 22: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/22.jpg)
От идей до нового функционала Java
JEP предложен
7
![Page 23: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/23.jpg)
От идей до нового функционала Java
JEP предложен
JEP принят, найден “спонсор”
7
![Page 24: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/24.jpg)
От идей до нового функционала Java
JEP предложен
JEP принят, найден “спонсор”
JEP подтвержден для Java версии N
7
![Page 25: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/25.jpg)
От идей до нового функционала Java
JEP предложен
JEP принят, найден “спонсор”
JEP подтвержден для Java версии N
JEP реализован7
![Page 26: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/26.jpg)
Путь JSR
Source: https://groups.google.com/forum/#!topic/java-social/InafCPMLLaA8
![Page 27: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/27.jpg)
Путь JSR
Source: https://groups.google.com/forum/#!topic/java-social/InafCPMLLaA8
![Page 28: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/28.jpg)
Ориентировочное расписание выхода Java 9
9
![Page 29: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/29.jpg)
Ориентировочное расписание выхода Java 9Fe
atur
e co
mpl
ete
Zero
Bug
Bou
nce
Ram
pdow
n ph
ase
2Fin
al Re
lease
Can
dida
te
Дек’1
5
All te
sts ru
nRa
mpd
own
Star
t
Gene
ral A
vaila
bility
Фев ’
16
Фев ’
16
Апр
’16
Июнь
’16
Июль
’16
Сент
’16
9
![Page 30: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/30.jpg)
Ориентировочное расписание выхода Java 9Fe
atur
e co
mpl
ete
Zero
Bug
Bou
nce
Ram
pdow
n ph
ase
2Fin
al Re
lease
Can
dida
te
Дек’1
5
All te
sts ru
nRa
mpd
own
Star
t
Gene
ral A
vaila
bility
Фев ’
16
Фев ’
16
Апр
’16
Июнь
’16
Июль
’16
Сент
’16
9
![Page 31: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/31.jpg)
Модули
10
![Page 32: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/32.jpg)
10
![Page 33: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/33.jpg)
Инкапсуляция кода
11
![Page 34: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/34.jpg)
Поля & Методы
Инкапсуляция кода
11
![Page 35: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/35.jpg)
Классы
Поля & Методы
Инкапсуляция кода
11
![Page 36: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/36.jpg)
Классы
Поля & Методы
Интерфейсы
…
Абстрактные Классы
…
Инкапсуляция кода
11
![Page 37: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/37.jpg)
Пакеты
Классы
Поля & Методы
Интерфейсы
…
Абстрактные Классы
…
Инкапсуляция кода
11
![Page 38: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/38.jpg)
Модули
Пакеты
Классы
Поля & Методы
Интерфейсы
…
Абстрактные Классы
…
Инкапсуляция кода
11
![Page 39: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/39.jpg)
Проблемы существующей модели
12
![Page 40: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/40.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
12
![Page 41: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/41.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
12
![Page 42: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/42.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
• Jar / Classpath Hell
12
![Page 43: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/43.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
• Jar / Classpath Hell
• Что от чего зависит?..
12
![Page 44: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/44.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
• Jar / Classpath Hell
• Что от чего зависит?..
• Опциональные и транзитивные зависимости
12
![Page 45: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/45.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
• Jar / Classpath Hell
• Что от чего зависит?..
• Опциональные и транзитивные зависимости
• Ленивая загрузка и инициализация классов -> NoClassDefFoundError
12
![Page 46: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/46.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
• Jar / Classpath Hell
• Что от чего зависит?..
• Опциональные и транзитивные зависимости
• Ленивая загрузка и инициализация классов -> NoClassDefFoundError
• Примитивный механизм видимости для кода вне пакетов - только public
12
![Page 47: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/47.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
• Jar / Classpath Hell
• Что от чего зависит?..
• Опциональные и транзитивные зависимости
• Ленивая загрузка и инициализация классов -> NoClassDefFoundError
• Примитивный механизм видимости для кода вне пакетов - только public
• Классы из разных загрузчиков классов “видят” друг друга
12
![Page 48: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/48.jpg)
Проблемы существующей модели• Java Runtime большой и “тяжелый” и будет дальше расти
• Профайлы 1, 2, 3 лишь частично решают проблему
• Jar / Classpath Hell
• Что от чего зависит?..
• Опциональные и транзитивные зависимости
• Ленивая загрузка и инициализация классов -> NoClassDefFoundError
• Примитивный механизм видимости для кода вне пакетов - только public
• Классы из разных загрузчиков классов “видят” друг друга
• SecurityManager помогает, но об этом надо знать12
![Page 49: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/49.jpg)
Jigsaw
13
![Page 50: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/50.jpg)
Jigsaw
Модули в Java
13
![Page 51: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/51.jpg)
Jigsaw
Модулярность JDKМодули в Java
13
![Page 52: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/52.jpg)
Jigsaw
JSR 376: Java Platform Module SystemJEP 261: Module System
Модулярность JDKМодули в Java
13
![Page 53: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/53.jpg)
Jigsaw
JEP 162: Prepare for ModularizationJEP 200: The Modular JDKJEP 220: Modular Run-Time ImagesJEP 201: Modular Source CodeJEP 260: Encapsulate Most Internal APIs
JSR 376: Java Platform Module SystemJEP 261: Module System
Модулярность JDKМодули в Java
13
![Page 54: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/54.jpg)
Пример 1
14
![Page 55: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/55.jpg)
Пример 1Модуль S Модуль P
14
![Page 56: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/56.jpg)
Пример 1src/s/module-info.java
module s { exports com.azul.services; }
src/p/module-info.java
module p { requires s; }
Модуль S Модуль P
14
![Page 57: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/57.jpg)
Пример 1src/s/module-info.java
module s { exports com.azul.services; }
src/p/module-info.java
module p { requires s; }
Модуль S Модуль P
14
![Page 58: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/58.jpg)
Пример 1src/s/module-info.java
module s { exports com.azul.services; }
src/p/module-info.java
module p { requires s; }
src/s/com/azul/services/LocProvider.java
package com.azul.services; import java.lang.String;
public class LocProvider { public static String getLocation() { return "Joker 2015"; } }
src/p/com/azul/presentations/ModulesDemo.java
package com.azul.presentations; import com.azul.services.LocProvider;
public class ModulesDemo { public static void main(java.lang.String[] argv) { System.out.println("I am at "+LocProvider.getLocation()); } }
Модуль S Модуль P
14
![Page 59: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/59.jpg)
Новые параметры javac/java (1)
15
![Page 60: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/60.jpg)
Новые параметры javac/java (1)• # Компиляция
• $cd/src
• $J/javac -modulesourcepath . -mp s -d target s/module-info.java s/com/azul/services/LocProvider.java
• $J/javac -modulesourcepath . -mp p -d target p/module-info.java p/com/azul/presentations/ModulesDemo.java
• # Запуск
• $J/java -mp target -m p/com.azul.presentations.ModulesDemo
15
![Page 61: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/61.jpg)
Новые параметры javac/java (2)
16
![Page 62: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/62.jpg)
Новые параметры javac/java (2)
16
• # Упаковка
• $J/jar --create --file ./jars/p.jar -e com.azul.presentations/ModulesDemo -C target/p .
• # Запуск
• $j/bin/java -mp jars -m p
![Page 63: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/63.jpg)
Пример 2
17
![Page 64: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/64.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
17
![Page 65: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/65.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
17
![Page 66: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/66.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
17
![Page 67: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/67.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
17
![Page 68: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/68.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
17
![Page 69: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/69.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
17
![Page 70: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/70.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
17
![Page 71: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/71.jpg)
Пример 2./nashorn/src/jdk.scripting.nashorn/share/classes/module-info.java
module jdk.scripting.nashorn { requires java.logging; requires public java.scripting;
uses jdk.internal.dynalink.linker.GuardingDynamicLinker; uses jdk.nashorn.internal.runtime.CodeStore; provides javax.script.ScriptEngineFactory with jdk.nashorn.api.scripting.NashornScriptEngineFactory;
exports jdk.nashorn.api.scripting; exports jdk.nashorn.api.tree;
exports jdk.nashorn.internal.runtime to jdk.scripting.nashorn.shell; exports jdk.nashorn.internal.objects to jdk.scripting.nashorn.shell; exports jdk.nashorn.tools to jdk.scripting.nashorn.shell; }
META-INF/services
17
![Page 72: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/72.jpg)
Cосуществование cp и mp
18
![Page 73: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/73.jpg)
Cосуществование cp и mp• Всё, что попало в cp считается попавшим в безымянный (unnamed) модуль
18
![Page 74: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/74.jpg)
Cосуществование cp и mp• Всё, что попало в cp считается попавшим в безымянный (unnamed) модуль
• Безымянные модули видят все именованные модули (requires *)
18
![Page 75: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/75.jpg)
Cосуществование cp и mp• Всё, что попало в cp считается попавшим в безымянный (unnamed) модуль
• Безымянные модули видят все именованные модули (requires *)
• Обратное - неверное, надо указать requires unnamed или …
18
![Page 76: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/76.jpg)
Cосуществование cp и mp• Всё, что попало в cp считается попавшим в безымянный (unnamed) модуль
• Безымянные модули видят все именованные модули (requires *)
• Обратное - неверное, надо указать requires unnamed или …
• jar файл, который попал в mp автоматически превращается в модуль с названием, совпадающим с названием jar-файла
18
![Page 77: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/77.jpg)
Cосуществование cp и mp• Всё, что попало в cp считается попавшим в безымянный (unnamed) модуль
• Безымянные модули видят все именованные модули (requires *)
• Обратное - неверное, надо указать requires unnamed или …
• jar файл, который попал в mp автоматически превращается в модуль с названием, совпадающим с названием jar-файла
• автомодули становятся мостом для видимости именными модулями классов в безымянным модуле
18
![Page 78: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/78.jpg)
Cосуществование cp и mp• Всё, что попало в cp считается попавшим в безымянный (unnamed) модуль
• Безымянные модули видят все именованные модули (requires *)
• Обратное - неверное, надо указать requires unnamed или …
• jar файл, который попал в mp автоматически превращается в модуль с названием, совпадающим с названием jar-файла
• автомодули становятся мостом для видимости именными модулями классов в безымянным модуле
• Типы ищутся безымянном модуле в последнюю очередь 18
![Page 79: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/79.jpg)
19
jdeps -genmoduleinfo
cat /Users/ivan/test/modules/generated/glassfish.corba.omgapi/module-info.java module glassfish.corba.omgapi { requires public java.corba; requires public java.desktop; requires public java.rmi; exports com.sun.corba.ee.org.omg.CORBA; exports javax.rmi.CORBA; exports org.omg.CORBA; exports org.omg.CORBA.DynAnyPackage; exports org.omg.CORBA.ORBPackage; exports org.omg.CORBA.TSIdentificationPackage; exports org.omg.CORBA.TypeCodePackage; exports org.omg.CORBA.portable; exports org.omg.CORBA_2_3; exports org.omg.CORBA_2_3.portable; exports org.omg.CosNaming; exports org.omg.CosNaming.NamingContextExtPackage; exports org.omg.CosNaming.NamingContextPackage; exports org.omg.CosTSInteroperation; exports org.omg.CosTSPortability; exports org.omg.CosTransactions; exports org.omg.Dynamic; exports org.omg.DynamicAny; exports org.omg.DynamicAny.DynAnyFactoryPackage; exports org.omg.DynamicAny.DynAnyPackage; exports org.omg.IOP; exports org.omg.IOP.CodecFactoryPackage; exports org.omg.IOP.CodecPackage; exports org.omg.Messaging; exports org.omg.PortableInterceptor; exports org.omg.PortableInterceptor.ORBInitInfoPackage; exports org.omg.PortableServer; exports org.omg.PortableServer.CurrentPackage; exports org.omg.PortableServer.POAManagerPackage; exports org.omg.PortableServer.POAPackage; exports org.omg.SendingContext; exports org.omg.stub.java.rmi; }
jdeps
-genmoduleinfo ~/test/modules/generated/
glassfish-4.1.1/glassfish/modules/glassfish-corba-omgapi.jar
![Page 80: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/80.jpg)
20
jdeps -jdkinternalsglassfish-corba-orb.jar -> java.corba com.sun.corba.ee.impl.copyobject.OldReflectObjectCopierImpl (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.copyobject.OldReflectObjectCopierImpl$1 (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.encoding.BufferManagerWriteStream (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.IIOPInputStream (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.IIOPInputStream$1 (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.IIOPOutputStream (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.IIOPOutputStream$1 (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.ObjectStreamClass (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.ObjectStreamClass$1 (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.ObjectStreamField (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.io.ObjectStreamField$1 (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl$1 (glassfish-corba-orb.jar) -> com.sun.jndi.cosnaming.CNCtx JDK internal API (java.corba) com.sun.corba.ee.impl.util.JDKClassLoader (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba) com.sun.corba.ee.impl.util.JDKClassLoader$1 (glassfish-corba-orb.jar) -> sun.corba.Bridge JDK internal API (java.corba)
jdeps
-jdkinternals
glassfish/ modules/ glassfish-corba-orb.jar
![Page 81: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/81.jpg)
21
java -XaddExports
java -XaddExports :java.base/sun.security.provider=ALL-UNNAMED, java.base/sun.security.pkcs=ALL-UNNAMED, java.base/sun.security.util=ALL-UNNAMED, java.base/sun.security.x509=ALL-UNNAMED, :
![Page 82: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/82.jpg)
Модулярность
Source: http://openjdk.java.net/projects/jigsaw/doc/jdk-modularization.html22
![Page 83: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/83.jpg)
Модулярность
Source: http://openjdk.java.net/projects/jigsaw/doc/jdk-modularization.html
JDK 7 b65
22
![Page 84: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/84.jpg)
Модулярность
Source: http://openjdk.java.net/projects/jigsaw/doc/jdk-modularization.html
JDK 8 b48
22
![Page 85: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/85.jpg)
Модулярность
Source: http://openjdk.java.net/projects/jigsaw/doc/jdk-modularization.html
JDK9 EA
22
![Page 86: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/86.jpg)
О чем я не расскажу сегодня
23
![Page 87: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/87.jpg)
О чем я не расскажу сегодня
23
• Reflection и модули. Новый класс java.lang.reflect.Module. Видимость и рефлекшн
![Page 88: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/88.jpg)
О чем я не расскажу сегодня
23
• Reflection и модули. Новый класс java.lang.reflect.Module. Видимость и рефлекшн
• Модуляризованный jar; multirelease jar
![Page 89: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/89.jpg)
О чем я не расскажу сегодня
23
• Reflection и модули. Новый класс java.lang.reflect.Module. Видимость и рефлекшн
• Модуляризованный jar; multirelease jar
• Пакеты с одинаковыми названиями и внезапные NoClassDefFoundException
![Page 90: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/90.jpg)
О чем я не расскажу сегодня
23
• Reflection и модули. Новый класс java.lang.reflect.Module. Видимость и рефлекшн
• Модуляризованный jar; multirelease jar
• Пакеты с одинаковыми названиями и внезапные NoClassDefFoundException
• Layers - новая абстракция над classloaders
![Page 91: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/91.jpg)
О чем я не расскажу сегодня
23
• Reflection и модули. Новый класс java.lang.reflect.Module. Видимость и рефлекшн
• Модуляризованный jar; multirelease jar
• Пакеты с одинаковыми названиями и внезапные NoClassDefFoundException
• Layers - новая абстракция над classloaders
• Инструментарий для модуляризации кода
• <java9_jigsaw>/bin/jdeps -help
• IDE скоро помогут
![Page 92: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/92.jpg)
О чем я не расскажу сегодня
23
• Reflection и модули. Новый класс java.lang.reflect.Module. Видимость и рефлекшн
• Модуляризованный jar; multirelease jar
• Пакеты с одинаковыми названиями и внезапные NoClassDefFoundException
• Layers - новая абстракция над classloaders
• Инструментарий для модуляризации кода
• <java9_jigsaw>/bin/jdeps -help
• IDE скоро помогут
• Циркулярные зависимости между модулями через загрузчики модулей и как их избежать
![Page 93: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/93.jpg)
(Мои) Выводы про модули в Java 9
24
![Page 94: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/94.jpg)
(Мои) Выводы про модули в Java 9• Цель - явное обязательное указание зависимостей
24
![Page 95: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/95.jpg)
(Мои) Выводы про модули в Java 9• Цель - явное обязательное указание зависимостей
• Пересечение с OSGi незначительное
24
![Page 96: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/96.jpg)
(Мои) Выводы про модули в Java 9• Цель - явное обязательное указание зависимостей
• Пересечение с OSGi незначительное
• Предоставляет новые возможности по оптимизации
24
![Page 97: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/97.jpg)
(Мои) Выводы про модули в Java 9• Цель - явное обязательное указание зависимостей
• Пересечение с OSGi незначительное
• Предоставляет новые возможности по оптимизации
• Сохранена совместимость с jar/cp (именные м., безымянный м., автомодули)
24
![Page 98: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/98.jpg)
(Мои) Выводы про модули в Java 9• Цель - явное обязательное указание зависимостей
• Пересечение с OSGi незначительное
• Предоставляет новые возможности по оптимизации
• Сохранена совместимость с jar/cp (именные м., безымянный м., автомодули)
• jigsaw теряет функциональность на пути к финалу
• поддержка версий была еще весной 2015, осталась лишь декларация
24
![Page 99: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/99.jpg)
(Мои) Выводы про модули в Java 9• Цель - явное обязательное указание зависимостей
• Пересечение с OSGi незначительное
• Предоставляет новые возможности по оптимизации
• Сохранена совместимость с jar/cp (именные м., безымянный м., автомодули)
• jigsaw теряет функциональность на пути к финалу
• поддержка версий была еще весной 2015, осталась лишь декларация
• IDEs учатся работать с модулями24
![Page 100: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/100.jpg)
Jigsaw - статус, ссылки
25
![Page 101: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/101.jpg)
Jigsaw - статус, ссылки• Работа продолжается
25
![Page 102: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/102.jpg)
Jigsaw - статус, ссылки• Работа продолжается
• Статья о текущем состоянии (Сентябрь 2015)
• http://openjdk.java.net/projects/jigsaw/spec/sotms/
25
![Page 103: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/103.jpg)
Jigsaw - статус, ссылки• Работа продолжается
• Статья о текущем состоянии (Сентябрь 2015)
• http://openjdk.java.net/projects/jigsaw/spec/sotms/
• Доклады с JavaOne (октябрь 2015)
• http://openjdk.java.net/projects/jigsaw/j1/
25
![Page 104: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/104.jpg)
Jigsaw - статус, ссылки• Работа продолжается
• Статья о текущем состоянии (Сентябрь 2015)
• http://openjdk.java.net/projects/jigsaw/spec/sotms/
• Доклады с JavaOne (октябрь 2015)
• http://openjdk.java.net/projects/jigsaw/j1/
• Код не залит в основной репозиторий, а находится в репозитории Jake
• http://hg.openjdk.java.net/jigsaw/jake/
25
![Page 105: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/105.jpg)
Jigsaw - статус, ссылки• Работа продолжается
• Статья о текущем состоянии (Сентябрь 2015)
• http://openjdk.java.net/projects/jigsaw/spec/sotms/
• Доклады с JavaOne (октябрь 2015)
• http://openjdk.java.net/projects/jigsaw/j1/
• Код не залит в основной репозиторий, а находится в репозитории Jake
• http://hg.openjdk.java.net/jigsaw/jake/
• А также: http://blog.codefx.org/java/dev/features-project-jigsaw-java-9/25
![Page 106: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/106.jpg)
JShell
26
![Page 107: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/107.jpg)
JShell• Развивается в рамках проекта Kulla
• http://openjdk.java.net/projects/kulla/
26
![Page 108: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/108.jpg)
JShell• Развивается в рамках проекта Kulla
• http://openjdk.java.net/projects/kulla/
• Интегрирован в openjdk9/dev b90
26
![Page 109: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/109.jpg)
JShell• Развивается в рамках проекта Kulla
• http://openjdk.java.net/projects/kulla/
• Интегрирован в openjdk9/dev b90
• Позволяет попробовать синтаксис без написания законченной программы
26
![Page 110: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/110.jpg)
JShell• Развивается в рамках проекта Kulla
• http://openjdk.java.net/projects/kulla/
• Интегрирован в openjdk9/dev b90
• Позволяет попробовать синтаксис без написания законченной программы
• Помогает обучать языку Java
26
![Page 111: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/111.jpg)
JShell• Развивается в рамках проекта Kulla
• http://openjdk.java.net/projects/kulla/
• Интегрирован в openjdk9/dev b90
• Позволяет попробовать синтаксис без написания законченной программы
• Помогает обучать языку Javaclass HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
26
![Page 112: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/112.jpg)
JShell• Развивается в рамках проекта Kulla
• http://openjdk.java.net/projects/kulla/
• Интегрирован в openjdk9/dev b90
• Позволяет попробовать синтаксис без написания законченной программы
• Помогает обучать языку Javaclass HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
26
![Page 113: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/113.jpg)
Kulla…
27
![Page 114: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/114.jpg)
Кулла?
28
![Page 115: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/115.jpg)
Кулла?
28
![Page 116: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/116.jpg)
Kulla?
29
![Page 117: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/117.jpg)
Kulla?
29
![Page 118: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/118.jpg)
Jshell Demo
30
![Page 119: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/119.jpg)
JShell - примеры
31
![Page 120: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/120.jpg)
JShell - примеры> ./images/jdk/bin/jshell
-> String s=new String("hello");
| Added variable s of type String with initial value “hello”
-> new String("hello");
| Expression value is: "hello"
| assigned to temporary variable $1 of type String
-> System.out.println($1);
h
-> ello
-> System.out.println("Не имей 100 \u20BD, а имей 1 \u00A3 или 32 \u20B4"); System.out.flush();
Не имей 100 ₽, а имей 1 £ или 32 ₴31
![Page 121: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/121.jpg)
Garbage First включен по умолчанию
32
![Page 122: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/122.jpg)
Garbage First включен по умолчанию• Плюсы
• Самый современный GC в HotSpot (хоть и разрабатывается уже 10+ лет)
• Региональный параллельный одновременный коллектор
• Нацелен быть лучшим во всем - Предсказуемые паузы и высокая производительность!
• По умолчанию => Больше пользовательская база => Ошибки находятся быстрее => G1 будет доведен до ума очень быстро
32
![Page 123: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/123.jpg)
Garbage First включен по умолчанию• Плюсы
• Самый современный GC в HotSpot (хоть и разрабатывается уже 10+ лет)
• Региональный параллельный одновременный коллектор
• Нацелен быть лучшим во всем - Предсказуемые паузы и высокая производительность!
• По умолчанию => Больше пользовательская база => Ошибки находятся быстрее => G1 будет доведен до ума очень быстро
• Минусы
• Эргономика работает по-другому. Могут проявиться ошибки в синхронизации в вашем или библиотечном коде
32
![Page 124: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/124.jpg)
Garbage First включен по умолчанию• Плюсы
• Самый современный GC в HotSpot (хоть и разрабатывается уже 10+ лет)
• Региональный параллельный одновременный коллектор
• Нацелен быть лучшим во всем - Предсказуемые паузы и высокая производительность!
• По умолчанию => Больше пользовательская база => Ошибки находятся быстрее => G1 будет доведен до ума очень быстро
• Минусы
• Эргономика работает по-другому. Могут проявиться ошибки в синхронизации в вашем или библиотечном коде
• Жирные минусы
• Есть несовместимости с G1 в Cassandra, Elasticsearch, Lucene, и т.п,. А вы уверены в библиотеках, которые используете?
• Источник (датировано июлем 2015): https://groups.google.com/forum/#!topic/mechanical-sympathy/JxsuVtIIOaY
32
![Page 125: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/125.jpg)
Как пережить смену default GC, не теряя сон
33
![Page 126: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/126.jpg)
Как пережить смену default GC, не теряя сон• Если до сих пор вас устраивали настройки GC по умолчанию
• запаситесь данными эргономики для вашего приложения и среды внедрения
• пропишите явным образом флаги настройки GC в деплоймент скриптах
33
![Page 127: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/127.jpg)
Как пережить смену default GC, не теряя сон• Если до сих пор вас устраивали настройки GC по умолчанию
• запаситесь данными эргономики для вашего приложения и среды внедрения
• пропишите явным образом флаги настройки GC в деплоймент скриптах
• Если вы и ранее явно выбирали GC и флаги GC
• Ничего не изменится, старые коллекторы не исчезнут
33
![Page 128: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/128.jpg)
Как пережить смену default GC, не теряя сон• Если до сих пор вас устраивали настройки GC по умолчанию
• запаситесь данными эргономики для вашего приложения и среды внедрения
• пропишите явным образом флаги настройки GC в деплоймент скриптах
• Если вы и ранее явно выбирали GC и флаги GC
• Ничего не изменится, старые коллекторы не исчезнут
• В обоих случаях - экспериментируйте с G1
33
![Page 129: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/129.jpg)
Как пережить смену default GC, не теряя сон• Если до сих пор вас устраивали настройки GC по умолчанию
• запаситесь данными эргономики для вашего приложения и среды внедрения
• пропишите явным образом флаги настройки GC в деплоймент скриптах
• Если вы и ранее явно выбирали GC и флаги GC
• Ничего не изменится, старые коллекторы не исчезнут
• В обоих случаях - экспериментируйте с G1
• Главное - понимать основные принципы работы GC
• Прежде всего - метрики, которыми оценивают алгоритмы GC
• Что еще почитать: http://www.infoq.com/minibooks/java-garbage-collection33
![Page 130: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/130.jpg)
Обновления языка - Milling Project Coin• Приватные методы в интерфейсах
interface I { private void foo(String s); // Error: private method must declare body. private abstract void foo(int i, int j); // Error: private & abstract: bad combo void foo(int x); // OK. private I foo() { return null; } // OK. }
34
![Page 131: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/131.jpg)
Обновления языка - Milling Project Coin
• Effectively-final переменные могут использоваться в try-with-resources выражениях
35
public static void main(String... args) throws …{ FileReader f = new FileReader(“test.txt”); br =new BufferedReader(fr); try (br) { // do something } catch (Exception ex) { } }
public static void main(String... args) throws …{ FileReader f = new FileReader(“test.txt"); try (br =new BufferedReader(fr)) { // do something } catch (Exception ex) { } }
![Page 132: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/132.jpg)
Обновления языка - Milling Project Coin
• Использование @SafeVarargs в private методах
class VarargsFinalOnly { @SafeVarargs void m(List<String>... args) { } }
36
![Page 133: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/133.jpg)
Обновления языка - Milling Project Coin• Использование diamond с анонимными классами при возможности определения типа, который подразумевается под diamond
37
interface I {} class C {} class B extends C implements I {}
class Test <T extends C & I>{ class A <T>{ public A(T b) { } } public void foo(){ A a = new Test<>().new A<>(new B()){} ; } }
error: cannot infer type arguments for Test.A<> A a = new Test<>().new A<>(new B()){} ; reason: type argument INT#1 inferred for Test.A<> is not allowed in this context inferred argument is not expressible in the Signature attribute where INT#1 is an intersection type: INT#1 extends C,I
![Page 134: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/134.jpg)
Обновления языка - Milling Project Coin• Запрет на использование _ из всех имен типов, констант и т.п.
38
// key: compiler.warn.underscore.as.identifier // options: -source 8 -Xlint:-options
class UnderscoreAsIdentifierWarning { String _ = null; }
![Page 135: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/135.jpg)
Currency API
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 136: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/136.jpg)
Currency API• JSR 354: Money and Currency API
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 137: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/137.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 138: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/138.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
• Специальное форматирование (например INR 12,23,123.34)
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 139: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/139.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
• Специальное форматирование (например INR 12,23,123.34)
• thread safe format classes
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 140: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/140.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
• Специальное форматирование (например INR 12,23,123.34)
• thread safe format classes
• новая абстракция для финансовой арифметики (чтобы не использовать BigDecimal)
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 141: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/141.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
• Специальное форматирование (например INR 12,23,123.34)
• thread safe format classes
• новая абстракция для финансовой арифметики (чтобы не использовать BigDecimal)
• валюты не в ISO стандарте (виртуальные, из истории, придуманные)
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 142: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/142.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
• Специальное форматирование (например INR 12,23,123.34)
• thread safe format classes
• новая абстракция для финансовой арифметики (чтобы не использовать BigDecimal)
• валюты не в ISO стандарте (виртуальные, из истории, придуманные)
• API для конвертации валют Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 143: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/143.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
• Специальное форматирование (например INR 12,23,123.34)
• thread safe format classes
• новая абстракция для финансовой арифметики (чтобы не использовать BigDecimal)
• валюты не в ISO стандарте (виртуальные, из истории, придуманные)
• API для конвертации валют
• ExchangeRate providers
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API39
![Page 144: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/144.jpg)
Currency API• JSR 354: Money and Currency API
• Функциональность включает:
• Специальное форматирование (например INR 12,23,123.34)
• thread safe format classes
• новая абстракция для финансовой арифметики (чтобы не использовать BigDecimal)
• валюты не в ISO стандарте (виртуальные, из истории, придуманные)
• API для конвертации валют
• ExchangeRate providers
Источники: https://github.com/JavaMoney/jsr354-api http://javamoney.java.net http://www.infoq.com/articles/ JSR-354-Java-Money-Currency-API
Collection<CurrencyUnit> currencies = Monetary.getCurrencies (CurrencyQueryBuilder.of().set ("continent", "Europe").set (Year.of(2015)).build());
39
![Page 145: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/145.jpg)
Обновление Process API
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 40
![Page 146: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/146.jpg)
Обновление Process API• JEP 102: Process API Updates
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 40
![Page 147: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/147.jpg)
Обновление Process API• JEP 102: Process API Updates
• Новое:
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 40
![Page 148: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/148.jpg)
Обновление Process API• JEP 102: Process API Updates
• Новое:
• Получить pid “своей” JVM
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 40
![Page 149: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/149.jpg)
Обновление Process API• JEP 102: Process API Updates
• Новое:
• Получить pid “своей” JVM
• Получить список процессов системы
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 40
![Page 150: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/150.jpg)
Обновление Process API• JEP 102: Process API Updates
• Новое:
• Получить pid “своей” JVM
• Получить список процессов системы
• Работа с деревьями процессов
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 40
![Page 151: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/151.jpg)
Обновление Process API• JEP 102: Process API Updates
• Новое:
• Получить pid “своей” JVM
• Получить список процессов системы
• Работа с деревьями процессов
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/
Process proc = Runtime.getRuntime() .exec(new String[]{ "/bin/sh", “-c", "echo $PPID" }); if (proc.waitFor() == 0) { InputStream in = proc.getInputStream(); int available = in.available(); byte[] outputBytes = new byte[available]; in.read(outputBytes); String pid = new String(outputBytes); System.out.println("Your pid is " + pid) }
40
![Page 152: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/152.jpg)
Обновление Process API• JEP 102: Process API Updates
• Новое:
• Получить pid “своей” JVM
• Получить список процессов системы
• Работа с деревьями процессов
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/
Process proc = Runtime.getRuntime() .exec(new String[]{ "/bin/sh", “-c", "echo $PPID" }); if (proc.waitFor() == 0) { InputStream in = proc.getInputStream(); int available = in.available(); byte[] outputBytes = new byte[available]; in.read(outputBytes); String pid = new String(outputBytes); System.out.println("Your pid is " + pid) }
System.out.println("Your pid is " + ProcessHandle.current().getPid());
40
![Page 153: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/153.jpg)
Обзор JEP-ов. Что уберут?
41
![Page 154: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/154.jpg)
Обзор JEP-ов. Что уберут?• 231: Remove Launch-Time JRE Version Selection
41
![Page 155: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/155.jpg)
Обзор JEP-ов. Что уберут?• 231: Remove Launch-Time JRE Version Selection
• 240: Remove the JVM TI hprof Agent
41
![Page 156: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/156.jpg)
Обзор JEP-ов. Что уберут?• 231: Remove Launch-Time JRE Version Selection
• 240: Remove the JVM TI hprof Agent
• 241: Remove the jhat Tool———————————
41
![Page 157: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/157.jpg)
Обзор JEP-ов. Что уберут?• 231: Remove Launch-Time JRE Version Selection
• 240: Remove the JVM TI hprof Agent
• 241: Remove the jhat Tool———————————
• Последствия подулярности (JEP - 261)
• -Xbootclasspath & -Xbootclasspath/p
• system property sun.boot.class.path
41
![Page 158: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/158.jpg)
Обзор JEP-ов. Что уберут?• 231: Remove Launch-Time JRE Version Selection
• 240: Remove the JVM TI hprof Agent
• 241: Remove the jhat Tool———————————
• Последствия подулярности (JEP - 261)
• -Xbootclasspath & -Xbootclasspath/p
• system property sun.boot.class.path
41
![Page 159: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/159.jpg)
Обзор JEP-ов. Ключевые API
42
![Page 160: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/160.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
42
![Page 161: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/161.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
42
![Page 162: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/162.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
• 230: Microbenchmark Suite
42
![Page 163: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/163.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
• 230: Microbenchmark Suite
• 193: Variable Handles (?)
42
![Page 164: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/164.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
• 230: Microbenchmark Suite
• 193: Variable Handles (?)
• 227: Unicode 7.0
42
![Page 165: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/165.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
• 230: Microbenchmark Suite
• 193: Variable Handles (?)
• 227: Unicode 7.0
42
![Page 166: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/166.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
• 230: Microbenchmark Suite
• 193: Variable Handles (?)
• 227: Unicode 7.0 & 267: Unicode 8.0
42
![Page 167: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/167.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
• 230: Microbenchmark Suite
• 193: Variable Handles (?)
• 227: Unicode 7.0 & 267: Unicode 8.0
42
![Page 168: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/168.jpg)
Обзор JEP-ов. Ключевые API
• 261, 162, 200, 201, 220, 260, 261 Модули и модулярность.
• 102: Process API Updates
• 230: Microbenchmark Suite
• 193: Variable Handles (?)
• 227: Unicode 7.0 & 267: Unicode 8.0
42
![Page 169: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/169.jpg)
Обзор JEP-ов. Графика
43
![Page 170: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/170.jpg)
Обзор JEP-ов. Графика• 258: HarfBuzz Font-Layout Engine
43
![Page 171: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/171.jpg)
Обзор JEP-ов. Графика• 258: HarfBuzz Font-Layout Engine
• 263: HiDPI Graphics on Windows and Linux
43
![Page 172: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/172.jpg)
Обзор JEP-ов. Графика• 258: HarfBuzz Font-Layout Engine
• 263: HiDPI Graphics on Windows and Linux
• 265: Marlin Graphics Renderer
43
![Page 173: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/173.jpg)
Обзор JEP-ов. Графика• 258: HarfBuzz Font-Layout Engine
• 263: HiDPI Graphics on Windows and Linux
• 265: Marlin Graphics Renderer
• 262: TIFF Image I/O
43
![Page 174: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/174.jpg)
Обзор JEP-ов. Графика• 258: HarfBuzz Font-Layout Engine
• 263: HiDPI Graphics on Windows and Linux
• 265: Marlin Graphics Renderer
• 262: TIFF Image I/O
• 257: Update JavaFX/Media to Newer Version of GStreamer (1.4.4)
43
![Page 175: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/175.jpg)
Обзор JEP-ов. Графика• 258: HarfBuzz Font-Layout Engine
• 263: HiDPI Graphics on Windows and Linux
• 265: Marlin Graphics Renderer
• 262: TIFF Image I/O
• 257: Update JavaFX/Media to Newer Version of GStreamer (1.4.4)
• 251: Multi-Resolution Images
43
![Page 176: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/176.jpg)
Обзор JEP-ов. Производительность
44
![Page 177: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/177.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
44
![Page 178: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/178.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
• 266: More Concurrency Updates
44
![Page 179: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/179.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
• 266: More Concurrency Updates
• 197: Segmented Code Cache
44
![Page 180: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/180.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
• 266: More Concurrency Updates
• 197: Segmented Code Cache
• 165: Compiler Control
44
![Page 181: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/181.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
• 266: More Concurrency Updates
• 197: Segmented Code Cache
• 165: Compiler Control
• 243: Java-Level JVM Compiler Interface
44
![Page 182: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/182.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
• 266: More Concurrency Updates
• 197: Segmented Code Cache
• 165: Compiler Control
• 243: Java-Level JVM Compiler Interface
• 246: Leverage CPU Instructions for GHASH and RSA
44
![Page 183: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/183.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
• 266: More Concurrency Updates
• 197: Segmented Code Cache
• 165: Compiler Control
• 243: Java-Level JVM Compiler Interface
• 246: Leverage CPU Instructions for GHASH and RSA
• 250: Store Interned Strings in CDS Archives
44
![Page 184: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/184.jpg)
Обзор JEP-ов. Производительность
• 143: Improve Contended Locking
• 266: More Concurrency Updates
• 197: Segmented Code Cache
• 165: Compiler Control
• 243: Java-Level JVM Compiler Interface
• 246: Leverage CPU Instructions for GHASH and RSA
• 250: Store Interned Strings in CDS Archives
• 254: Compact Strings
44
![Page 185: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/185.jpg)
Обзор JEP-ов. Безопасность
45
![Page 186: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/186.jpg)
Обзор JEP-ов. Безопасность
• 219: Datagram Transport Layer Security (DTLS)
• 229: Create PKCS12 Keystores by Default
• 244: TLS Application-Layer Protocol Negotiation Extension
• 249: OCSP Stapling for TLS
45
![Page 187: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/187.jpg)
Про Azul Systems
46
![Page 188: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/188.jpg)
Про Azul Systems• Zing: A better JVM for the enterprise
• Azul’s innovative Java runtime for business applications• Certified Java SE builds• Removes GC as a factor in your operation• Supports large in-memory data stores• Solves Java’s “warm-up” problem• Runs on distros of RHEL, Ubuntu, SLES and CentOS
46
![Page 189: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/189.jpg)
Про Azul Systems• Zing: A better JVM for the enterprise
• Azul’s innovative Java runtime for business applications• Certified Java SE builds• Removes GC as a factor in your operation• Supports large in-memory data stores• Solves Java’s “warm-up” problem• Runs on distros of RHEL, Ubuntu, SLES and CentOS
•Zulu: Java when all you need is Support • Free and Open Source (based on OpenJDK)• Certified Java SE builds• Runs on Windows, Linux & Mac• Performance parity with Oracle Hotspot• Optional customized “embedded” offerings
46
![Page 190: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/190.jpg)
47
Заключение
47
![Page 191: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/191.jpg)
Спасибо
Время вопросов и ответов
@JohnWings
48
![Page 192: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/192.jpg)
49
Backup слайды@SafeVarargs
![Page 193: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/193.jpg)
49
Backup слайды@SafeVarargs
@SafeVarargs // Not actually safe!
static void m(List<String>... stringLists) {
Object[] array = stringLists;
List<Integer> tmpList = Arrays.asList(42);
array[0] = tmpList; // Semantically invalid, but compiles without warnings
String s = stringLists[0].get(0); // Oh no, ClassCastException at runtime!
}
![Page 194: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/194.jpg)
JEP process
50
Source: http://cr.openjdk.java.net/~mr/jep/jep-2.0-02.html
![Page 195: What to expect from Java 9](https://reader034.vdocuments.net/reader034/viewer/2022051520/589fe1b51a28abf3238b5003/html5/thumbnails/195.jpg)
that’s it
51