1

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java в движении
Алексей Фёдоров
Software Engineer, Oracle,
JCK, Java Platform Group
jug.msk, Москва
02.12.2013
«А ты кто такой?»
Software Engineer
– Cначала были военные,
– потом legacy systems на Java EE
– С 2011 года в Oracle: JCK Team
 Community driver: JUG.ru, CodeFreeze
 Conferences: Jpoint, Joker
 Peopleware advocate
 ФМЛ 239, СПбГУ, к.ф.-м.н.

@23derevo, http://about.me/alexey.fyodorov
3

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Agenda

Java Platform Updates
Java Platform Tradeoffs

4

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Часть 1.
Java Platform Updates

5

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
The following is intended to outline our
general product direction. It is intended for
information purposes only, and may not be
incorporated into any contract.
It is not a commitment to deliver any material,
code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for
Oracle’s products remains at the sole
discretion of Oracle.
6

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
С чем работает Java-приложение?

My Javaapplication

7

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
С чем работает Java-приложение?
JDK
My Javaapplication

8

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
С чем работает Java-приложение?
JDK

Frameworks

My Javaapplication

9

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
С чем работает Java-приложение?
JDK

Frameworks

My Javaapplication

OS
10

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
С чем работает Java-приложение?
JDK

Frameworks

My Javaapplication

Hardware
11

OS

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
С чем работает Java-приложение?
JDK

Frameworks

My Javaapplication

Hardware
12

OS

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Как исправлять баги

App
Frameworks

JDK
OS
Hardware
13

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Обновления
 Минимизируйте время на обновление

Вашего приложения
 Библиотеки
 ОС
Железо

14

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Обновления
 Минимизируйте время на обновление

Вашего приложения
 Библиотеки
 ОС
Железо

15

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Обновления Java
Типы обновлений:

–Release update :7u17 → 7u21
–Major update: Java 7 → Java 8

16

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Обновления Java
Типы обновлений:

–Release update :7u17 → 7u21
–Major update: Java 7 → Java 8

17

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …

18

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
–7u8 ?
–7u9, 7u10, 7u11…

19

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
–7u8 ?
–7u9, 7u10, 7u11…
–7u12?

20

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
–7u8 ?
–7u9, 7u10, 7u11…
–7u12?
7u13, 7u15, 7u17 …

21

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
–7u8 ?
–7u9, 7u10, 7u11…
–7u12?
7u13, 7u15, 7u17 …
–7u19 ?

22

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
–7u8 ?
–7u9, 7u10, 7u11…
–7u12?
7u13, 7u15, 7u17 …
–7u19 ?

7u21, 7u25
23

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
–7u8 ?
–7u9, 7u10, 7u11…
–7u12?
7u13, 7u15, 7u17 …
–7u19 ?

7u21, 7u25
–7u29?
24

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
–7u8 ?
–7u9, 7u10, 7u11…
–7u12?
7u13, 7u15, 7u17 …
–7u19 ?

7u21, 7u25
–7u29?
25

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
26

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Номера обновлений в JDK 7
 Раз в два месяца

Чётные
– Исправление ошибок
– Новая функциональность
 Нечётные
– Исправление ошибок

– Обновления системы безопасности
 CPU = ?

27

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Номера обновлений в JDK 7
 Раз в два месяца

Чётные
– Исправление ошибок
– Новая функциональность
 Нечётные
– Исправление ошибок

– Обновления системы безопасности
 CPU = Critical Patch Update

28

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Номера обновлений в JDK 7
Функциональность
–7u40, 7u60, 7u80
–8, 8u20, 8u40

29

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Номера обновлений в JDK 7
Функциональность
–7u40, 7u60, 7u80
–8, 8u20, 8u40

Безопасность
–7u45, 7u51, 7u55, 7u61

30

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Номера обновлений в JDK 7
Функциональность
–7u40, 7u60, 7u80
–8, 8u20, 8u40

Безопасность
–7u45, 7u51, 7u55, 7u61

–Exploit?

31

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Номера обновлений в JDK 7
Функциональность
–7u40, 7u60, 7u80
–8, 8u20, 8u40

Безопасность
–7u45, 7u51, 7u55, 7u61

–Exploit?
Emergency Releases!

(7u47, 7u49, 7u53, 7u57 etc.)
32

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Нечётные обновления –
Security Baseline Updates
Любой патч, закрывающий какие-либо
уязвимости в JDK 7 должен быть
портирован в JDK 6 и все остальные
поддерживаемые версии

33

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Нечётные обновления –
Security Baseline Updates

34

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Чётные обновления: Feature Updates
JDK 7 Update 40 Highlights (пример)
 Olson Data 2013d
 Java Mission Control (JMC) 5.2
 JavaFX 2.2.40
 Serviceability Agent support for ARM
 Retina Display support on Mac OS X
 Deployment Rule Set
 Option to disable "JRE out of date" warning
35

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Чётные обновления: Feature Updates
JDK 7 Update 40 Highlights (продолж.)
 New Security Warnings for Unsigned and
Self-Signed Applications
JAXP Security Improvements
 Security Baselines не изменились!

36

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Другие технологии
Java SE:
 Standalone Technologies: JAXP, JAXB,
JNLP, JAX-WS (Везде своя нумерация!)
 IANA Time Zone Database (aka Olson Data)
 New platforms: Mac OS X, Windows 8.1 etc.
 New HotSpot VM: new GC, new –XX options
Not Java SE:

37

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Правило Joe Darcy

Не бывает стопроцентно
совместимых изменений!

38

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Протокол взаимодействия
API spec
(aka Javadoc)

JLS8

JSR 337

Standalone
documents
39

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

JVMS
8
Спецификация платформы
Спецификация платформы Java –

это протокол!
– Версия! (Java SE 6, 7, 8)
Протокол нельзя менять часто!

40

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Протокол SMTP
Тысячи серверов
Тысячи клиентов
тысячи + тысячи = тысячи

Timeline
1982 – RFC 821
2001 – RFC 2821
2008 – RFC 5321
41

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java
Миллионы Java-приложений
Тысячи реализаций Java

миллионы + тысячи = миллионы
Timeline

1996 – JDK 1.0

1997 – J2SE 1.1

2004 – J2SE 5.0

1998 – J2SE 1.2

2006 – Java SE 6

2000 – J2SE 1.3
42

2002 – J2SE 1.4

2011 – Java SE 7

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Как управлять изменениями в Java
OpenJDK / Oracle JDK
 JDK QA
Community
 Java-программисты по всему миру

43

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java от других вендоров
 Процедура сертифицикации
 Java Compatibility Kit (JCK)
 Сотни тысяч тестов
 Feedback от лицензиатов

44

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Как мы управляем изменениями?
 Специальные процессы и процедуры

Множественное ревью на предмет

Сompatibility, Security, Performance etc.
– Tracking, Accepting / Rejecting
– Проверяются изменения
 В спецификации
 В реализации
 JCP + OpenJDK
45

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Какие изменения допустимы?
Предлагаемое изменение
Добавить что-нибудь в Public API
(пакет / класс / метод / поле)
Удалить что-нибудь из Public API

Update Major
release
+

-

-*

Добавить что-нибудь в Private API

+

+

Удалить что-нибудь из Private API

+**

+

Изменить спецификацию чего-нибудь

-

+**

Исправить ошибку (несоответствие
+**,***
поведения требуемому в спецификации)

+

* - @Deprecated, @Override ** - проанализировать риски
*** - см. следующий слайд
46

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Adding null key to empty TreeMap
without Comparator should throw NPE
JDK-5045147

47

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

JDK-2188127
«Давайте разрешим
менять спецификацию чаще!»
 Кто начнёт сходить с ума?
– Пользователи
– Инженеры Java Platform
– Лицензиаты Java

Совместимость может нарушаться!
– см. следующий слайд

48

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Совместимость может нарушаться!
Compatibility:
– binary
– source
– Behavioral
 Bug-2-Bug

Incompatibilities
– between Java SE 7 and Java SE 6
– between JDK 7 and JDK 6
– Java SE 7 and JDK 7 Compatibility
49

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Наши инструменты (TCK Tools)
Проверяются изменения в сигнатурах
 SigTest - http://sigtest.java.net/
– JDK – Public API
 Жёсткие правила для Major Releases
 Очень жёсткие правила для Updates
– NetBeans – Plugin API: полегчало!
 Разметка спецификации и привязка тестов
– SpecTrac / SpecDiff
 http://jcp.org/en/resources/tdk
50

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Выход Java 8 передвинут на март
 http://mreinhold.org/blog/secure-the-train
– Люди не берутся из ниоткуда

– Добавляя людей в конце проекта, сроки

не уменьшить
– Какие рассматривались варианты?
 Выкинуть Lambda
 Выпустить в срок с сыроватыми Lambda
 Подвинуть на полгода
 http://openjdk.java.net/projects/jdk8/
51

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Что в итоге
 Обновление платформы, используемой

сотнями миллионов людей –
это очень сложный процесс!
 Разные политики обновления для
Major Releases (Java 7 → Java 8) и для
Updates (7uXX)
– Отслеживание/Управление изменениями
– Специальные процессы
– Review изменений разными командами
– Инструменты: SpecTrac, SigTest и другие
52

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Компромиссы в обновлении
платформы Java
Инженерное искусство – это искусство
компромисса!
A trade-off (or tradeoff) is a situation that
involves losing one quality or aspect of
something in return for gaining another
quality or aspect.

53

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java Platform Tradeoffs
 Cкорость выхода новых версий vs. Качество
 Cкорость vs. частота выпуска CPU

Совместимость vs. Развитие
 И так далее
– Подробности после перерыва!

54

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java Platform Updates

Q&A
55

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Часть 2.
Java Platform Tradeoffs

56

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Agenda
Частота выхода апдейтов
 Фикс багов ломает совместимость
 История про Substring
 Совместимость как груз тянущий вниз
 История о неизвестных отцах
 История о четырёх аккумуляторах
 GUI: Нативный или универсальный?
 История про Beep

Как быть хитрому лицензиату?
57

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 1
Апдейты: часто или редко?

58

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Обновления Java и политика

59

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
60

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 2
Исправление багов
или совместимость?

61

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Adding null key to empty TreeMap
without Comparator should throw NPE
JDK-5045147

62

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

JDK-2188127
Adding null key to empty TreeMap
without Comparator should throw NPE
JDK-5045147

63

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

JDK-2188127
Сюжет 3
String.substring()

64

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
65

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
66

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
67

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Since JDK
7u6
68

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Performance vs. Memory

69

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 4
Совместимость или новые фичи?

70

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
71

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
72

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 5
Неизвестные отцы

73

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
74

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
75

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
76

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
77

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 6
История о четырёх аккумуляторах

78

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
79

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
80

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
81

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Утекающий Striped64
Варианты решения:
 Делегирование вместо наследования
 Дупликация кода
Кодогенерация в билде JDK

82

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Утекающий Striped64
Варианты решения:
 Делегирование вместо наследования
 Дупликация кода
Кодогенерация в билде JDK
 Serialization Proxy

83

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сериализация
Implements Serializable
 Есть в любой JDK
Гибкая
– writeObject, readObject, readObjectNoData
– writeReplace, readResolve
– Externalizable
 Легко использовать
Много лет, мало багов
84

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 7
GUI: Нативный или универсальный?

85

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
86

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 7
Toolkit.beep()

87

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
88

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7

89

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java 7

Java 8

90

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Сюжет 8
История о хитром лицензиате

91

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
92

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Выводы
 Большинство tradeoff’ов связаны с

совместимостью
– в том или ином её смысле
 Имеющиеся риски трудно оценивать
 Разные риски в update releases
и в major updates
 Java двигается в Embedded
– Больше различий в поведении

93

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Q&A
94

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Мои контакты
@23derevo
alexey.x.fedorov@oracle.com
fyodorov.spbu@gmail.com
Skype: fyodorov.spbu

http://about.me/alexey.fyodorov

95

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

More Related Content

PDF
Процесс изменения платформы Java
PDF
Новое поколение серверов SPARC
PDF
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...
PPTX
Кирил Кірєєв “Особливості розробки hardware продукту” Lviv Project Managemen...
PPTX
Location shots
PPTX
Renovación y crisis. exposicon de politica educativa. Mónica
PDF
Nota de Prensa 022-2015-DREM.M
Процесс изменения платформы Java
Новое поколение серверов SPARC
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...
Кирил Кірєєв “Особливості розробки hardware продукту” Lviv Project Managemen...
Location shots
Renovación y crisis. exposicon de politica educativa. Mónica
Nota de Prensa 022-2015-DREM.M

Viewers also liked (17)

DOCX
Cuestionario cop
PPT
Los arribes del duero
PPTX
SSAC Exec Summary 2014 2015
PDF
Módulo 2 informática 2015
PDF
CHECK MARK FLYER FREE STUFF
DOC
Resume2015-V1
PDF
50 Anos do Código Florestal - Paulo Sérgio
PPTX
Presentación11
PDF
Tabela copinha ouro
PDF
Beraldi luciana tcc
PDF
Anexo ii portaria-n°-0511
PDF
Regulamento técnico de suíço
PDF
Calendario 2012 2
PPT
Orden bipolar (1)
PPT
Apresentação1
PDF
360_presentation
PDF
REGULAMENTO GERAL - OURO-SC
Cuestionario cop
Los arribes del duero
SSAC Exec Summary 2014 2015
Módulo 2 informática 2015
CHECK MARK FLYER FREE STUFF
Resume2015-V1
50 Anos do Código Florestal - Paulo Sérgio
Presentación11
Tabela copinha ouro
Beraldi luciana tcc
Anexo ii portaria-n°-0511
Regulamento técnico de suíço
Calendario 2012 2
Orden bipolar (1)
Apresentação1
360_presentation
REGULAMENTO GERAL - OURO-SC
Ad

Similar to Java in Motion (20)

PDF
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...
PPT
0. hello java world
ODP
Java: вчера, сегодня, завтра
PDF
What to expect from Java 9
PDF
лекция 01 прогр на java (тсн) - введение в java
ODP
Java 9 - кратко о новом
ODP
Java 9 - Back to the Future
PPTX
Programming Java - Lection 01 - Basics - Lavrentyev Fedor
PPTX
Dz Java Hi Load 0.4
PPTX
Java 9 модули
PDF
Java осень 2014 занятие 1
PDF
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
PPTX
Что такое Java? Кто такой Java разработчик?
PDF
01 - Java. Введение в Java
PPT
1. java lecture intro
PDF
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
PDF
Занимательные истории из жизни технической поддержки JVM
PPTX
PDF
Разговор про Java 9. Extended version
PDF
Глава1: Обзор технологии Java
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...
0. hello java world
Java: вчера, сегодня, завтра
What to expect from Java 9
лекция 01 прогр на java (тсн) - введение в java
Java 9 - кратко о новом
Java 9 - Back to the Future
Programming Java - Lection 01 - Basics - Lavrentyev Fedor
Dz Java Hi Load 0.4
Java 9 модули
Java осень 2014 занятие 1
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Что такое Java? Кто такой Java разработчик?
01 - Java. Введение в Java
1. java lecture intro
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Занимательные истории из жизни технической поддержки JVM
Разговор про Java 9. Extended version
Глава1: Обзор технологии Java
Ad

More from Alexey Fyodorov (14)

PDF
Non-blocking Michael-Scott queue algorithm
PDF
How threads help each other
PDF
Помоги ближнему, или Как потоки помогают друг другу
PDF
Counter Wars (JEEConf 2016)
PDF
Non-blocking synchronization — what is it and why we (don't?) need it
PDF
Синхронизация без блокировок и СМС
PDF
Unsafe: to be or to be removed?
PDF
Общество Мертвых Потоков
PDF
JDK: CPU, PSU, LU, FR — WTF?!
PDF
Atomics, CAS and Nonblocking algorithms
PDF
Philosophers
PDF
Java Platform Tradeoffs (Riga 2013)
PDF
Java Platform Tradeoffs (CEE SECR 2013)
PPTX
Java: how to thrive in the changing world
Non-blocking Michael-Scott queue algorithm
How threads help each other
Помоги ближнему, или Как потоки помогают друг другу
Counter Wars (JEEConf 2016)
Non-blocking synchronization — what is it and why we (don't?) need it
Синхронизация без блокировок и СМС
Unsafe: to be or to be removed?
Общество Мертвых Потоков
JDK: CPU, PSU, LU, FR — WTF?!
Atomics, CAS and Nonblocking algorithms
Philosophers
Java Platform Tradeoffs (Riga 2013)
Java Platform Tradeoffs (CEE SECR 2013)
Java: how to thrive in the changing world

Java in Motion

  • 1. 1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 2. Java в движении Алексей Фёдоров Software Engineer, Oracle, JCK, Java Platform Group jug.msk, Москва 02.12.2013
  • 3. «А ты кто такой?» Software Engineer – Cначала были военные, – потом legacy systems на Java EE – С 2011 года в Oracle: JCK Team  Community driver: JUG.ru, CodeFreeze  Conferences: Jpoint, Joker  Peopleware advocate  ФМЛ 239, СПбГУ, к.ф.-м.н. @23derevo, http://about.me/alexey.fyodorov 3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 4. Agenda Java Platform Updates Java Platform Tradeoffs 4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 5. Часть 1. Java Platform Updates 5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 6. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 7. С чем работает Java-приложение? My Javaapplication 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 8. С чем работает Java-приложение? JDK My Javaapplication 8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 9. С чем работает Java-приложение? JDK Frameworks My Javaapplication 9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 10. С чем работает Java-приложение? JDK Frameworks My Javaapplication OS 10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 11. С чем работает Java-приложение? JDK Frameworks My Javaapplication Hardware 11 OS Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 12. С чем работает Java-приложение? JDK Frameworks My Javaapplication Hardware 12 OS Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 13. Как исправлять баги App Frameworks JDK OS Hardware 13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 14. Обновления  Минимизируйте время на обновление Вашего приложения  Библиотеки  ОС Железо 14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 15. Обновления  Минимизируйте время на обновление Вашего приложения  Библиотеки  ОС Железо 15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 16. Обновления Java Типы обновлений: –Release update :7u17 → 7u21 –Major update: Java 7 → Java 8 16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 17. Обновления Java Типы обновлений: –Release update :7u17 → 7u21 –Major update: Java 7 → Java 8 17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 18. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … 18 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 19. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … –7u8 ? –7u9, 7u10, 7u11… 19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 20. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … –7u8 ? –7u9, 7u10, 7u11… –7u12? 20 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 21. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … –7u8 ? –7u9, 7u10, 7u11… –7u12? 7u13, 7u15, 7u17 … 21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 22. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … –7u8 ? –7u9, 7u10, 7u11… –7u12? 7u13, 7u15, 7u17 … –7u19 ? 22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 23. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … –7u8 ? –7u9, 7u10, 7u11… –7u12? 7u13, 7u15, 7u17 … –7u19 ? 7u21, 7u25 23 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 24. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … –7u8 ? –7u9, 7u10, 7u11… –7u12? 7u13, 7u15, 7u17 … –7u19 ? 7u21, 7u25 –7u29? 24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 25. Java 7 Updates versioning 7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 … –7u8 ? –7u9, 7u10, 7u11… –7u12? 7u13, 7u15, 7u17 … –7u19 ? 7u21, 7u25 –7u29? 25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 26. 26 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 27. Номера обновлений в JDK 7  Раз в два месяца Чётные – Исправление ошибок – Новая функциональность  Нечётные – Исправление ошибок – Обновления системы безопасности  CPU = ? 27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 28. Номера обновлений в JDK 7  Раз в два месяца Чётные – Исправление ошибок – Новая функциональность  Нечётные – Исправление ошибок – Обновления системы безопасности  CPU = Critical Patch Update 28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 29. Номера обновлений в JDK 7 Функциональность –7u40, 7u60, 7u80 –8, 8u20, 8u40 29 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 30. Номера обновлений в JDK 7 Функциональность –7u40, 7u60, 7u80 –8, 8u20, 8u40 Безопасность –7u45, 7u51, 7u55, 7u61 30 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 31. Номера обновлений в JDK 7 Функциональность –7u40, 7u60, 7u80 –8, 8u20, 8u40 Безопасность –7u45, 7u51, 7u55, 7u61 –Exploit? 31 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 32. Номера обновлений в JDK 7 Функциональность –7u40, 7u60, 7u80 –8, 8u20, 8u40 Безопасность –7u45, 7u51, 7u55, 7u61 –Exploit? Emergency Releases! (7u47, 7u49, 7u53, 7u57 etc.) 32 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 33. Нечётные обновления – Security Baseline Updates Любой патч, закрывающий какие-либо уязвимости в JDK 7 должен быть портирован в JDK 6 и все остальные поддерживаемые версии 33 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 34. Нечётные обновления – Security Baseline Updates 34 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 35. Чётные обновления: Feature Updates JDK 7 Update 40 Highlights (пример)  Olson Data 2013d  Java Mission Control (JMC) 5.2  JavaFX 2.2.40  Serviceability Agent support for ARM  Retina Display support on Mac OS X  Deployment Rule Set  Option to disable "JRE out of date" warning 35 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 36. Чётные обновления: Feature Updates JDK 7 Update 40 Highlights (продолж.)  New Security Warnings for Unsigned and Self-Signed Applications JAXP Security Improvements  Security Baselines не изменились! 36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 37. Другие технологии Java SE:  Standalone Technologies: JAXP, JAXB, JNLP, JAX-WS (Везде своя нумерация!)  IANA Time Zone Database (aka Olson Data)  New platforms: Mac OS X, Windows 8.1 etc.  New HotSpot VM: new GC, new –XX options Not Java SE: 37 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 38. Правило Joe Darcy Не бывает стопроцентно совместимых изменений! 38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 39. Протокол взаимодействия API spec (aka Javadoc) JLS8 JSR 337 Standalone documents 39 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. JVMS 8
  • 40. Спецификация платформы Спецификация платформы Java – это протокол! – Версия! (Java SE 6, 7, 8) Протокол нельзя менять часто! 40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 41. Протокол SMTP Тысячи серверов Тысячи клиентов тысячи + тысячи = тысячи Timeline 1982 – RFC 821 2001 – RFC 2821 2008 – RFC 5321 41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 42. Java Миллионы Java-приложений Тысячи реализаций Java миллионы + тысячи = миллионы Timeline 1996 – JDK 1.0 1997 – J2SE 1.1 2004 – J2SE 5.0 1998 – J2SE 1.2 2006 – Java SE 6 2000 – J2SE 1.3 42 2002 – J2SE 1.4 2011 – Java SE 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 43. Как управлять изменениями в Java OpenJDK / Oracle JDK  JDK QA Community  Java-программисты по всему миру 43 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 44. Java от других вендоров  Процедура сертифицикации  Java Compatibility Kit (JCK)  Сотни тысяч тестов  Feedback от лицензиатов 44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 45. Как мы управляем изменениями?  Специальные процессы и процедуры Множественное ревью на предмет Сompatibility, Security, Performance etc. – Tracking, Accepting / Rejecting – Проверяются изменения  В спецификации  В реализации  JCP + OpenJDK 45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 46. Какие изменения допустимы? Предлагаемое изменение Добавить что-нибудь в Public API (пакет / класс / метод / поле) Удалить что-нибудь из Public API Update Major release + - -* Добавить что-нибудь в Private API + + Удалить что-нибудь из Private API +** + Изменить спецификацию чего-нибудь - +** Исправить ошибку (несоответствие +**,*** поведения требуемому в спецификации) + * - @Deprecated, @Override ** - проанализировать риски *** - см. следующий слайд 46 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 47. Adding null key to empty TreeMap without Comparator should throw NPE JDK-5045147 47 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. JDK-2188127
  • 48. «Давайте разрешим менять спецификацию чаще!»  Кто начнёт сходить с ума? – Пользователи – Инженеры Java Platform – Лицензиаты Java Совместимость может нарушаться! – см. следующий слайд 48 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 49. Совместимость может нарушаться! Compatibility: – binary – source – Behavioral  Bug-2-Bug Incompatibilities – between Java SE 7 and Java SE 6 – between JDK 7 and JDK 6 – Java SE 7 and JDK 7 Compatibility 49 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 50. Наши инструменты (TCK Tools) Проверяются изменения в сигнатурах  SigTest - http://sigtest.java.net/ – JDK – Public API  Жёсткие правила для Major Releases  Очень жёсткие правила для Updates – NetBeans – Plugin API: полегчало!  Разметка спецификации и привязка тестов – SpecTrac / SpecDiff  http://jcp.org/en/resources/tdk 50 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 51. Выход Java 8 передвинут на март  http://mreinhold.org/blog/secure-the-train – Люди не берутся из ниоткуда – Добавляя людей в конце проекта, сроки не уменьшить – Какие рассматривались варианты?  Выкинуть Lambda  Выпустить в срок с сыроватыми Lambda  Подвинуть на полгода  http://openjdk.java.net/projects/jdk8/ 51 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 52. Что в итоге  Обновление платформы, используемой сотнями миллионов людей – это очень сложный процесс!  Разные политики обновления для Major Releases (Java 7 → Java 8) и для Updates (7uXX) – Отслеживание/Управление изменениями – Специальные процессы – Review изменений разными командами – Инструменты: SpecTrac, SigTest и другие 52 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 53. Компромиссы в обновлении платформы Java Инженерное искусство – это искусство компромисса! A trade-off (or tradeoff) is a situation that involves losing one quality or aspect of something in return for gaining another quality or aspect. 53 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 54. Java Platform Tradeoffs  Cкорость выхода новых версий vs. Качество  Cкорость vs. частота выпуска CPU Совместимость vs. Развитие  И так далее – Подробности после перерыва! 54 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 55. Java Platform Updates Q&A 55 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 56. Часть 2. Java Platform Tradeoffs 56 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 57. Agenda Частота выхода апдейтов  Фикс багов ломает совместимость  История про Substring  Совместимость как груз тянущий вниз  История о неизвестных отцах  История о четырёх аккумуляторах  GUI: Нативный или универсальный?  История про Beep Как быть хитрому лицензиату? 57 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 58. Сюжет 1 Апдейты: часто или редко? 58 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 59. Обновления Java и политика 59 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 60. 60 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 61. Сюжет 2 Исправление багов или совместимость? 61 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 62. Adding null key to empty TreeMap without Comparator should throw NPE JDK-5045147 62 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. JDK-2188127
  • 63. Adding null key to empty TreeMap without Comparator should throw NPE JDK-5045147 63 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. JDK-2188127
  • 64. Сюжет 3 String.substring() 64 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 65. 65 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 66. 66 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 67. 67 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 68. Since JDK 7u6 68 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 69. Performance vs. Memory 69 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 70. Сюжет 4 Совместимость или новые фичи? 70 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 71. 71 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 72. 72 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 73. Сюжет 5 Неизвестные отцы 73 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 74. 74 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 75. 75 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 76. 76 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 77. 77 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 78. Сюжет 6 История о четырёх аккумуляторах 78 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 79. 79 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 80. 80 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 81. 81 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 82. Утекающий Striped64 Варианты решения:  Делегирование вместо наследования  Дупликация кода Кодогенерация в билде JDK 82 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 83. Утекающий Striped64 Варианты решения:  Делегирование вместо наследования  Дупликация кода Кодогенерация в билде JDK  Serialization Proxy 83 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 84. Сериализация Implements Serializable  Есть в любой JDK Гибкая – writeObject, readObject, readObjectNoData – writeReplace, readResolve – Externalizable  Легко использовать Много лет, мало багов 84 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 85. Сюжет 7 GUI: Нативный или универсальный? 85 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 86. 86 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 87. Сюжет 7 Toolkit.beep() 87 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 88. 88 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 89. Java 7 89 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 90. Java 7 Java 8 90 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 91. Сюжет 8 История о хитром лицензиате 91 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 92. 92 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 93. Выводы  Большинство tradeoff’ов связаны с совместимостью – в том или ином её смысле  Имеющиеся риски трудно оценивать  Разные риски в update releases и в major updates  Java двигается в Embedded – Больше различий в поведении 93 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 94. Q&A 94 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.