Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 1
Nov 12, 2014
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
Процесс изменений платформы Java
Алексей Фёдоров
Software Engineer, Oracle,
JCK, Java Platform Group
JEEConf 2013, Киев,
24 апреля 2013 года
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3
«А ты кто такой?»
Software Engineer
– Cначала были военные,
– потом legacy systems на Java EE
– С 2011 года в Oracle: JCK Team, Java Platform Group
Community driver:
– JUG.ru, CodeFreeze, JPoint
Peopleware advocate
ФМЛ 239 (2004), СПбГУ (2009), к.ф.-м.н. (2011).
@23derevo, http://about.me/alexey.fyodorov
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4
Компромиссы в обновлении платформы Java
Java Platform Trade-offs:
– Cкорость выхода новых версий vs. качество
– Cкорость vs. частота выпуска CPU
– Совместимость vs. развитие
Инженерное искусство – это искусство компромисса!
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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5
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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6
С чем работает Java-приложение?
Ваше Java-
приложение
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7
С чем работает Java-приложение?
JDK
Hardware
Frameworks
OS
Ваше Java-
приложение
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8
С чем работает Java-приложение?
JDK
Hardware
Frameworks
OS
Ваше Java-
приложение
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9
Как исправлять баги
OS
JDK
Frameworks
App
Hardware
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10
Обновления
Минимизируйте время на обновление
Вашего приложения
Библиотеки
ОС
Железо
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11
Обновления
Минимизируйте время на обновление
Вашего приложения
Библиотеки
ОС
Железо
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12
Обновления Java
Типы обновлений:
– Release update
7u17 → 7u21
– Major platform update:
Java 7 → Java 8
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13
Обновления Java
Типы обновлений:
– Release update
7u17 → 7u21
– Major platform update:
Java 7 → Java 8
Радикальное «обновление»: смена поставщика
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14
Обновления Java и политика
https://twitter.com/navalny/status/326243610418884610
Алексей Навальный, 22 апреля 2013 года
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
– 7u8 ?
– 7u9, 7u10, 7u11…
– 7u12?
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
– 7u8 ?
– 7u9, 7u10, 7u11…
– 7u12?
7u13, 7u15, 7u17 …
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18
Java 7 Updates versioning
7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …
– 7u8 ?
– 7u9, 7u10, 7u11…
– 7u12?
7u13, 7u15, 7u17 …
– 7u19 ?
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…
– 7u12?
7u13, 7u15, 7u17 …
– 7u19 ?
– 7u21 !
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?
7u13, 7u15, 7u17 …
– 7u19 ?
– 7u21 !
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21
Номера обновлений в JDK 7
Раз в два месяца
Чётные
– Исправление ошибок
– Новая функциональность
Нечётные
– Исправление ошибок
– Обновления системы безопасности (CPU)
CPU = Critical Patch Update
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22
Нечётные обновления – Security Baseline Updates
Патч, закрывающий любую уязвимость в JDK 7 должен
быть портирован в JDK 6 и все более ранние
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23
Нечётные обновления – Security Baseline Updates
Патч, закрывающий любую уязвимость в JDK 7 должен
быть портирован в JDK 6 и все более ранние
Начальный план: обновлять трижды в год
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24
О пропавшем апдейте 7u19
7u17
7u19
– 7u19-b01
– 7u19-b02
– 7u19-b03
– …
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25
О пропавшем апдейте 7u19
7u17
7u19
– 7u19-b01
– 7u19-b02
– 7u19-b03
– …
Exploit
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26
О пропавшем апдейте 7u19
7u17
7u18?
7u19
– 7u19-b01
– 7u19-b02
– 7u19-b03
– …
Exploit
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27
О пропавшем апдейте 7u19
7u17 Exploit
7u21
• 7u21-b01
• 7u21-b02
• 7u21-b03
• …
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28
Чётные обновления – Feature Updates
Пример: Java™ SE 7 Update 4 Highlights
JDK Support for Mac OS X
New JVM (Java HotSpot Virtual Machine, version 23)
New Supported Garbage Collector: Garbage First (G1)
JavaFX 2.1 Runtime co-installs with JRE 7
during auto-update
JAXP upgraded to 1.4.6
Java DB upgraded to 10.8.2.2
SPARC T4 specific crypto optimizations in the security area
New flag to unlock Commercial Features
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29
Другие технологии
Java SE
– Standalone Technologies
JAXP, JAXB, JNLP, JAX-WS
– Везде своя нумерация!
– IANA Time Zone Database (aka Olson Data)
– New platform support: Mac OS X, Windows 8 etc.
– New HotSpot VM versions: new GC, new –XX options
Not Java SE
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30
Ключевое правило
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31
Ключевое правило
Не бывает 100%-совместимых изменений!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32
Протокол взаимодействия
API spec
(aka Javadoc)
JLS 8 JSR 337 JVMS
8
Standalone
documents
Спецификация конкретной
версии платформы Java
играет роль протокола!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33
Спецификация платформы Java – это протокол!
SMTP
Тысячи серверов
Тысячи клиентов
тысячи + тысячи = тысячи
Timeline
1982 – RFC 821
2001 – RFC 2821
2008 – RFC 5321
… а протокол не может меняться слишком часто
Java
Миллионы Java-приложений
Тысячи реализаций Java
миллионы + тысячи = миллионы
Timeline
1996 – JDK 1.0 2002 – J2SE 1.4
1997 – J2SE 1.1 2004 – J2SE 5.0
1998 – J2SE 1.2 2006 – Java SE 6
2000 – J2SE 1.3 2011 – Java SE 7
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34
Как управлять изменениями в Java
OpenJDK / Oracle JDK
JDK QA
Community
Java-программисты по
всему миру
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35
Как управлять изменениями в Java
OpenJDK / Oracle JDK
JDK QA
Community
Java-программисты по
всему миру
Java от других вендоров
Должна пройти процедуру
сертифицикации
Java Compatibility Kit (JCK)
Сотни тысяч тестов
Feedback от лицензиатов
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36
Как мы управляем изменениями?
Специальные процессы, процедуры и политики
– Множественное ревью на предмет Сompatibility,
Security, Performance etc.
– Tracking
– Accepting / Rejecting
– Проверяются изменения
В спецификации
В реализации
JCP + OpenJDK
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37
Какие изменения допустимы?
Предлагаемое изменение Update Major release
Добавить что-нибудь в Public API
(пакет / класс / метод / поле)- +
Удалить что-нибудь из Public API - -*
Добавить что-нибудь в Private API + +
Удалить что-нибудь из Private API +** +
Изменить спецификацию чего-нибудь - +**
Исправить ошибку (несоответствие
поведения требуемому в спецификации)+**,*** +
* - @Deprecated, @Override
** - проанализировать риски
*** - см. следующий слайд
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38
Пример
Bug 5045147 Bug 2188127
Adding null key to empty TreeMap
without Comparator should throw NPE
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39
«Давайте разрешим менять спецификацию чаще!»
Кто начнёт сходить с ума?
– Пользователи
– Инженеры Java Platform
– Лицензиаты Java
Совместимость может нарушаться!
– Java SE 7 and JDK 7 Compatibility
Compatibility: binary, source, behavioral
Incompatibilities
– between Java SE 7 and Java SE 6
– between JDK 7 and JDK 6
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40
Наши инструменты (TCK Tools)
Постоянно проверяются изменения в сигнатурах
– SigTest - http://sigtest.java.net/
JDK – Public API
– Жёсткие правила для Major Releases
– Очень жёсткие правила для Updates
NetBeans – Plugin API
– Разметка спецификации и привязка тестов
SpecTrac / SpecDiff
http://jcp.org/en/resources/tdk
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41
Выход Java 8 передвинут на март 2014 года
http://mreinhold.org/blog/secure-the-train
– Люди не берутся из ниоткуда
– Добавляя людей в конце проекта сроки не уменьшить
– Какие рассматривались варианты?
Выкинуть Lambda
Выпустить в срок с сыроватыми Lambda
Подвинуть на полгода
http://openjdk.java.net/projects/jdk8/
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42
Что в итоге
Обновление платформы, используемой сотнями
миллионов людей– это очень сложный процесс!
Разные политики обновления для Major Releases
(Java 7 → Java 8) и для Updates (7uXX)
– Отслеживание/Управление изменениями
– Специальные процессы
– Review изменений разными командами
– Инструменты: SpecTrac, SigTest и другие
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43
Что в итоге
Обновление платформы, используемой сотнями
миллионов людей– это очень сложный процесс!
Разные политики обновления для Major Releases
(Java 7 → Java 8) и для Updates (7uXX)
– Отслеживание/Управление изменениями
– Специальные процессы
– Review изменений разными командами
– Инструменты: SpecTrac, SigTest и другие
Мы заботимся об экосистеме Java!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44
Компромиссы в обновлении платформы Java
Java Platform Trade-offs:
Инженерное искусство – это искусство компромисса!
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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45
Компромиссы в обновлении платформы Java
Java Platform Trade-offs:
– Cкорость выхода новых версий vs. качество
Инженерное искусство – это искусство компромисса!
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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46
Компромиссы в обновлении платформы Java
Java Platform Trade-offs:
– Cкорость выхода новых версий vs. качество
– Cкорость vs. частота выпуска CPU
Инженерное искусство – это искусство компромисса!
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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47
Компромиссы в обновлении платформы Java
Java Platform Trade-offs:
– Cкорость выхода новых версий vs. качество
– Cкорость vs. частота выпуска CPU
– Совместимость vs. развитие
Инженерное искусство – это искусство компромисса!
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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.48
Вопросы и ответы
Алексей Фёдоров
Software Engineer, Oracle, JCK Team, Java Platform Group
[email protected] @23derevo
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.49
Спасибо!
Алексей Фёдоров
Software Engineer, Oracle, JCK Team, Java Platform Group
[email protected] @23derevo
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.50