Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

О чём молчит Joker. Рассказ-история о конференции

Anna | 3.06.2014 | нет комментариев
15 октября приятный город Санкт-Петербург посетил суперзлодей Вселенной Joker.
Нет, он никого не убил, и ни один Бэтмен не пострадал. Но его посещение, тем не менее, запомнится многим. Во-первых, это была премьера новой конференции по Java спецтехнологиям. Во-вторых, эта конференция удалась на славу, а значит, её ждёт огромное грядущее, а первая конференция – неизменно история.

image

Славная внезапность

Я выступал на конференции в качестве докладчика: организаторы обратились ко мне за два месяца до и предложили выступить, что было славной неожиданностью. Организовали ее лидеры Питерского JUG – Алексей Федоров (23derevo), Андрей Дмитриев(real_ales) и Иван Долгов (jetliner) (и еще много кто помогал). На одном из афтепати Алексей рассказал, как ему пришла идея наименования конференции: «Послушал, — говорит, — в Мариинке „Любовь к трём апельсинам“ Прокофьева, а потом длинно уснуть не мог. В голове вертелись различные её персонажи: король пик, король треф, шут. А дедлайн по доктрины новой конференции был теснее на носу. Так и появилась идея как-то обыграть тему с игральными картами. Ну а от того что Java-конференции традиционно именуются как-нибудь на букву J, то слово Joker пришло как-то само собой».

И тем больше ошеломительно, что за два месяца ребята умудрились сделать дюже порядочную программу, работая со всеми спикерами индивидуально, делая прогоны и различно помогая. Но не обошлось в программе и без курьезов: три наименования докладов начинались с “ О чём молчит …”.
Как так получилось, эта история умалчивает.

Проживание

От нашей компании Excelsior на конференции выступало два человека: я и Павел Павлов (noinline). Проходила конференция на Васильевском острове, в отеле “Прибалтийская”. Выйдя из метро, мы решили дойти до гостиницы пешком – нам показалась отличной идея прогуляться по ночному Питеру. Но пройдя метров 10-ть, мы внезапно нашли себя в городе Новосибирске: до боли знакомая советская застройка и погода точь-в-точь, как в Новосибирске. “3-я улица Строителей”, короче.

Фактически все приезжие спикеры и организаторы жили в одной отеле, и так как конференция тоже проходила в отеле, то дозволено было ходить на доклады в тапочках. И это было Диво какое-то, я в 1-й раз с таким столкнулся: просыпаешься утром, идешь завтракать, встречаешь кучу приятеля народа, общаешься, пока не начнут выгонять на обед, потом подымаешься на 2-й этаж – а вот и конференция, потом афтепати, а потом возвращаешься в гостиницу, а там афтеафтепати. Короче наобщался на программистские темы так, как никогда в жизни, даже утомился от этого в конце вусмерть!

Конференция

И поднявшись на 2-й этаж, я оказался на конференции. Встретив организаторов с опухшими глазами, я сразу осознал, кто сегодня “герои нашего времени”: без вопросов дозволено было додуматься, что команда примерно не спала последние несколько дней.
Открытие конференции осталось фактически не подмеченным, Лёша Фёдоров известил, где находятся какие залы (помеченные мастями карт – нужно же жанр выдерживать), по которым все и разошлись. В коридоре дозволено было пофотографироваться с Джокером (см. фото выше) и поиграть в древние компьютерные игры.

«Как я сотворил desktop-приложение на Java, скачанное 9 000 000 раз»

Я пошел на отчет Антона Кекса (antonkeks), автора нашумевшего доклада на JUG.ru “Как нам спасти Java”. Антон занимается на стержневой работе “кровавым энтерпрайзом» (термин, подхваченный мною на этой конференции), а в свободное от работы время делает знаменитое десктопное приложение для прослушки сетки “Angry IP scan”, которое первоначально Антон написал на С, а потом переписал на Java, чему он дюже рад.

Начался отчет с небольшого факаds_twomk!/>

Спорим, в твоем приложении есть утрата памяти?

Когда данный отчет возник на голосовании на Прогре и невзначай стал лидером, многих поразила его тема: как так, в Java как бы есть сборка мусора, и, таким образом, утраты памяти в тезисе немыслимы. Но меня эта тема нисколько не поразила: я в своей жизни столько этих утрат видел на примере наших заказчиков!

Сборщик мусора собирает только те объекты, которые недостижимы через всеобщии (статические) поля классов и со стэка вызываемых способов. И стоит вам завести глобальное поле типа хэш-таблица, начать складывать туда объекты (для кэширования, скажем) и при этом забывать эту хэш-таблицу чистить, как у вас здесь же появится утрата памяти.

Многие знаменитые Java фреймворки имеют внутренние кэши (которые Зачастую устроены как хэш-таблицы) и, не зная этого, вы можете на ровном месте получить утрату памяти. Отчет Никиты Сальникова-Терновского как раз и состоял в том, что, если вы позабудете в таком-то фреймворке вот это дёрнуть, то получите утрату (откуда вы обязаны это знать – непостижимо).

Исключительно увлекательным оказался случай с ThreadLocal. Никита утверждал, что если вы заведете глобал типа ThreadLocal в своем веб приложении, а потом это веб приложение передеплоите (без перезапуска сервера), то вы гарантировано получите утрату. Данный случай мы потом детально разобрали на афтепати с участием Лёши Шипилёва и нашли, что в реализации ThreadLocal в Java API есть баг! Потом мы нащупали пути как это полечить, и Лёша пообещал данный баг зарепортовать.

О чём молчат Heap Dump-ы

Идею этого доклада я услышал от Лёши Шипилёва еще на JavaOne в Москве. Он сказал, что утомился читать на прогре различные посты про то, как верно раскладывать поля в своих Java объектах, и что он хочет сделать отчет, как поля раскладывает HotSpot. В тезисе, любая Javа реализация оптимизирует раскладку полей в объекте из соображений выравнивания, поведения кэша процессора и минимизации размера объекта. Следственно порядок полей, тот, что вы задаете в своих классах, не значит вообще ничего: для JVM – это легко комплект полей, которые она вольна систематизировать, как ей вздумается (и на различных JVM, и даже на различных версиях одной и той же JVM – данный порядок может быть различным). Следственно нет ничего больше глупого в Java программировании, как пытаться что-то оптимизировать в порядке полей на ярусе начальных текстов. Но тогда в Москве меня поразило, как из того, что я вам здесь рассказал в 2-х предложениях, дозволено сделать целый отчет. Но Лёша совладал (не без помощи Баруха (jbaruch), правда, тот, что держал микрофон в конце доклада, когда у Лёши сдох его hands free микрофон)!

В конце позабавила реакция выходивших слушателей: «представляешь, у них там в объектах поля могут располагаться вовсе не так!» И в тот, что раз меня поразило, отчего люди с такой охотой идут слушать доклады про специфические внутренности JVM.

Афтепати

У конференции было два афтепати, один неофициальный, тот, что был в конце первого дня, и формальный: позже unconference. В 1-й день в одном углу расположились разработчики различных JVM, в ином – мастера Java EE. А посередине сидел Шура Ильин, тот, что в разгаре вечеринки завопил: «так, тут JVM хардкор, там багряный Enterprise, а я что тут делаю!».

Так как афтепати был на ином храню Невы, то тем, кто жил в отеле, необходимо было поспеть попасть туда до развода мостов. Все это делали по-различному. Я уехал достаточно рано, кто-то попал на «трёхчасовое» сведение, а некоторые и на него не поспели, и в итоге гуляли по Питеру до шести утра и возвратились в гостиницу утром. Следственно на дальнейший день на Unconference кое-кто не сумел присутствовать.

Unconference

Что такое Unconference не знал никто из тех, кто туда собирался. Намедни каждому спикерам выдали два приглашения на мероприятие: одно для себя и второе спикер мог дать любому слушателю первого дня. И безусловно же, множество спикеров позабыли про это приглашение, я, правда, в конце первого дня припомнил и кому-то вручил.

В начале Unconference Саша Белокрылов (alexbel) объявил формат: событие делится на три смысловые части: круглые столы, где обсуждаются какие-то темы – их извещают всякие желающие и за какие темы огромнее проголосуют участники, те темы и обсуждаются; lightning talks – 5 минутные доклады на всякую тему; “вбросы из зала” – в урну дозволено вбросить бумажку с любым вопросом и потом каждой оравой на эти вопросы отвечают.

Изначально, не зная точного формата мероприятия, я думал выступить с темой «Веб 3.0”, которую в прошлом году озвучил на DevDay в Новосибирске. Данный отчет по формату не лезет ни в какую конференцию, и я подумал, что для Unconference это будет в самый раз. Но к моему изумлению, отчет не подходил и к объявленному формату: отчет длится несколько огромнее чем 5 минут. Я попросил собравшихся дать мне 20 минут: было предисловие, немного кто соображал, что происходит и все согласились. Так сказать, пустили на разогрев.

Если лаконично, то идея, которую я озвучил, состоит в дальнейшем. Я хочу добавить в Java-платформу еще одну модель распространения приложений, в которой приложение прилетает из сети по частям и по запросу, и первым прилетает из сети представление (пользовательский интерфейс). То есть я хочу устроить распространение клиентских Java приложений по типу Web приложений. Но это не Java WebStart (и не апплеты), где приложение загружается из сети целиком. В моей модели приложения будут прилетать на заказчик мигом, как в вебе, при этом могут быть произвольно трудными, как на десктопе. И, что тоже немаловажно, писать такие приложения дозволено на всяких JVM-языках, от JavaScript до Scala.

В тезисе, такая спецтехнология может составить конкуренцию классическому вебу, основанному на HTML JavaScript. Она включает в себя типичный веб, при этом даёт программисту вероятности, которые веб в сегодняшнем состоянии не горазд дать и непостижимо, когда будет горазд. Следственно я ее позиционировал как Веб 3.0. Но на Joker, я окончательно осознал, что положительней эту спецтехнологию позиционировать как Десктоп 2.0, потому что веб разработчики принимают эту идею в штыки и им мне ее не продать никогда.

Позже меня выступал Gil Tene, тот, что пожаловался, что я говорил по-русски. Он еще раз напомнил, что в сборке мусора у Java есть много задач, которые на самом деле challenges и что не нужно прятать голову в песок, а нужно решать задачи.

Дальше еще была пачка докладов, из которых я немного что запомнил. А перед обедом мы разбирали “вбросы из зала”. Из запомнившегося: “Есть ли у Java техподдержка?”, “Java превращается в С ?», «Как мне закомитать фикс в OpenJDK?”, „Нужно ли в Java столько же тестов, сколько для динамических языков?”, “Можно ли статическим обзором ловить ошибки?».

Позже обеда мы собирались в кружки. Я заявил тему «Грядущее Java в RIA и Mobile”, которая успешно набрала нужное число голосов. Но, к сожалению, дискуссия переросла во флейм: в ней принял участие Виктор Полищук, один из спикеров конференции, тот, что отстаивал точку зрения, что Веб сегодня дюже отменен для написания клиентских приложений, немного того, он стремительно прогрессирует, и что Java в client-side легко не необходима. Я отстаивал прямо противоположную точку зрения: трудность задач в вебе быстро растет (на клиентской стороне), и что через некоторое время нынешними спецтехнологиями, основанными на HTML JavaScript эти задачи будет решать слишком дорого, потому что в веб-спецтехнологиях есть встроенные от рождения задачи, которые не решаются обычным путем. Потом к дискуссии подключился Саша Белокрылов, тот, что сказал, что, начиная с некоторого барьера трудности, приложения в вебе писать нецелесообразно, а вернее их делать в десктопе (чем в всеобщем-то поддержал мою точку зрения, не зная того), и Дабы иметь WORA (write once run anywhere), нужно их писать на Java. Но Витя с этим настойчиво не соглашался и на вопрос „Можно ли написать Photoshop в веб спецтехнологиях, Дабы это еще работало комфортно и стремительно?“, не задумываясь, ответил – “ Дозволено!”.

Обговаривали также mobile. Я поделился болью многих mobile разработчиков: написав приложение под одну мобильную платформу, на иную ее доводиться фактически снова переписывать. В выводе все развлекаются как могут: кто-то пишет на С, кто-то развлекается с JavaScript. И мое суждение, что как раз Java тут обязана прийти на поддержка, предоставив больше высокий ярус (по сопоставлению с С) и классную продуктивность (по сопоставлению с JavaScript). Присутствующие высказали сомнение, что Java может возникнуть на iOS, потому что там не допустим JIT (по iOS политике). На что я рассказал про Excelsior JET, тот, что может статически компилировать Java в машинный код, оставаясь при этом совместимым с Java, и что у нас есть планы сделать решение для iOS. Чем поразил собравшихся: про нас даже спикеры, как выяснилось, редко знают.

Ещё я принял участие в дискуссии про OpenJDK. Обсуждались темы, что простому бренному весьма трудно что-то закемы с JCK, ребята показали новые фишки в JCK. И вы знаете, я впервой в жизни почувствовал себя заказчиком Oracle на этой встрече! Ребята усердствуют для маленький группы заказчиков, таких как IBM, HP, SAP, и отрадно было почувствовать себя в этой компании.

Питер

В оставшееся до отлёта время мне удалось погулять по Питеру. Какой же это все-таки прекрасный город! Однозначно отменнее каких-нибудь Сан-Франциско либо Вашингтона.

В всеобщем, поездка удалась, большое спасибо организаторам!

Источник: programmingmaster.ru
Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB