JavaOne Russia или бенефис Куксенко с Шипилевым. Отчет о конференции

в 11:18, , рубрики: iOS, java, javafx, Разработка под android, разработка под iOS, метки: , ,

Хочу рассказать о конференции JavaOne Russia, которая проходила 23-24 апреля в Москве, с точки зрения разработчика JVM и одного из докладчиков.

image

Preconference speakers meeting

Перед конференицией 22 апреля проходил так называемый Speakers Meeting, и таким образом, для меня конференция началась с понедельника, 18-00, с метро Мякинино. Честно говоря, я ожидал, что указатели как попасть на JavaOne начнутся уже в метро, но ни в метро, ни за его пределами я их не обнаружил. На следуйщий день по этому поводу появилcя популярный твит: “Что общего между Java и JavaOne? Нет указателей!".

Speakers meeting проходил в обстановке монтажа стендов и прочих инженерных работ. Здесь, я познакомился с Григорием Лабзовским, который ждал пока подключат аппаратуру в главном зале, чтобы прогнать Keynote, а также пообщался с организаторами и другими спикерами. Перед моим уходом (в районе 19-00), аппаратуру в главном зале включили и Григорий Лабзовский радостно говорил, что “В этом году JavaOne в Москве – необычная. Она теперь больше походит на большой JavaOne в San Francisco!". На выходе мне встретились множество очаровательных девушек, которым проводили инструктаж про завтрашний день. Девушки правда украсили конференцию – милые и прекрасные!

image

JavaOne Keynote

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

И вот начало конференции! Keynote. Его начали Григорий Лабзовский, питерский начальник Java отделения Oracle, и главный по России в Oracle Валерий Лановенко. Говорили в форме интервью о том, что Java нужна Oracle, а Oracle нужен Java и что им обоим нужны Java разработчики. После этого ребята передали слово VP Java Client and Mobile Нандини Рамани (Nandini Ramani). Про то, что Java 8 передвинули на полгода из-за security, наверно уже все знают. Но неожиданно для себя узнал, что Java ME, которая с отмиранием старообрядческих телефонов, по моим представлениям должна была себя не очень чувствовать, на самом деле переживает бум. Дело в том, что сейчас пошла мода на маленькие девайсы, подключенные к интернету, так называемый Internet of Things, для всяких разных нужд, от умных домов, до умных лесов (на деревья в Бразилии вешаются датчики с GPS, и если их пилят, то об этом узнают). Этих девайсов сейчас больше, чем людей. И производители этих маленьких девайсов очень нуждаются в стандартах, и Java ME здесь как раз и приходит на помощь. Java SE Embedded тоже в тренде: очень горячий на всей конференции был топик про Java SE и JavaFX на Raspberry Pi. Конечно говорили и про Java ЕE, но для меня это темный лес и я не понял, что такого крутого в том, что появится поддержка HTML 5 и WebSockets. Позабавил Java EE консультант Реза Рахман (Reza Rahman), который появился в русско-народном наряде. Стивен Чин (Stephen Chin) показывал JavaFX на Raspberry Pi, Джим Вивер (Jim Weaver) показывал JavaFX 3D с виндового планшета – довольно прикольно.

Явление звезд народу

На перерыве появились они – звезды конференции – Алексей Шипилев и Сергей Куксенко. С Алексееем Шипилевым я до этого был знаком только заочно, через твиттер, а с Сергеем мы работали вместе 4 года – он, также как и я стоял у оснований проекта Excelsior JET, и надо сказать я его не видел с тех пор, как он ушел от нас в 2001 году. Так что было радостно увидеться снова.

Сейчас, читая зарубежные доклады про конференцию, вы не найдете упоминаний о Шипилеве и Куксенко. Однако, у меня под конец сложилось впечатление, что только они на конференции и были – поэтому я и назвал эту статью “бенефис Куксенко с Шипилевым”. Ребята на двоих сделали 6 докладов, вместе и по отдельности, практически все в большом зале на 2 тысячи человек, так что получалось, что практически каждый второй доклад кто-нибудь из них был на самом видном месте. И народ к ним ходил по полконференции! А если к ним добавить Вову Иванова и Шуру Ильина, то получится, что большой зал был практически полностью оккупирован питерцами.

И первый доклад Куксенко был про Java Memory Model. Очень полезная штука на мой взгляд с точки зрения образования – Java разработчики должны знать язык, на котором они пишут. Но я на него не пошел. Меня с некоторых пор интересует тема JavaFX. Кстати, всего было пять потоков, и в очень многих случаях приходилось разрываться, поэтому очень жаль, что доклады не записывали – некоторые я бы посмотрел на видео.

JavaFX

Тема JavaFX меня начала интересовать вот с какой точки зрения. JavaFX с некоторых пор позиционируется как дефолтный UI на Java SE Embedded. Этот UI имеет мультитач поддержку, анимацию, 3D и т.п., и вообще выглядит вполне неплохо, по-современному. И возможно вы в курсе, что его реализацию для iOS и Android на днях должны опенсорснуть, при том, что саму Java SE, пусть даже в виде OpenJDK, для iOS/Android никто в глаза не видел. Этой зимой мне попался полный боли топик на форуме Oracle, из которого мне стало очевидно, что существует большой запрос на Java на этих мобильных платформах: писать на каждую платформу отдельно – это просто боль, использовать PhoneGap или подобное – это во многих случаях курам на смех, писать на С/С++ или даже Objective C – это прошлый век, а Mono – полуработающая поделка. Кроме того мне несколько раз на конференции пожаловались, что Dalvik VM – это тоже тот еще кусок технологии. То есть при том, что на Андроиде вроде Java есть, многие бы хотели там и настоящую Java. И с зимы, я загорелся и всех внутри конторы тормошу, чтобы делать Excelsior JET для iOS/Android, потому что наша технология Java, базирующаяся на AOT компиляции Java – это то что доктор прописал для iOS. Не то, чтобы эта мысль пришла мне первому в голову и только сейчас, но как то стало очевидно, что это нужно делать немедленно.

Первый доклад по JavaFX я посмотрел Джима Вивера. Это такой дядечка за 60-ть. Он перед сессией играл в игру угадай мелодию, ставил рок 60-х (Хендрикса, Харрисона, Моррисона и т.п.) и обращался в зал “что это играет?” — порадовал. А потом рассказывал про азы JavaFX. Из его доклада меня очень впечатлило, как элегантно во весь этот фрэймворк встраивается анимация (с точки зрения API). Сам я никогда в UI анимацией не занимался (да в Свинге или SWT это довольно непросто делается, потому что в самом начале об этом не подумали), а тут это правда делается на раз. Это хорошо с точки зрения перспективы на iOS – там анимацию в UI очень любят и без нее засмеют. Потом он показывал JavaFX 3D – тоже очень элегантно. А главное, что его планшет это все дело тянул без каких либо лагов.

Далее, я слушал Стивена Чина – евангелиста JavaFX. Он рассказывал про ScalaFX. С некоторых пор нашу компанию тоже очень заинтересовала Scala. Мы даже новый наш оптимизирующий компилятор написали на Scala и организовали недавно Scala Enthusiasts Group в Новосибирске. Стив же наглядно показал как на Scala можно написать в два раза меньше букв для JavaFX кода, который и на Java выглядит весьма неплохо, а на Scala – просто песня. Весьма компактный и хорошо читаемый DSL для JavaFX получился. Кстати, замечу что на всех топиках про JavaFX кто-нибудь вставал и спрашивал, где Java для iOS.

Бенефис питерцев

А потом случился обед. И тут, как оказалось, мне очень повезло, что я спикер: нас кормили в отдельной комнате, без очередей и ажиотажа, в узкой уютной компании.

После обеда пришел Вова Иванов. Мы с ним познакомились у нас в Новосибирске на CodeFest и практически сразу подружились. Знаете, нас JVM разработчиков в мире-то не очень много, а в России и того меньше: в Питере четверо, да у нас в Новосибирске десять. И если со своими общаешься каждый день, то встретиться с разработчиками из другой JVM – это как встретиться с братьями по разуму.
Вова рассказывал про invokedynamic, но на самом деле про method handles. Я про это все слышал много раз, но у Вовы, на мой взгляд, получилось довольно доступно донести эту весьма непростую тему.

Ну а потом, собственно, бенефис Куксенко и Шипилева. Два подряд доклада про лямбды. Сначала выступал Сергей Куксенко, а Алексей Шипилев сидел, а потом наоборот. Сергей рассказывал собственно про лямбды, а Алексей про то, что поменялось из-за лямбд. В принципе, ничего особо нового из всего этого не вынес, кроме может быть прикола с сериализацией и ZAM (zero abstract methods): чтобы ваша лябмда могла быть сериализуемой ее теперь можно кастовать к (SAM & Serializable). Но мне интересно было посмотреть как ребята держатся на сцене. Держатся хорошо – держать внимание на себе полуторатысячной аудитории в течении 2 часов – это дорогого стоит.

JavaOne день второй

На следующий день я в комнате спикеров пристал к Стивену Чину и Даниелю Блаукопфу (Daniel Blaukopf) на тему JavaFX. У Стивена я спросил, а что так вяло JavaFX пиарят для RIA. На что он мне сказал, что лично он считает, что standalone self-contained инсталлятор с bundled JRE для целевой платформы – это более удачная модель распространения приложений, чем RIA. Не прошло и 15 лет. Даниель сказал, что у них уже JavaFX работает на compact1 Java SE профиле и на диске такая конфигурация (compact1 + JavaFX) занимает всего 18MB. При этом пока неизвестно, пойдут ли компактные профили для всех или только для Java SE Embedded.

Далее послушал Алексея Шипилева на тему микробенчей. Очень понравился их harness, надо будет его использовать у нас. Удивило, что было довольно много народу: неужели кроме JVM разработчиков кто-то развлекается написанием микробенчей?

Java худеет. Спроси меня как

А потом был мой доклад. Во-первых, я сразу понял, что промахнулся c названием: ко мне подошло человек 6 и спросило о чем доклад. То есть, то что Java и “толстая " – это почти синонимы — далеко не для всех. Но также надо заметить, что анонс доклада сначала таинственно не появился на сайте JavaOne, потом появился, а потом опять таинственно исчез. Поэтому узнать о чем это было довольно проблематично.

А рассказывал я о том, как можно уменьшить размер Java SE рантайма, что очень хорошо, когда вы распространяете свое приложение вместе с Java рантаймом, что как считает Стивен Чин – наилучшая модель распространения. Кроме того эта модель распространения единственно возможная для Java SE на iOS.

На сегодняшний день, кроме нашей технологии Java Runtime Slim-Down, нет легальных способов уменьшить приватный Java рантайм. Как мы это делаем, я и рассказал в докладе. К счастью многих разработчиков, в Java 8, кроме полного JRE, появятся еще и так называемые компактные профили. А Jigsaw появится только в Java 9, c помощью которого, как предполагается, Java рантайм можно еще больше кастомизировать. Могу рассказать про все это более подробно здесь на хабре, кому-нибудь интересно?

На вопросной части, спросили про компактные профили, а также про Excelsior JET, удивляясь, что статическая компиляция Java в машинный код возможна, и про то когда же мы сделаем Excelsior JET на iOS. То есть тема действительно людей живо интересует. Кто-то доказывал, что сделать Java для iOS – это возможно, приводя в пример Mono. Ну конечно возможно! Технически нет никаких проблем. И будет быстрее, чем Objective C (но немного толще все равно).

JavaOne завершение

Самый интересный доклад конференции для меня – это доклад Шипилева на тему concurrency. Ребята написали тестов на JMM и умудрились ими развалить все компиляторы, нашли баг в хардвевре, и что меня больше всего поразило, разломали Cookbook Дуга Ли по JMM, на который все Java компиляторщики мира молятся!

А закончилась для меня конференция выступлением Андрея Бреслава про Kotlin. Андрей приехал на конференцию только на свой доклад, но я успел с ним пообщаться до доклада. Говорит, что community растет, но по тону мне показалось, что он слегка устал от этой темы.

В общем и целом мне конференция понравилось. Удалось пообщаться с большим количеством людей, а ведь общение — бесценно! Единственно, мне показалось, что не удалось привести людей в состояние радостного возбуждения, чем славятся многие конференции. Может для этой задачи стоит побольше привозить мировых звезд первой величины и дать им выступить в большом зале.

Обо мне + ссылки

Я работаю в компании Excelsior и мы делаем свою JVM – Excelsior JET. Это JVM со статическим компилятором (AOT), который умеет превращать Java байт-код в обычный исполняемый файл для целевой платформы. Мало того, эта JVM написана с нуля в Новосибирске, а я один из инициаторов проекта.

Автор: pjBooms

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js