"Как хорошо, что эта конференция проходит не в Москве" - думал я в этом году, прогуливаясь по северной столице по прекрасной погоде, любуясь красотами этого замечательного города и предвкушая много нового и интересного на конференции.
Конференция
Простояв изрядное количество времени в питерских пробках, я всё-таки добрался до 7 павильона Ленэкспо, где и происходила конференция. Боялся опоздать к началу, но увидев огромнейшие толпы людей, ожидающих регистрации, понял, что если и опоздаю, то не один. Огромные очереди при регистрации, нехватка еды и воды (на такое количество участников) - всё это пусть останется на совести организаторов, я же расскажу о докладах.Больше всего, конечно, мы ожидали доклада создателя Джавы самого Гослинга. Но непосредственно перед началом его выступления объявили, что он не приехал и вместо него выступит кто-то другой.
Oracle GlassFish Server v3: сервер приложений следующего поколения (Jerome Dochez)
Первый доклад рассказывал о замечательных свойствах сервера Glassfish. Из доклада удалось вынести следующие мысли:- Сервер Glassfish является "эталонной реализацией" Java EE 6
- Он позволяет очень живо вести отладку: код очень быстро деплоится на работающем сервере
- Между деплоями пользовательские сессии сохраняются - ну очень облегчает отладку
- Для отладки можно запускать как обычное javа-приложение: java -jar glassfish.jar myapp.war
- Сервер очень модульный, его легко встраивать, с его помощью легко тестировать свой код
- Glassfish не стоит воспринимать только как сервер для разработки, это полноценный сервер для продакшена (что повторялось неоднократно, но без должной аргументации)
Разработка веб-служб при помощи Oracle WebLogic (Андрей Забелин)
На этом докладе стала видна разница между нашими и зарубежными докладчиками. То ли иностранцы посылают на конференцию только хороших ораторов, то ли они сами по себе все хорошо выступают... В докладе нашего соотечественника про WebLogic не было понятно практически ничего...Java EE 6, часть 1: Использование тем, Управляемые бины, Servlet 3.0, JPA 2.0 (Alexis Moussine-Pouchkine)
Java EE 6, часть 2: EJB 3.1, JSF 2.0, Bean Validation 1.0, JAX-RS 1.1 (Alexis Moussine-Pouchkine)
JavaEE 6, часть 3: Контексты и внедрение зависимостей (Jerome Dochez)
Все три этих замечательных доклада были посвящены новым возможностям в новой JavaEE, большинство из которых фактически являлись просто обобщением и стандартизацией того, что уже реализовано в Spring и Hibernate. Но стандарт - это хорошо, и это радует.JPA 2.0 - небольшие улучшения и CriteriaAPI.
CriteriaAPI вызвало много различных эмоций. Это способ записи запросов в виде java-объектов. То есть никакого SQL, никаких ненавистных строк, всё только объектами.
Плюсы: отлов синтаксических ошибок на уровне компиляции. Автодополнение кода.
Минусы: ужасно громоздкие конструкции. попытка использовать для запросов язык, который для этого не предназначен. Отсутствие сильной необходимости в этом, т.к. современные IDE уже и запросы, записанные в виде строки проверяют на синтаксис (например, IDEA).
Из всего этого я бы сделал вывод, что criteriaAPI - это хорошо, но для нее нужен более удобный синтаксис (см. ниже MPS)
Servlets 3.0:
web.xml уже необязателен - можно всё конфигурировать аннотациями.
Поддержка асинхронных запросов (Comet)
Dependency injection
А вот тут, мне показалось, в sun помешались на аннотациях. Да, это хороший инструмент, это клево... Но не надо же реализовывать всё с помощью аннотаций. Реализация внедрения зависимостей вся на аннотациях. И определение новых аннотаций для внедрения зависимостей тоже на аннотациях... Ну неужели нельзя было добавить новые возможности синтаксиса для этого? Видимо, боятся: на конференции не раз с грустью вспоминали о том, как сломалась библиотека JUnit после того как в Джаве появилось ключевое слово assert. После рассказа о DI создалось впечатление, что это сделано очень криво с условием использования только текущего синтаксиса. И это на фоне того, что можно делать с языком с помощью MPS!
Создание асинхронных веб-приложений с использованием Comet, Atmosphere и Glassfish (Chuk-Munn Lee)
Заинтригованные таким названием доклада, мы с друзьями непременно пошли именно на этот доклад, вспоминая, как совсем недавно пытались доказать кому-то совершенную непригодность серверов типа Glassfish и Tomcat для написания динамичных игр... И тут вдруг такое - асинхронность на таком сервере! Может быть, можно будет взять на вооружение? Не тут-то было! Схема работы, оказывается, такова:
- Клиент посылает HTTP-запрос на сервер
- Сервер начинает отвечать... и не закрывает соединение
- Клиент, не получив данных, ждет.
- Когда на сервере произойдет событие, сервер пошлет в это соединение ответ и закроет его
- Клиент получит данные и отобразит
- Для того, чтобы можно было получать данные снова, переходим на шаг 1
Для этого был разработан фреймворк на JS (работающий на специально для этого разработанном протоколе на основе JSON) и модифицирован сервер Glassfish.
По-моему ужасная по своей сути попытка приспособить изначально синхронный HTTP под асинхронность... Примеры в виде игры в крестики-нолики по сети были не очень убедительными и ещё больше углубляли сомнения в перспективности такого подхода.
JetBrains. Расширение Java и создание DSL (domain-specific languages) при помощи Open Source Language Workbench JetBrains MPS (Константин Соломатов)
Долгожданный доклад о том, как легко с помощью Meta Programming System от JetBrains можно создавать собственные расширения языка Java. Да! Не ждать, пока разработчики из sun реализуют замыкания! Добавить в свою программу удобный синтаксис для работы с комплексными числами! Упростить синтаксис для работы с любыми технологиями, с которыми сейчас неудобно работать! На наших глазах докладчик создал расширение, которое значительно упрощало синтаксис захвата ReadWriteLock! Возможности этой системы очень впечатлили и вдохновили. Единственный минус - не только расширение языка реализуется в MPS, но и вся разработка должна вестись там же... Среда бесплатна и опенсорсна! (эмоции)
Проект: http://www.jetbrains.com/mps/
Блог: http://blogs.jetbrains.com/mps/
Проект: http://www.jetbrains.com/mps/
Блог: http://blogs.jetbrains.com/mps/
Современная виртуальная машина Java изнутри (Иван Крылов, Алексей Шипилëв)
Как бы на десерт всей конференции подавался интереснейший доклад о внутренностях JVM. Сборщик мусора, работа с памятью, проблемы производительности.
Особенно интересна была часть доклада, где рассказывалось о том, каким образом JVM оптимизирует код. О том, как она инлайнит переменные и методы, девиртуализирует методы, убирает лишние блоки синхронизации, "если JVM сможет доказать, что программа будет работать так же".Поскольку все эти оптимизации основаны на предположениях, то в конце было рекомендовано не заморачиваться низкоуровневой оптимизацией java-кода, т.к. с этим с гораздо большим успехом справится JVM, а сосредоточиться на выборах правильных алгоритмов.
После полутора дней прогулок по Петербургу я сидел в поезде, ехал обратно в Москву и думал: "Если бы эта конференция проходила в Москве, то нет, не смог бы я уделить ей столько внимания. Как же всё-таки хорошо, что конференция проходила в Петербурге..."

Комментариев нет:
Отправить комментарий