Александр Белокрылов — Создавая дистрибутив OpenJDK

3fc5b5eb32bd3b48d7810fd67b37f9a1?s=47 Moscow JUG
February 14, 2019

Александр Белокрылов — Создавая дистрибутив OpenJDK

3fc5b5eb32bd3b48d7810fd67b37f9a1?s=128

Moscow JUG

February 14, 2019
Tweet

Transcript

  1. 1 WWW.BELL-SW.COM 1 WWW.BELL-SW.COM Alexander Belokrylov @gigabel Создавая дистрибутив OpenJDK

  2. 2 WWW.BELL-SW.COM 2 WWW.BELL-SW.COM 20 years of history Strong foundation

    1997 MCST – Moscow Center of SPARC Technologies The company worked as a contractor for Sun Microsystems 2004 Sun Microsystems founded its own Development Center in Saint-Petersburg. 2010 Oracle Corp. acquired Sun Microsystems 2017
  3. 3 WWW.BELL-SW.COM 3 WWW.BELL-SW.COM We contribute to ARM x86 SPARC

    Open-source contributions Win
  4. 4 WWW.BELL-SW.COM 4 WWW.BELL-SW.COM

  5. 5 WWW.BELL-SW.COM 5 WWW.BELL-SW.COM Oracle

  6. 6 WWW.BELL-SW.COM 6 WWW.BELL-SW.COM Зачем делать собственный бинарный дистрибутив OpenJDK?

  7. 7 WWW.BELL-SW.COM 7 WWW.BELL-SW.COM Liberica JDK итория 2017 ARM64 Binary

    ARM32 Binary Linux x86 64-bit, Windows x86 64-bit Docker with Alpine glibc MacOS, Solaris SPARC 2019 2018 Oracle объявил о прекращении поддержки ARM после JDK8 Oracle объявил об изменениях в Java 11 и окончании поддержки Java 8 Installers for Mac, Win, Linux Linux x86 32-bit Windows x86, 32-bit Docker with Alpine musl libc
  8. 8 WWW.BELL-SW.COM 8 WWW.BELL-SW.COM • Необходимо «Железо» для сборки и

    тестирования • Это дорого и бессмысленно • Виртуальное окружение не может100 % гарантировать достоверность тестов измерений производительности • Решение в гибридной инфраструктуре: локальные и виртуальные серверы • Поддержка Liberica JDK требует нескольких сотен серверов и инстансов Мудро подходи к выбору платформ
  9. 9 WWW.BELL-SW.COM 9 WWW.BELL-SW.COM Компиляторы и Тулчейн It's not rocket

    science
  10. 10 WWW.BELL-SW.COM 10 WWW.BELL-SW.COM • Компиляторы из Linux не всегда

    приводят к желаемым результатам • Сначала строим «Правильные» компиляторы • Использование «Правильных» компиляторов дает преимущества • Oracle & BellSoft works on moving to gcc 8. – Meltdown and Spectre – Стабильность – Производительность Компиляторы и Тулчейн
  11. 11 WWW.BELL-SW.COM 11 WWW.BELL-SW.COM А что если компилятор «Правильный», а

    все равно не собирается?
  12. 12 WWW.BELL-SW.COM 12 WWW.BELL-SW.COM Что делать, чтобы починить билд? Захачить

    билд систему и выложить с гордостью на GitHub. Починить OpenJDK билд процесс и залить в upstream
  13. 13 WWW.BELL-SW.COM 13 WWW.BELL-SW.COM Что делать, чтобы починить билд? Починить

    OpenJDK билд процесс и залить в upstream
  14. 14 WWW.BELL-SW.COM 14 WWW.BELL-SW.COM Собралось! Тестируем.

  15. 15 WWW.BELL-SW.COM 15 WWW.BELL-SW.COM Все работает! В продакшен!

  16. 16 WWW.BELL-SW.COM 16 WWW.BELL-SW.COM Откуда столько ненависти у пользователей? .

  17. 17 WWW.BELL-SW.COM 17 WWW.BELL-SW.COM • TCK это: – 500 инженеров

    × лет – 300 страниц документации – 200K+ тестов • TCK Верификация бинарного дистрибутива гарантирует соответствие зонтичной спецификации Java SE и JSR соответствующих версий TCK – гарантирует соответствие стандарту Java SE
  18. 18 WWW.BELL-SW.COM 18 WWW.BELL-SW.COM Хорошо бы пройти TCK? Необходимо!

  19. 19 WWW.BELL-SW.COM 19 WWW.BELL-SW.COM TCK всегда проходит, если мы собрали

    OpenJDK правильно? Неверно!
  20. 20 WWW.BELL-SW.COM 20 WWW.BELL-SW.COM • Баги обнаруженные TCK – java

    -XX:+UseCompactStrings – Win32 VM test (регрессионные тесты прошли) • Любая из платформ в зоне риска • Что делать, при обнаружении проблем? Fix OpenJDK TCK верификация важнейший шаг в тестировании
  21. 21 WWW.BELL-SW.COM 21 WWW.BELL-SW.COM Совместимость, как беременность. Нельзя быть почти

    совместимым Только 100% TCK
  22. 22 WWW.BELL-SW.COM 22 WWW.BELL-SW.COM 100% TCK пройден! Ну теперь-то в

    продакшен?
  23. 23 WWW.BELL-SW.COM 23 WWW.BELL-SW.COM • jtreg regression test harness –

    20K + тестов разработано с 1997 – Должны проходить 100% тестов, без exception list – Иногда оно случается • Один из JTreg тестов падает в 1% запусков • И что делать? • Fix OpenJDK Регрессионное тестирование
  24. 24 WWW.BELL-SW.COM 24 WWW.BELL-SW.COM • jcstress – Java concurrency stress

    tests – JVM – Class libraries – Hardware • В качестве пользы, информация о поведении рантайма на конкретной платформе Java Concurrency Stress tests
  25. 25 WWW.BELL-SW.COM 25 WWW.BELL-SW.COM • Индустриальный стандарт – SPECjvm –

    SPECjbb • Microbenchmarks Бенчмарки ARM vs Intel Статья Алексея Войтылова в Java Magazine
  26. 26 WWW.BELL-SW.COM 26 WWW.BELL-SW.COM • Java приложения с их тестами

    – Hadoop - HiBench и функциональные тесты – Все хорошо, пока все хорошо – А если нет? Не понятно где проблема. • Тестирование с помощью приложений хорошее дополнение, но не может быть основным критерием качества Кросс-чек
  27. 27 WWW.BELL-SW.COM 27 WWW.BELL-SW.COM • Возможны 1050 комбинация платформ, бинарников

    и параметров VM. • Мы бы с радостью тестировали все, но жизнь слишком коротка • Только опыт подскажет что важно А что, собственно, тестировать?
  28. 28 WWW.BELL-SW.COM 28 WWW.BELL-SW.COM • Доставляем YourJDK.tar.gz – Опять они

    недовольны. – Eclipse не работает. • Приносим счастье! – Linux пакеты – Win инсталлятор – Mac инсталлятор – SDKMAN – И Eclipse работает из коробки Готовы к доставке!
  29. 29 WWW.BELL-SW.COM 29 WWW.BELL-SW.COM Ну теперь-то мы точно готовы выпустить

    нашу суперкачественную сборку OpenJDK ! Да, но нужно помнить о 20 000 открытых багов в OpenJDK
  30. 30 WWW.BELL-SW.COM 30 WWW.BELL-SW.COM Саппорт дает защиту от редких происшествий

    в критически важных приложениях
  31. 31 WWW.BELL-SW.COM 31 WWW.BELL-SW.COM @gigabel @bellsoftware