- PVSM.RU - https://www.pvsm.ru -

Никита Липский и Дмитрий Чуйко об AOT в Java на jug.msk.ru

Очередная встреча московской Java User Group [1] прошла 22 мая 2017 года традиционно в офисе компании КРОК. На ней Никита Липский и Дмитрий Чуйко рассказали о статической (Ahead-of-Time) компиляции в языке программирования Java и её реализации в продуктах компаний Excelsior и Oracle.

Никита Липский и Дмитрий Чуйко об AOT в Java на jug.msk.ru - 1 [2]

О докладчиках

Никита Липский представляет новосибирскую компанию Excelsior [3], выпускающую уникальный продукт — статический компилятор для языка Java, Excelsior JET [4]. Приложение вполне востребовано и отлично чувствует себя на рынке, этой осенью будет отмечаться уже 20 лет его существования. Никита является одним из инициаторов создания и активным участником разработки приложения.

Блог компании [5] достаточно интересен: кроме анонсов новых версий (с плагинами для Maven и Gradle) встречается описание и прочих полезных вещей вроде Git-плагина для Far Manager [6] и плагина для IntelliJ IDEA [7] (написанных программистами Excelsior). Судя по опросу [8], скоро можно ожидать что-то ещё.

Доклады Никиты, упорядоченные в хронологическом порядке:

  • «Excelsior JET: обзор возможностей» (JUG.ru-2013: презентация [9], видео [10]; с Павлом Павловым)
  • «Excelsior JET: внутренняя архитектура» (JUG.ru-2013: презентация [9], видео [11]; с Павлом Павловым)
  • «Занимательные истории из жизни техподдержки JVM» (Joker 2013: презентация [12], видео [13]; с Мишей Быковым)
  • «Ahead-of-time компиляция» (Joker 2014: презентация [14], видео [15])
  • «AOT компиляция» (JavaDay Kiev 2014: презентация [14], видео [16])
  • «Java худеет. Уменьшение размера дистрибутива Java приложения без зависимостей» (JavaDay Kiev 2014: презентация [17], видео [18])
  • «Круглый стол. Рефакторинги и технический долг» (JPoint 2015: видео [19])
  • «Круглый стол. Будущее Java-платформы» (JPoint 2015: видео [20])
  • «Клиентская Java вне браузера: делаем нативные клиенты на Java» (Joker 2015: презентация [21], видео [22])
  • «JVM: краткий курс общей анатомии» (Joker 2015 University Day: презентация [23], видео [24]; с Владимиром Парфиненко)
  • «Delivering Native User Experience in Client-Side Java Applications» (JEEConf 2015: презентация [25], видео [26])
  • «Поддержка Java 8 в Excelsior JET» (JBreak 2016: презентация [27], видео [28])
  • «Поддержка Java 8 в Excelsior JET» (JPoint 2016: презентация [27], видео [29])
  • «JVM: краткий курс общей анатомии» (JPoint 2016 Student Day: презентация [30], видео [31]; с Владимиром Ивановым)
  • «Java AOT compilation» (GeekOUT 2016: видео [32])
  • «Поддержка Java 8 на уровне JVM» (JET Conference Autumn 2016: презентация [33], видео [34])
  • «Java AOT Compilation» (JavaZone 2016: видео [35])
  • «Верификация Java байт-кода: когда, как, а может отключить?» (JPoint 2017: презентация [36], видео пока доступно только для участников конференции)
  • «JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers for Java» (Riga DevDays 2017, GeeCON 2017: презентация [37])
  • «Java 9 Модули. Почему не OSGi?» (Oracle Code 2017 Moscow: презентация [38])

Аудио с Никитой:

Для ознакомления с Excelsior JET наиболее полезны первые два доклада (совместное выступление Никиты с Павлом Павловым на JUG.ru в 2013 году).

Прочие ссылки: Хабрахабр [40], GitHub [41], Twitter [42], SlideShare [43].

Дмитрий Чуйко работает в компании Oracle, которая тоже с недавнего времени заинтересовалась статической компиляцией. Является активным докладчиком как конференций JUG.ru, так и прочих.

Доклады Дмитрия:

  • «Новинки в java.util.concurrent» (JUG.ru-2013: видео [44])
  • «Обзор нововведений в java.util.concurrent (JSR166e)» (JEEConf 2013: презентация [45], видео [46])
  • «Java Mission Control» (Java 8 Launch 2014: видео [47])
  • «Быстрая загрузка ваших классов» (JUG.ru-2015: видео [48])
  • «CompletableFuture. Хочется взять и применить» (JUG.ru-2015: видео [49])
  • «CompletableFuture уже здесь» (JPoint 2015: видео [50])
  • «Completable Future уже здесь» (JEEConf 2015: презентация [51], видео [52])
  • «Hotspot и AOT» (JBreak 2016: видео [53])
  • «Hotspot и AOT: Пришло время компилировать» (JPoint 2016: презентация [54], видео [55])
  • «Чёрная метка, StampedLock и его друзья. Как не нарушить пиратский кодекс» (JPoint 2016 Student Day: видео [56])
  • «Hotspot & AOT» (JEEConf 2016: видео [57])
  • «Ahead-of-Time компиляция для HotSpot JVM» (JUG.ru-2016: презентация [58], видео [59])
  • «Compile ahead of time. It’s fine?» (GeeCON 2017, JEEConf 2017: презентация [60])

Прочие слайды на SlideShare [61].

О докладах

Для обоих докладчиков встреча jug.msk.ru стала частью тура выступлений на конференциях. Тур Никиты начался участием его в записи выпуска 134 [39] подкаста Разбор полётов [62] (из аэропорта). Далее были Riga DevDays 2017 [63], GeeCON 2017 [64], jug.msk.ru и Oracle Code 2017 Moscow. Тур Дмитрия включал тоже GeeCON 2017 [65] и jug.msk.ru, далее JEEConf 2017 [66].

Встреча и тема, которой была посвящена встреча (AOT), вызвали большой интерес. В качестве зрителей присутствовали, по крайней мере, пять спикеров конференций, проводимых JUG.ru. Т.е. всего (с учётом Дмитрия и Никиты) была редкая возможность увидеться и пообщаться с семерыми спикерами.

Андрей Когунь вместе с Никитой (первый снимок) и дополнительно Дмитрием (второй снимок) начинает встречу.

Никита Липский и Дмитрий Чуйко об AOT в Java на jug.msk.ru - 2 [67]

Никита выступал первым. На мой взгляд, это лучший или один из лучших его докладов. Доклад продолжался два часа, что позволило ему больше рассказать и ответить на большее количество вопросов из зала. Выступление вызвало значительный интерес. Вопросы были хорошими и подчас неожиданными для докладчика [68] (например, про сравнение времени запуска приложений на SSD).

Никита Липский и Дмитрий Чуйко об AOT в Java на jug.msk.ru - 3 [69]

С выпуском JDK 9 «из коробки» появляется возможность статической компиляции, т.е. преобразования в код целевой платформы (т.н. native). Правда, пока только под Linux. O JEP 295 [70], JEP 243 [71] и компиляторе Graal [72] был рассказ Дмитрия. Доклад был логическим продолжением предыдущего его доклада, представленного ранее на встрече JUG.ru [59].

Никита Липский и Дмитрий Чуйко об AOT в Java на jug.msk.ru - 4 [73]

Как и всегда, в перерыве и после докладов желающие имели возможность пообщаться и задать вопросы на волнующие их темы. И, естественно, попить чаю с плюшками.

Автор: JUG.ru Group

Источник [74]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/256632

Ссылки в тексте:

[1] московской Java User Group: http://jug.msk.ru

[2] Image: https://habrahabr.ru/company/jugru/blog/329728/

[3] Excelsior: http://www.excelsior.ru

[4] Excelsior JET: https://www.excelsiorjet.com

[5] Блог компании: https://www.excelsior-usa.com/blog

[6] Git-плагина для Far Manager: https://www.excelsior-usa.com/blog/open-source/from-excelsior-hack-day-v-git-autocomplete-plugin-for-far-manager

[7] плагина для IntelliJ IDEA: https://www.excelsior-usa.com/blog/java/from-excelsior-hack-day-v-langlocker-plugins

[8] опросу: https://twitter.com/pjBooms/status/868142231735209985

[9] презентация: https://www.slideshare.net/nikitalipsky94/excelsior-jet-in-action

[10] видео: https://www.youtube.com/watch?v=G9Oj3e1XCRg&list=PLVe-2wcL84b8T9aw7AaAj-Kir3CKABg55

[11] видео: https://www.youtube.com/watch?v=tXDoGWGfZyw&list=PLVe-2wcL84b8T9aw7AaAj-Kir3CKABg55

[12] презентация: http://2013.jokerconf.com/presentations/03_05_lipskiy_nikita_supporttales_v12.pdf

[13] видео: https://www.youtube.com/watch?v=3lKkZtBekJU&list=PLVe-2wcL84b8g_BkXetdmDEKYK3hUGnPw

[14] презентация: https://www.slideshare.net/nikitalipsky94/java-aheadoftime-compilation

[15] видео: https://www.youtube.com/watch?v=KbbSGg-PK70&index=29&list=PLVe-2wcL84b-izaJuCD9VhEQeHCtOxp0C

[16] видео: https://www.youtube.com/watch?v=aw89H-Vv-Zs

[17] презентация: https://www.slideshare.net/nikitalipsky94/java-java

[18] видео: https://www.youtube.com/watch?v=2v3YapNH4ss

[19] видео: https://www.youtube.com/watch?v=IENCEQhmwMQ&index=15&list=PLVe-2wcL84b_xDvw7rO_qlw7OcllbHsIN

[20] видео: https://www.youtube.com/watch?v=eH_kTjpCWI0&index=22&list=PLVe-2wcL84b_xDvw7rO_qlw7OcllbHsIN

[21] презентация: https://www.slideshare.net/nikitalipsky94/java-java-54061599

[22] видео: https://www.youtube.com/watch?v=Dj3oh-mSZ4I&list=PLVe-2wcL84b8x3krxqsYHwlmfb4kb8A4n

[23] презентация: https://www.slideshare.net/nikitalipsky94/jvm-54179484

[24] видео: https://www.youtube.com/watch?v=JbLClSMRK_I&index=13&list=PLVe-2wcL84b9rmcHD9w5Az5-otb4_V5D-

[25] презентация: https://www.slideshare.net/nikitalipsky94/delivering-native-user-experience-in-client-side-java-applications

[26] видео: https://www.youtube.com/watch?list=PLYj3Bx1JM6Y6KJyi0TL3BJLRzgZJ4cWmL&v=rwRT5-lM3N4

[27] презентация: https://www.slideshare.net/nikitalipsky94/java-8-excelsior-jet

[28] видео: https://www.youtube.com/watch?v=ePsev12d9dY&list=PLVe-2wcL84b_iJvIflZu74vcyjezF6Fx9

[29] видео: https://www.youtube.com/watch?v=PiiNaLnkwUg&index=34&list=PLVe-2wcL84b-Waky1nkWVSNHPg6eOQWU9

[30] презентация: https://www.slideshare.net/nikitalipsky94/jvm-jpoint-conference-edition

[31] видео: https://www.youtube.com/watch?v=-fcj6EL9rc4&list=PLVe-2wcL84b-Q2Rs5OxSzh15DttbIhJKk

[32] видео: https://vimeo.com/170761908

[33] презентация: https://www.slideshare.net/nikitalipsky94/java-8-support-at-the-jvm-level

[34] видео: https://www.youtube.com/watch?v=TlQY8yH43tg

[35] видео: https://2016.javazone.no/program/java-aot-compilation

[36] презентация: https://www.slideshare.net/nikitalipsky94/java-74985150

[37] презентация: https://www.slideshare.net/nikitalipsky94/jit-vs-aot-unity-and-conflict-of-dynamic-and-static-compilers

[38] презентация: https://www.slideshare.net/nikitalipsky94/java-9-osgi

[39] Выпуск 134: http://razbor-poletov.com/2017/05/episode-134.html

[40] Хабрахабр: https://habrahabr.ru/users/pjBooms

[41] GitHub: https://github.com/pjBooms

[42] Twitter: https://twitter.com/pjbooms

[43] SlideShare: https://www.slideshare.net/nikitalipsky94

[44] видео: https://www.youtube.com/watch?v=aMQJnigGvfY&list=PLVe-2wcL84b8T9aw7AaAj-Kir3CKABg55

[45] презентация: https://www.slideshare.net/DmitryChuyko/talk-juc-jeeconf

[46] видео: https://www.youtube.com/watch?v=XEJ05L7YjtQ

[47] видео: https://www.youtube.com/watch?v=rKuhLvukOhs&list=PLVe-2wcL84b_hFLa4n-9exJxaS7De73Lx

[48] видео: https://www.youtube.com/watch?v=5Gr2et-spuk&list=PLVe-2wcL84b9ykOPSwpgcyLXIj1dI83uO

[49] видео: https://www.youtube.com/watch?v=hqR41XVx3kM&list=PLVe-2wcL84b9ykOPSwpgcyLXIj1dI83uO

[50] видео: https://www.youtube.com/watch?v=7101uJVoU1g&index=19&list=PLVe-2wcL84b_xDvw7rO_qlw7OcllbHsIN

[51] презентация: https://www.slideshare.net/DmitryChuyko/cf-ru

[52] видео: https://www.youtube.com/watch?list=PLYj3Bx1JM6Y6KJyi0TL3BJLRzgZJ4cWmL&v=N0EHIMh3mH4

[53] видео: https://www.youtube.com/watch?v=CkyBPTr1Hh4&list=PLVe-2wcL84b_iJvIflZu74vcyjezF6Fx9

[54] презентация: http://public.jugru.org/jpoint/2016/msk/day_1/track_4/aot_en_jpoint.pdf

[55] видео: https://www.youtube.com/watch?v=-Pa4xtR-4NU&index=6&list=PLVe-2wcL84b-Waky1nkWVSNHPg6eOQWU9

[56] видео: https://www.youtube.com/watch?v=PZh_M7o2a5E&list=PLVe-2wcL84b-Q2Rs5OxSzh15DttbIhJKk

[57] видео: https://www.youtube.com/watch?v=opENz219ShA

[58] презентация: https://www.slideshare.net/DmitryChuyko/hotspot-aot

[59] видео: https://www.youtube.com/watch?v=hRepfVJZvhY&list=PLVe-2wcL84b801EhIQQZEh5EWUf_FiIBb

[60] презентация: https://www.slideshare.net/DmitryChuyko/compile-ahead-of-time-its-fine

[61] SlideShare: https://www.slideshare.net/DmitryChuyko

[62] Разбор полётов: http://razbor-poletov.com

[63] Riga DevDays 2017: https://rigadevdays.lv/schedule/day1?sessionId=238

[64] GeeCON 2017: https://2017.geecon.org/speakers/info.html?id=229

[65] GeeCON 2017: https://2017.geecon.org/speakers/info.html?id=219

[66] JEEConf 2017: http://jeeconf.com/program/compile-ahead-of-time-its-fine

[67] Image: https://habrastorage.org/web/3f6/14d/e7a/3f614de7a22746ddbc958d7027e9ed31.jpg

[68] неожиданными для докладчика: https://twitter.com/pjBooms/status/866769058783518721

[69] Image: https://habrastorage.org/web/525/573/020/5255730206aa48e9a3d60a4a6ec32a46.jpg

[70] JEP 295: http://openjdk.java.net/jeps/295

[71] JEP 243: http://openjdk.java.net/jeps/243

[72] компиляторе Graal: https://github.com/graalvm/graal

[73] Image: https://habrastorage.org/web/c7e/801/481/c7e80148102d4516a15e686e70e9abd4.jpg

[74] Источник: https://habrahabr.ru/post/329728/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best