elizarov


Блог Романа Елизарова


Конференция Joker и свежая версия Aprof
elizarov

Во вторник, 21 Октября, я буду выступать в Санкт-Петербурге с докладом на конференции Joker. И буквально на этой неделе я снова столкнулся с темой доклада напрямую. А тема такая. Очень часто проблемы производительности реальных Java приложений под нагрузкой происходят из-за слишком большого количества генерируемого при работе мусора в памяти. Доклад называется "Почему GC съедает все моё CPU?". На нем я как раз об этом и расскажу со всеми подробностями. Акцентирую вниманеие в чем отличие в этом плане Java от других языков типа С/C++. Вот вам спойлер: неэффективный код одинаково легко написать на любом языке, но методики поиска проблем имеют свои специфики. А на Java мы пишем очень, очень большие приложения и когда они начинают тормозить, то для поиска в них узких мест без специальных инструментов не обойтись. Вот, например, на открытии торгов в одном из компонентов системы более 30% CPU уходит на сборку мусора. Как найти виновника?

Львиная доля доклада как раз будет посвящена инструменту, который мы, в Devexperts, разработали для поиска проблем с излишним мусором — Aprof. Я его уже упоминал в других докладах: в DIY Java Profiling в 2011 году он явно упоминался, а в Миллионах котировок в секунду он проскакивал, так как без контроля за выделением памяти действительно высокопроизводительную систему просто не сделать. Наконец-то я раскрою эту тему в полной мере. Расскажу как пользоваться Aprof-ом и как интерпретировать полученные результаты. Объясню как он устроен, что же именно он замеряет, как он это делает, и какой эффект на производительность целевого приложения это оказывает. Не обойду вниманием и связанные со всей этой темой фишки HotSpot — его умение выделять объекты на стеке устранять выделение памяти под объекты.

В процессе подготовки доклада я навел порядок и в исходниках самого Aprof-а. Они получили место постоянной прописки на GitHub по адресу https://github.com/devexperts/aprof (безусловно, их копия живет и в нашем корпоративном git репозитории). Обновил используемую версию ASM до 5.0.3. Теперь поддерживается Java 8. Выпустил свежий релиз Aprof. Теперь последнюю версию можно скачать с Bintray:

UPDATE: Тут читатели меня правильно поправляют, что некорректно говорить о том, что HotSpot умеет выделять объекты на стеке. Он вообще устраняет выделение памяти под объекты, если есть такая возможность.

UPDATE2: Слайды с доклада под катом.Collapse )


Истории перед Финалом Чемпионата Мира по Программированию в Екатеринбурге
elizarov

ICPC Logo В этом году 38-ой ежегодный Финал Чемпионата Мира по Программированию ACM ICPC принимает в Екатеринбурге Уральский Федеральный Университет. Так получилось, что финал проводится в России второй раз подряд, сразу после Финала 2013 года в Санкт-Петербурге. Это символ признания мировых позиций Российской школы образования программистов. Команды Российских вузов становились чемпионами мира уже 8 раз за последние 20 лет, начав участвовать в региональных соревнованиях только с 1994 года.

В далеком 1994 году, будучи студентом 1-го курса ИТМО, я собрал команду и отправился на региональные соревнования в Бухарест. Мы имели хорошие знания алгоритмов и умение программировать, успехи в личных соревнованиях. Однако, не имея опыта командной работы, мы предсказуемо провалились. На следующий год, уже подготовленными, мы заняли 1-ое место на региональных соревнования в Амстердаме и прошли в Финал. Со следующего, 1996 года, проходил уже первый финал наших собственных региональных соревнований NEERC в Санкт-Петербурге, который я возглавил с 1997 года. С тех пор команды ИТМО каждый год попадали в Финал, но пройдет еще почти десятилетие и сменится несколько поколений, бывшие участники будут становиться тренерами, прежде чем, в 2004 году, команда ИТМО, тренируемая Андреем Станкевичем, в составе Димы Павлова, Паши Маврина и Сергея Оршанского станет Чемпионом Мира по Программированию. Это время ушло на построение в ИТМО целой школы по привлечению и обучению одаренных ребят именно в области программирования. Работа с одаренными детьми начинается уже с 6-го класса в рамках ЛКШ, кружков и различных олимпиад для школьников. И работают с детьми все те же чемпионы мира и заслуженные тренеры.

Но первыми Чемпионами Мира от России в 2000 году стала команда СПбГУ, под руководством Натальи Вояковской и Максима Шафирова, в составе Николая Дурова, Андрея Лопатина и Олега Етеревского. Дуров и Лопатин повторили свой успех и в 2001 году. Это была уникальная по составу и силе команда, но, по правилам, больше двух раз в Финале участвовать нельзя. Такой двукратный успех был очень долго ни кем не повторен. Под руководством тренера Андрея Станкевича, ИТМО занимала призовые места два года подряд в 2008 и 2009 годах, но это были полностью разные по составу команды. Только в 2012 и 2013 годах Михаил Кевер и Нияз Нигматулин стали двукратными чемпионами мира подряд, при поддержке, в 2012 году, чемпиона 2009-го года, Евгения Капуна, но и этот успех нельзя на равных сравнить с достижением Дурова и Лопатина. В 2013 году к ним в команду присоединился 7-и кратный участник Международных олимпиад по информатике, обладающий 6-ю(!) Золотыми медалями с 2007 по 2012 год, первый в таблице славы участников школьных олимпиад, Гена Короткевич. Такая команда не могла не победить.

В этом году Гена, будучи еще студентом 2-го курса, делает перерыв. Не выступает, а тренируется. Поэтому определенного фаворита в соревнованиях не наблюдается. Тем увлекательней будет за ними наблюдать. Я в этом году ведущий видео-трансляции соревнований. Несмотря на то, что я был директором соревнований прошлого года и участвовал в виде-трансляции соревнований, которую организовала компания Yandex, как партнер ИТМО, это будет для меня новым опытом. Я благодарен за эту возможность партнеру УрФУ при проведении Финала 2014 года, компании СКБ Контур.

Следите за обновлениями на локальной странице Финала ICPC 2014 года. Видео-трансляция будет доступна по этой ссылке. На том же сайте можно зарегистрироваться гостем для личного присутствия. Дух предстоящих соревнований отлично показан во вводном видео под катомCollapse )


Доклад про многопоточные алгоритмы на BitByte 2014
elizarov

Через неделю после предыдущего доклада в Москве я выступил с его расширенной версией в Санкт-Петербурге, на конференции BitByte 2014. В формате "мастер класс" у меня было полтора часа на выступление. Сильно больше материала представить у меня не получилось, но, в дополнение к основным теоритическим предпосылкам, я успел затронуть вопрос построения линеаризуемых алгоритмов и основы теории алгоритмов без блокировки.

Моей задачей было заинтересовать слушателей теорией параллельного программирования и, судя по некоторым отзывам, цель была достигнута. Несколько человек, подошедших ко мне после выступления, явно хотели знать больше, и, я надеюсь, займутся самообразованием в этой области. А для сотрудников Devexperts я прочитаю в этом году целый курс из 8 лекций, в котором будет весь этот материал и много, много еще всего. Большую часть материала я возьму из курса лекций, который я читаю в ИТМО, но будет и много нового. Я подготовлю отдельную лекцию исключительно про JMM, где я подробно разберу структуру JMM и научу коллег доказывать и анализировать корректность кода по JMM. Несколько лекций будет посвящено практическим алгоритмам. В плане стоит отдельная лекция только про очереди и отдельная лекция только про хеш-таблицы. Там я не только расскажу и объясню все фундаментальные "классические" многопоточные построения на списках, но и современные достижения в области алгоритмов на массивах которые, как известно и о чем я уже писал, существенно превосходят списочные структуры по производительности на практике.

Слайды и дополнительные материалы под катомCollapse )


Развернутый комментарий про теоретико-параллельный доклад на JPoint 2014
elizarov

На доклады на конференции JPoint 2014 в Москве было выделено по 45 минут. Что можно рассказать за 45 минут из теоретического курса параллельного программирования, который, по-хорошему, занимает целый семестр? Цель моего доклада заключалась в том, чтобы дать слушателям минимально необходимую теоретическую базу, которая позволит прочитать и понять 17-у главу спецификации языка Java (JLS), которая четко регламентирует допустимое поведение многопоточных программ на Java на любой архитектуре CPU. Это значит, что программисту на Java не обязательно разбираться в подробностях и деталях реализации кэшей, протоколов когерентности, параллелизма на уровне инструкций, специальных инструкций и барьеров, как и других особенностей различных архитектур. Это задача для тех, кто пишет JVM или хочет написать самый быстрый код. Программист на Java может писать корректные многопоточные программы, если он четко понимает, какие исполнения его многопоточного кода допустимы с точки зрения спецификации языка Java.

В качестве основной идеи доклада я выбрал тот неочевидный факт, что, в общем случае, поведение многопоточных программы нельзя изучать путем анализа различных перестановок выполняемых операций. Я отобрал основные определения и объяснил суть последовательной согласованности и линеаризуемости, чтобы подвести к этому факту. Из-за технических накладок с трансляцией организаторы попросили задержать начало доклада, из-за чего на доклад осталось около получаса, и его кульминационная концовка была несколько смазана. В этой записи я еще раз развернуто объясню основную идею и дам ссылки для домашнего чтения тем, кому хочется в этом подробней разобраться. ДальшеCollapse )


Анонс: JPoint 2014: Теоретический минимум, который надо знать, чтобы понять JMM
elizarov

В последнее время на Java конференциях стало появляться множество докладов, которые рассказывать про особенности многопоточного программированию в целом и про Java Memory Model (JMM), которая описана в 17-й главе спецификации языка Java (JLS).

Это не удивительно. В то время как многоядерные процессоры используются уже даже в телефонах, в тех областях программисткой деятельности, где для достижения преимущества над конкурентами надо победить в производительности, без многопоточного программирования не обойтись. И одной передачей сообщений без изменения общей памяти тут не обойтись. Чтобы выжать из современных вычислительных систем всё, что в них заложено, нужно использовать их по максимуму. Это значит, что придется разобраться не только в синтаксисе и семантике вашего языка программирования, как это было всего десять лет назад, но и в его модели памяти. Разобраться, что же происходит, когда несколько потоков одновременно читают или пишут одни и те же участки памяти.

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

18 Апреля в Москве пройдет конференция JPoint 2014. На ней я сделаю доклад, который призван восполнить этот досадный пробел современной системы образования программистов, не успевшей еще, в своей массе, подстроиться под реалии многопоточного мира. Там будет минимум практики и максимум теории. Определения, понятия, теоремы. Прослушав этот доклад все термины, которые упоминаются в 17-ой главе JLS, обретут для слушателей понятный и законченный смысл.

Этот доклад будет сделан на основе моего доклада 2012 года "Теория параллельного программирования для программистов практиков". Тот доклад наглядно показал, что нельзя объять необъятное. Попытка впихнуть в отведенное слишком много приводит к тому, что большая часть слушателей так и остается в неведении. Я не буду больше пытаться совмещать теорию и практику, а начну с самых базовых теоритических основ. И не просто пробегусь по верхам, создав максимальную плотность определений в единицу времени, а попытаюсь донести до слушателей суть и смысл всех понятий, используя примеры и диаграммы.

UPDATE: А вот и развернутый комментарий о прошедшем докладе со слайдами с ссылками.


Олимпиада в России завершилась
elizarov

Завершилась первая Олимпиада проведенная в современной России. Это было потрясающее событие. Безусловно, я очень рад, что Российские спортсмены смогли на домашней Олимпиаде продемонстрировать высочайший уровень мастерства и собрать больше всех медалей, в наибольшем числе видов спорта: фигурное катание (5 медалей, из них 3 золота), шорт-трек (5 медалей, из них 3 золота), лыжные гонки (5 медалей, из них 1 золото), сноуборд (4 медали, из них 2 золота), биатлон (4 медали, из них 1 золото), скоростной бег на коньках (3 медали), скелетон (2 медали, из них 1 золото), бобслей (2 золотых медали), санный спорт (2 медали), фристайл (1 медаль). Это было невероятно здорово, и соперники тоже были на высоте -- одно загляденье! Мне вдвойне приятно, что не только спортсмены показали первоклассные выступления, но и менеджеры от спорта продемонстрировали навыки мирового уровня -- смогли разглядеть таланты в других странах, которые по той или иной причине не могли заниматься своим любимым спором на родине, и смогли создать необходимые для них условия в России (здесь я имею в виду Виктора Ана и Вика Уайлда). Это говорит о том, что Российский спорт вышел на современный международный уровень во всех отношениях. Sochi 2014

Организация игр и церемоний заслуживает всяческих похвал. Приложив руку к организации Финала ACM ICPC 2013 в Санкт-Петербурге, я стал намного лучше понимать какого труда всё это стоит. Читая репортажи с Олимпиады и смотря трансляции я живо себе представлял, какие огромные труды десятков и сотен тысяч человек стоят за этим. Задача по организации события мирового масштаба на таком уровне в тысячи и десятки тысяч раз сложней, чем та, что стояла перед нами в 2013 году. И я горжусь тем, что благодаря поддержке моей семьи, моих друзей и знакомых я смог прикоснуться к Сочинской Олимпиаде, пронеся Олимпийский Огонь.

Безусловно, и финансовые затраты на Олимпиаду были в десятки тысяч раз больше. Однако, я не склонен считать что эти деньги были потрачены напрасно. Мои родители, выросшие в обычных крестьянских семьях, воспитали меня в духе широкой Русской души. Если в дом приходят гости, то на стол подаются лакомства, которые семья не может себе позволить в обычные дни. Делается всё ради удобства и комфорта гостей, чего бы это ни стоило. И не важно, на сколько месяцев после этого придется затянуть пояса, чтобы свести концы с концами. Гостеприимство превыше всего. Ну а праздники это вообще святое. Это наша культура и наша традиция. И когда я порой, в шутку, называю Европейцев нищебродами, то зачастую это не связано с их реальным уровнем благосостояния. Просто у них другая культура и другие, скупердяйские с Русской точки зрения, традиции. В то же время, Европейцам порой кажутся дикими какие-то культурные и традиционные аспекты России. Просто это надо понимать и принимать. Да чего уж там далеко ходить, даже в одной стране в разных семьях есть свои мини-традиции и тараканы в голове, которые кажутся странным их соседям и создают предмет досужих обсуждений на кухне. Это не мешает всем работать над достижением общих целей и над общими проектами.

Олимпиада это в первую очередь праздник спорта. Видно, что организаторы не пожалели средств для создания спортсменам удобных и комфортных условий для проживания и выступлений, а зрителям для просмотра. С финансовой точки зрения Олимпиада это ведь, по сути, одна большая стройка. Строительство это большой бизнес. То, что множество компаний получили неплохую прибыль на олимпийских стройках, это неизбежный побочный эффект от капиталистического устройства мировой финансовой системы, частью которой является России. Это такой же факт, как и то, что строительство это одна из наиболее коррупционных отраслей любой экономики, и выкорчевывать оттуда коррупцию очень не просто. Не смотря на это, спортивные объекты мирового уровня были построены в рекордно короткие сроки и они останутся с нами, в Сочи, на радость будущим поколениям спортсменов и их болельщиков. Это очень важная база для будущих успехов.

Мне втройне приятно, что сама организация соревнований это огромный международный проект, в который вовлечены лучше специалисты со всего мира. Это в каких-то аспектах даже круче чем Международная Космическая Станция и Большой Адронный Коллайдер. Это наглядное свидетельство глобализованности и открытости современного мира. Мы живем в поистине потрясающее время.

На фоне этого обидно, конечно, что память о холодной войне, которая закончилась более 20 лет назад, еще не исчезла. Грустно и противно было следить за освещением Олимпиады в ведущих западных изданиях, да и в нашем отечестве есть свои "герои" информационной войны. Но я не берусь судить людей, которые еще недавно несли вахту в бункерах с атомными боеголовками, в буквальном и переносном смысле, защищали на своем посту свою родину от врага, а теперь работают на ведущих позиция в крупных корпорациях и в правительстве своих стран, прямо и косвенно определяя политику своих государств. Должно пройти еще не одно десятилетие, сменитсья всё поколение элиты (а может и не один раз), чтобы противостояние такого масштаба и накала ушло в прошло. В то же время, честная конкуренция и борьба это хорошо. Без соревнования не может быть достижений и побед. Соревнование между людьми, компаниями и странами мотивирует каждого участника на достижение новых рекордов. Олимпиада и Олимпийский дух этому наглядний пример. Спортивное программирование, в том числе ACM ICPM, построено на похожих принципах.

Tags: ,

NEERC 2013: Подведение итогов и раздача благодарностей
elizarov

NEERC Banenr

Очередные, 18-е, соревнования Северовосточного Европейского Региона Студенческого Командного Чемпионата Мира по Программированию завершились. Таблица результатов доступна на сайте соревнования. Победителем стала команда Санкт-Петербургского Государственного Университета. Семь команд правильно решили по 8 из 11 предложенных задач за 5 часов соревнования, но команда СПб ГУ сделала это быстрей всех с большим отрывом по времени от других команд.

В этом году 17 сильнейших вузов нашего региона получают право участвовать в Финале Чемпионата Мира по Программированию ACM ICPC — самом престижном соревновании среди программистов в мире. Финал Чемпионата 2013 принимает в Екатеринбурге Уральский Федеральный Университет. Команда УрФУ отлично выступила на завершившихся региональных соревнованиях, заняв 4-е место и завоевав право участия в Финале. 120 команд со всего мира будут биться за звание Чемпионов Мира по Программированию. Финал будет проводиться в России всего 2-й раз за 38-летнюю историю Чемпионата, тем не менее, команды программистов из России начиная с 2000 года являются фаворитами этих соревнований, став чемпионами уже 8 раз. Я искренне желаю им удачи на Финале и в этом году.

Я хочу поблагодарить всех организаторов и волонтеров соревнования. Я очень горжусь тем, что имею честь работать в такой слаженной команде единомышленников. В этом году особенно хочу отметить пресс-службу, которая вела трансляцию соревнований в twitter @NEERCNews.

Условия задач выложены на сайте соревнования здесь. Единственной действительно сложной задачей на соревновании была задача С "Cactus Automorphisms", где не было ни какой сложной идеи, но надо было написать много кода. Не предполагалось, что её кто-либо сможет решить во время соревнования. Во всех остальных задачах, если над ними подумать, код получался не сложный. Очень жаль, что ни одна команда не смогла решить задачу D "Dictionary" или E "Easy Geometry". При этом надо учесть, что несмотря на то, что решение к задаче D можно написать так, чтобы оно работало за время пропорциональное размеру входого файла, но ограничения в задаче D были такими маленькими, что этого не требовалось. Даже очень неэффективная реализация алгоритма двух китайцев проходит в этой задаче по времени. Простая задача J "Join the Conversation", на удивление, cтала лидером по числу попыток её решить. Команды в сумме сделали 1162 попытки сдать её решение и только 119 из них были успешными.

Краткий разбор задач я выложил здесь. Все решения жюри и тесты к задачам выложены в архиве здесь.


Я понесу огонь в самой масштабной эстафете в истории Олимпиады
elizarov

Я буду участвовать в эстафете Олимпийского огня в Санкт-Петербурге. Это событие произойдет в ближайшее воскресенье, 27 Октября 2013 года в 15:37. Мой участок в 300 метров будет начинаться по адресу наб. Макарова 18 и заканчиваться у дома номер 20. Спасибо всем за поддержку меня в конкурсе на участие в Олимпийский эстафете!

Я буду рад видеть и приветствовать всех, кто придет посмотреть.

UPDATE: Это было супер!
Передача огня Несу огонь!

Tags: ,

Анонс доклада: Факты и заблуждения о Java-сериализации
elizarov

Serialization ... is the process of translating data structures or object state into a format that can be stored (for example, in a file or memory buffer, or transmitted across a network connection link) and resurrected later in the same or another computer environment.

Wikipedia

Во вторник, 15 октября, на конференции по Java-технологиям Joker, которая пройдет в Санкт-Петербурге, я сделаю доклад про Java-сериализацию.

Тема сериализации объектов волнует любого, кто разрабатывает распределённые системы. При использовании разных языков и технологий для разных частей системы выбор протоколов сериализации ограничен в первую очередь необходимостью обеспечить совместимость технологий между собой. Однако, серверная часть многих больших современных приложений разрабатывается на Java и состоит из множества взаимодействующих компонент. Это даёт возможность при выборе механизма сериализации концентрироваться на производительности и удобстве разработки.

Java-сериализация является неотъемлемой часть платформы Java уже более 10 лет. Она разрабатывалась еще в те времена, когда дальнейшая судьба развития распределённых систем была туманна. Многие технологии «распределённых объектов», разрабатывавшиеся в то время, не дожили до наших дней, и некоторые отголоски этих мёртвых идей можно еще откопать в дизайне Java-сериализации. Несмотря на ряд недостатков, сериализация в Java имеет ряд неоспоримых преимуществ перед многими альтернативными способами реализации. Альтернативные способы сериализации активно рекламируются, в то время как старая добрая Java-сериализация незаслуженно забывается и обрастает совсем уж гротесковыми мифами. Например, как в любой шутке, в первоапрельской шутке JEP-154 есть и доля правды о том, что думают разработчики про Java-сериализацию.

В докладе будут рассмотрены наиболее популярные заблуждения о Java сериализации, и разложены по полочкам реальные факты о её достоинствах и недостатках, которые вы не услышите от авторов альтернативных библиотек сериализации. Вы узнаете как использовать Java-сериализацию и получать от этого удовольствие!

Конечно, в докладе будут упомянуты и альтернативы, ведь любой выбор технологий должен быть основан на осознанном сравнении. Сейчас существует очень большое количество алтернатив, и здесь мне нужна ваша помощь. Пишите в коментарии к этой записи о том, какие библиотеки сериализации вы использовали, изучали, или с какими сталкивались в своей практике. Работающие со своим форматом сериализации или с каким-либо другим стандартом, бинарные или текстовые, JSON или XML, кроссплатформерныие или работающие только в Java, оптимизированные для записи в файл или для вызова методов по сети. Я их добавлю к списку известному мне и упомяну обо всех из них без исключений.

UPDATE: А вот и слайды под катомCollapse )


JavaOne: Открытие, ключевые темы
elizarov
Вчера состоялось открытие очередной конференции JavaOne. Основные темы, на котрых были расставлены акценты в открывающей речи, это встроенные системы (embedded) и скорый выход очередной версии Java - Java 8.

В области встроенных Java систем Oracle сильно продвинулась за последние несколько лет. Был выпущен полноценный JDK под популярные в мире встроенных систем Linux системы на ARM процессорах. Совсем недавно появилась "HardFloat ABI" версия, которая позаволяет запускать Java приложения на Raspberry Pi без лишних телодвиженией. В этом году спонсорами и партнерами конференции являются ARM, Freescale, Qualcomm, RaspberyPi, Gemalto и ST. Очень важно, что происходит конвергенция "маленьких" JVM и "больших" JVM. Многие современные устройста достаточно мощные чтобы запускать полноценную JVM (ARM Linux версия), а в версии Java 8 появится рад стандартных компактных профилей, представляющих подмножество библиотек классов, уменьшая размер и необходимый объем памяти. В то же время для сильно ограниченных систем уже давно существует Java ME, которое более 10 лет даже не поддерживало новые возможности языка. С выходом "большой" Java SE 8 появится и Java ME 8, которая приведет в соответствие уровень поддерживаемого языка со своим большим братом.

Java 8 станет действительно революционной версией языка. Такого не было уже 10 лет с момента выхода Java 5. Наконец в Java появляются closures aka lambda. Одновременнно с этим происходит модернизация всех стандартных библиотек коллеций, позволяющая работать с данными концентрируясь на стоящей задаче, без необходимости использования шаблонного кода. Java выступает догоняющим и станет последним широко-распространенным языком в котором появляются closures. Про важность этих изменений уже написано очень много. Очень радует, что после многолетних дебатов был выбран элегантный синтаксис, который естествено вписывается в язык Java, и высокопроизводительная реализация, которая позволит сделать существующий код и компактней и быстрей при переходе на Java 8. Немаловажно и то, что новые методы работы с коллециями с самого начала разработаны с учетом параллельной обработки данных. Переход с последовательной обработки данных на параллельную происходит простой заменой вызова метода stream на вызов метода parallelStream. Все это уже доступно для разработчиков в полнофунциональной developer preview версии здесь.

Во время открывающей речи не был забыт и JavaFX следующая версия которого выходет в составе Java SE 8 и будет называться JavaFX 8. Основным нововведением будет поддержка 3D графики. Основные инновации в развитии "rich UI" происходят именно в JavaFX, но и про поддержку миграции со старых технологий Oracle не забывает. Появится возможность встраивать Swing компоненты в JavaFX (в обратную сторону можно уже сейчас).

Был упомянут и вышедший недавно Java EE 7. В качестве технологической демонстрации было показано Java EE приложение для игры в шахматы по сети, в котром клиенты взаимодействуют с сервером через websocket получая push нотификации с ходами от сервера. NetBeans позволяло отлаживать одновременно серверный Java код и клиентский JavaScript. Кроме JS/HTML5 клиента с этим серверным приложением работало простое 3D JavaFX приложение запущенное на любопытном do-it-yourself Rasperry Pi планшете под названием DukePad, полнценное JavaFX приложение на ноутбуке с красивой 3D анимацией шахматных фигур професионально сделанное в Maya, и робот управляемый встроенной Java системой который переставлял физицеские фигурки по реальной шахматной доске. Демонстрация прошла без существенных накладок и аудиторя была довольна увиденным.

You are viewing elizarov