Процесс изменения платформы Java

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

description

Слайды с моего выступления на JEEConf 2013 в Киеве

Transcript of Процесс изменения платформы Java

Page 1: Процесс изменения платформы Java

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

Page 2: Процесс изменения платформы Java

Процесс изменений платформы Java

Алексей Фёдоров

Software Engineer, Oracle,

JCK, Java Platform Group

JEEConf 2013, Киев,

24 апреля 2013 года

Page 3: Процесс изменения платформы Java

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

Page 4: Процесс изменения платформы Java

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.

Page 5: Процесс изменения платформы Java

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.

Page 6: Процесс изменения платформы Java

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

С чем работает Java-приложение?

Ваше Java-

приложение

Page 7: Процесс изменения платформы Java

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

С чем работает Java-приложение?

JDK

Hardware

Frameworks

OS

Ваше Java-

приложение

Page 8: Процесс изменения платформы Java

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

С чем работает Java-приложение?

JDK

Hardware

Frameworks

OS

Ваше Java-

приложение

Page 9: Процесс изменения платформы Java

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

Как исправлять баги

OS

JDK

Frameworks

App

Hardware

Page 10: Процесс изменения платформы Java

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

Обновления

Минимизируйте время на обновление

Вашего приложения

Библиотеки

ОС

Железо

Page 11: Процесс изменения платформы Java

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

Обновления

Минимизируйте время на обновление

Вашего приложения

Библиотеки

ОС

Железо

Page 12: Процесс изменения платформы Java

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

Обновления Java

Типы обновлений:

– Release update

7u17 → 7u21

– Major platform update:

Java 7 → Java 8

Page 13: Процесс изменения платформы Java

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

Обновления Java

Типы обновлений:

– Release update

7u17 → 7u21

– Major platform update:

Java 7 → Java 8

Радикальное «обновление»: смена поставщика

Page 14: Процесс изменения платформы Java

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

Обновления Java и политика

https://twitter.com/navalny/status/326243610418884610

Алексей Навальный, 22 апреля 2013 года

Page 15: Процесс изменения платформы Java

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

Java 7 Updates versioning

7, 7u1, 7u2, 7u3, 7u4, 7u5, 7u6, 7u7 …

Page 16: Процесс изменения платформы Java

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?

Page 17: Процесс изменения платформы Java

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 …

Page 18: Процесс изменения платформы Java

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 ?

Page 19: Процесс изменения платформы Java

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 !

Page 20: Процесс изменения платформы Java

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 !

Page 21: Процесс изменения платформы Java

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

Номера обновлений в JDK 7

Раз в два месяца

Чётные

– Исправление ошибок

– Новая функциональность

Нечётные

– Исправление ошибок

– Обновления системы безопасности (CPU)

CPU = Critical Patch Update

Page 22: Процесс изменения платформы Java

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

Нечётные обновления – Security Baseline Updates

Патч, закрывающий любую уязвимость в JDK 7 должен

быть портирован в JDK 6 и все более ранние

Page 23: Процесс изменения платформы Java

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

Нечётные обновления – Security Baseline Updates

Патч, закрывающий любую уязвимость в JDK 7 должен

быть портирован в JDK 6 и все более ранние

Начальный план: обновлять трижды в год

Page 24: Процесс изменения платформы Java

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

О пропавшем апдейте 7u19

7u17

7u19

– 7u19-b01

– 7u19-b02

– 7u19-b03

– …

Page 25: Процесс изменения платформы Java

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

О пропавшем апдейте 7u19

7u17

7u19

– 7u19-b01

– 7u19-b02

– 7u19-b03

– …

Exploit

Page 26: Процесс изменения платформы Java

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

О пропавшем апдейте 7u19

7u17

7u18?

7u19

– 7u19-b01

– 7u19-b02

– 7u19-b03

– …

Exploit

Page 27: Процесс изменения платформы Java

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

О пропавшем апдейте 7u19

7u17 Exploit

7u21

• 7u21-b01

• 7u21-b02

• 7u21-b03

• …

Page 28: Процесс изменения платформы Java

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

Page 29: Процесс изменения платформы Java

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

Page 30: Процесс изменения платформы Java

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

Ключевое правило

Page 31: Процесс изменения платформы Java

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

Ключевое правило

Не бывает 100%-совместимых изменений!

Page 32: Процесс изменения платформы Java

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

Протокол взаимодействия

API spec

(aka Javadoc)

JLS 8 JSR 337 JVMS

8

Standalone

documents

Спецификация конкретной

версии платформы Java

играет роль протокола!

Page 33: Процесс изменения платформы 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

Page 34: Процесс изменения платформы Java

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

Как управлять изменениями в Java

OpenJDK / Oracle JDK

JDK QA

Community

Java-программисты по

всему миру

Page 35: Процесс изменения платформы 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 от лицензиатов

Page 36: Процесс изменения платформы Java

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

Как мы управляем изменениями?

Специальные процессы, процедуры и политики

– Множественное ревью на предмет Сompatibility,

Security, Performance etc.

– Tracking

– Accepting / Rejecting

– Проверяются изменения

В спецификации

В реализации

JCP + OpenJDK

Page 37: Процесс изменения платформы Java

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

Какие изменения допустимы?

Предлагаемое изменение Update Major release

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

(пакет / класс / метод / поле)- +

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

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

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

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

Исправить ошибку (несоответствие

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

* - @Deprecated, @Override

** - проанализировать риски

*** - см. следующий слайд

Page 38: Процесс изменения платформы Java

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

Page 39: Процесс изменения платформы Java

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

Page 40: Процесс изменения платформы Java

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

Page 41: Процесс изменения платформы Java

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/

Page 42: Процесс изменения платформы Java

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

Что в итоге

Обновление платформы, используемой сотнями

миллионов людей– это очень сложный процесс!

Разные политики обновления для Major Releases

(Java 7 → Java 8) и для Updates (7uXX)

– Отслеживание/Управление изменениями

– Специальные процессы

– Review изменений разными командами

– Инструменты: SpecTrac, SigTest и другие

Page 43: Процесс изменения платформы Java

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

Что в итоге

Обновление платформы, используемой сотнями

миллионов людей– это очень сложный процесс!

Разные политики обновления для Major Releases

(Java 7 → Java 8) и для Updates (7uXX)

– Отслеживание/Управление изменениями

– Специальные процессы

– Review изменений разными командами

– Инструменты: SpecTrac, SigTest и другие

Мы заботимся об экосистеме Java!

Page 44: Процесс изменения платформы 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.

Page 45: Процесс изменения платформы Java

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.

Page 46: Процесс изменения платформы Java

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.

Page 47: Процесс изменения платформы Java

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.

Page 48: Процесс изменения платформы Java

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

Вопросы и ответы

Алексей Фёдоров

Software Engineer, Oracle, JCK Team, Java Platform Group

[email protected] @23derevo

Page 49: Процесс изменения платформы Java

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

Спасибо!

Алексей Фёдоров

Software Engineer, Oracle, JCK Team, Java Platform Group

[email protected] @23derevo

Page 50: Процесс изменения платформы Java

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