К основному контенту

JavaDay 2012 в Киеве. Мои впечатления

27 октября в Киеве пройшла конференция JavaDay 2012. Не знаю точно сколько было участников, но человек 300, думаю, собралось. До обеда все были в одном зале. Из 4 докладов 3 было сделано представителями Oracle. Вначале Simon Ritter рассказал, в каком направлении планируется развивать платформу Java; напомнил, что Java ME не умерла и что они ориентируются не только на мобильные телефоны, но и на всякие встраиваемые девайсы. Конечно, он не мог не напомнить, что Java успешно работает на Raspberry PI. Simon признался, что это позор, конечно, что они не внедрили наработки проекта Jigsaw к релизу Java 8. При этом утверждал, что оно вроде как и готово, а отложили по причине множества мелких недоработок. Доклад завершился месседжем: “Java is not new Cobol”. Что ж, вполне ожидаемо :) Суховатость доклада разбавили ответы на вопросы. Забавно было услышать “Oracle thinks Scala is good”, а чуть позже, отвечая на вопрос о сотрудничестве Oracle и университетов Simon рассказал об Oracle Academy, но адресс сайта забыл и ответил стандартным “google it :)”. От души посмеялся. Ведь перед этим как раз спрашивали про судебные тяжбы Oracle и Google.

Следующим докладчиком был Михаил Ершов. Он рассказал, о совместимости API, какие её виды бывают и как легко её нарушить. Многое из этого было достаточно очевидным, но проблема в том, что об этом особо не задумываешься в повседневной работе, пропускаешь мимо. В целом доклад мне понравился и я хоть что-то новенькое узнал. Не понравилось только, что Михаил все время был повернут задом к половине зала.

Хитом конференции, по моему мнению, стал Никита Сальников-Тарновски, один из основателей Plumbr: чувствовалась непринужденность, он юморил и пытался вовлечь аудиторию в дискуссию. Он рассказывал про утечки памяти в java-программах, какие несовершенные инструменты их обнаружения и, конечно, же расхваливал свой продукт, но неохотно отвечал на вопрос о его стоимости. При этом он все же признался, что Eclipse MAT тоже неплох.

После этого был скучнейший доклад о JavaFX. Его явно протянули представители Oracle и в зале особого интереса к теме я не заметил. Соответственно и вопросы были: “а зачем это нам?”. Забавно, что JavaFX представляется как rich client platform, классная штуковина для работы с мультимедиа, но при этом в нем до сих пор нет поддержки работы с web-камерой (об этом тоже был вопрос) и в ближайшие полгода не появится (во всяком случае так ответил Simon Ritter).

Перед обеденным перерывом “Одноклассники” (одни из спонсоров данного мероприятия) разыграли призы, главным из которых был iPad. Он достался парню, который, не зарегистрирован в этой соц. сети и особо о компании ничего не знающий (впрочем, вполне ожидаемо).

Надо отдать должное, организаторы позаботились о бесплатном обеде для приехавших голодных программистов, хоть и был он достаточно легким :)

После обеда аудитория разделилась на два зала: доклады читались в 2 потока. Я слушал доклады только первого потока. Первым докладом был “A whirlwind tour of functional programming in Clojure”. Рассказывал его поляк на плохом английском. При этом он местами переходил на польский и вставлял немецкие словечки: его это видило забавляло. Он увлекался и, как мне показалось, очень хотел всех убедить, что REPL — это круто. В результате он успел показать только самые базовые вещи. Коэффициент полезности этого доклада равен нулю (для меня во всяком случае). На мой взгляд, самый худший доклад.

После этого был доклад Simon'а о проекте Lambda, о замыканиях, как они упрощают жизнь и как теперь приятно станет работать с коллекциями, ведь наконец-то, о да, появятся map, filter и reduce из коробки. Неплохой доклад, все было понятно.

Следующим выступал представитель от EPAM Systems. Он рассказывал о платформе OSGI, какие проблемы она призвана решить. Доклад вроде и неплох, но какой-то он вышел уж совсем ознакомительным. Я бы сказал, для тех, кто только краем уха слышал об OSGI.

И на завершение Михаил Ершов рассказал о профилях и проекте Jigsaw, что нас ждет. По его заявлению больше не будет jar'ов, classpath'ов. Будут только модули и их реестр. Модули будут устроены так, что только некоторые пакеты будут доступпны наружу и то, если автор пожелает, потому что он может открыть их только ограниченному набору других модулей (так что, забудьте о классе Unsafe и ему подобных). Модуль может иметь несколько представлений, каждое из которых будет иметь один и тот же набор импортируемых модулей, но могут различаться набором экспортируемых модулей и доступом к ним. Михаил отметил, что деление на модули будет исключительно статическим. По умолчанию они будут храниться в jmod файлах, но уже сейчас есть альтернатива: модули могут быть упакованы как deb-пакеты. На вопрос, как вся эта модульность отобразиться в Java EE экосистеме со всеми ее серверами приложений, докладчик честно ответил, что пока не знает. Вообще же доклад сопровождался постоянными напоминаниями, что вся эта информация даётся в ознакомительных целях и всё ещё может поменяться, тем более что теперь-то время есть до 2015 года.

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


UPD.: Уже появились слайды докладов, сделанных Михаилом Ершовым (слайды доклада про профайлы и Jigsaw и слайды доклада про совместимость)

Комментарии

Популярные сообщения из этого блога

Одно приложение, несколько баз данных

Рецепт от Spring Boot Некоторое время назад мне довелось писать агрегатор информации, разбросанной по нескольким базам данных с разными схемами. Для реализации был выбран Spring Boot. Ну, потому что модный и судя по примерам существенно упрощает жизнь за счет умной автоконфигурации. В этой статье я опишу, что же необходимо сконфигурировать и как, в случае, если вы отошли от стандартного сценария. Первым делом, необходимо прописать настройки доступа к каждой из баз. Например, вот так: Следующим шагом создадим отдельный класс конфигурации (для удобства), в котором определим dataSources: Обратите внимание, как просто получить настройки с помощью @ConfigurationProperties. Правда, пришлось ввести вспомогательный класс BaseDataSourceProperties — наследник DataSourceProperties, в котором область видимости метода getDriverClassName расширена до public. И осталось совсем немного — сконфигурировать JPA-репозитории. Насчет немного я, конечно, пошутил :) В этой части предстоит больше

Может ли TreeSet содержать дубликаты?

Не спешите давать ответ, а лучше запустите код, приведенный ниже. Возможно вы подумаете, что это надуманный пример, но это лишь немного упрощенная версия того кода, с которым мне пришлось столкнуться на практике. Для начала о проблеме, которую был призван решить этот код. В списке объектов надо было оставить объекты с различными именами, причем неважно какой объект из всего набора с таким же именем останется. Сразу же уточню, что на практике в проекте используется Java 7 и класс объектов, добавляемых в TreeSet, не вложен в какой-либо другой, а приведенный здесь вариант использован для краткости. Может возникнуть вопрос почему выбрано именно такое решение. Давайте разберемся, чтобы не повторять ошибку. Первое, что приходит в голову, когда из списка надо удалить дубликаты, - использовать Set. В данной ситуации HashSet не подходит, потому что он использует equals метод для сравнения и отсеивания дубликатов. Но наш программист не сдаётся и вспоминает, что есть же еще TreeSet, в докум

Обработка изображений с ImageMagick

ImageMagick ( http://www.imagemagick.org ) — набор утилит для создания, редактирования, конвертирования и просмотра растровых изображений. Графический режим необходим только для просмотра. Для остальных действий над изображениями достаточно консоли. То есть налицо два отличия от привычных редакторов растровых изображений (вроде GIMP или Krita): использование набора утилит вместо одной программы для операций над изображениями не требуется GUI. Очевидно, что таким инструментом вряд ли будут пользоваться художники, фотографы или дизайнеры. Чтобы разобраться для кого предназначен этот набор, предлагаю ознакомиться с предоставляемыми возможностями. Что умеет ImageMagick? Чтобы ответить на поставленный вопрос я перечислю входящие в набор утилиты, напишу какой функционал предоставляет каждая из них и, конечно же, приведу примеры использования. identify — информационная утилита, воспользовавшись которой можно узнать формат изображения и множество других его свойств (например, высоту,