Серое пасмурное утро и специфическое расположение места проведения (прямо под Дворцом Республики) крупнейшего события в мире минских джаверов придали Java Day 2013 некую «подпольную» атмосферу. И хоть сам воздух клуба «Центр», выбранного для проведения мероприятия, навевал мысли о женщинах и шестах, участникам удалось получить удовольствие совсем иного толка — интеллектуального. Организаторы прошедшего 23 мая Java Day 2013 — портал dev.by и компания Oracle, также поддержку оказали компании Oxagile, NastyCreatures и BelPrime Solutions. Большая часть докладчиков была представлена именно от питерского подразделения компании Oracle, присутствовали также докладчики от компаний Odnoklassniki.ru, JetBrains и Nasty Creatures.
Конференция началась приветственным словом одного из организаторов, Яны Потеевой, которая порадовалась за белорусских программистов, имеющих сегодня возможность получить информацию из первоисточника любого крупного события в Java — компании Oracle. Также поприветствовал участников Александр Лютаревич, руководитель компании Nasty Creatures, генеральный партнер мероприятия.
Первым представил свой доклад Андрей Паньгин из Одноклассников, который поделился подробностями о внутренних «винтиках» известной социальной сети.
Только обработкой того, кто у кого в друзьях, в Одноклассниках занимается кластер из нескольких сотен машин, а связь с остальными серверами происходит при помощи удаленного вызова процедур.
В своем докладе Андрей акцентировал внимание на проблемы и преимущества при использовании внутренних средств Java и сторонних библиотек. Для нужд высоконагруженных серверов все они недостаточно подходили, поэтому в Одноклассниках было принято решение вручную написать свои реализации сокетов, сериализации/десериализации, использовать sun.misc.Unsafe и прибегнуть к другим хитростям. В результате этого, пояснил Андрей, трафик снизился на 50%, а время задержки уменьшилось на 20%. Порадовало, что практически все наработки компании выложены в открытый доступ, вот здесь.
Следующим было выступление представителя компании Oracle Александра Белокрылова.
Он «прошелся» в общих чертах по будущему Java. Кратко рассказав про вынужденную задержку выпуска Java 8 из-за найденных проблем с безопасностью, Александр бодро продолжил про непосредственные изменения в языке и модели разработки. В частности, в 8—9 версии обещают лучшую поддержку native кода, GPU, а также возможность выбора размера JRE/JDK за счет отказа от части библиотеки. В минимальной конфигурации виртуальную машину обещают сделать размером около 10 Мб. Также в Oracle сейчас уделяют особое внимание открытой модели разработки языка Java и призывают сообщество участвовать в ней.
Во время кофе-паузы желающие могли поиграть в настольный картинг в павильоне Oxagile (машинки работали не на Java, к разочарованию многих участников) или же обсудить в личной беседе с докладчиками проблемы коллизий в хешах, нюансы кэширования и пофантазировать на тему языков программирования будущего.
Следующим выступал программист из Oracle — Дмитрий Козорез.
Доклад был посвящен платформе JavaFX, которая будет включена в состав Java 8. JavaFX дает возможность декларативного написания интерфейса на Java при помощи языка FXML для конструкции и задания местоположения компонентов, CSS — для определения их представления и встроенной поддержки локализации при помощи properties-файлов. Дополнительным нововведением является визуальный конструктор интерфейса SceneBuilder. С этой программой при работе на Java наконец-то появляется возможность простого и гибкого способа создания интерфейса — разрабатывать их теперь будет «проще некуда». Также Дмитрий рассказал про еще одну сопутствующую разработку — FX Packager, которая позволяет паковать приложения на Java в исполняемый файл или сразу в установщик, поддерживая при этом основные платформы — Windows, Mac, Linux (deb, rpm).
Докладчиков из России «разбавил» минчанин Павел Нестеренко от Nasty Creatures, который коснулся темы использования Java на серверах в связке с JavaScript’ом в браузере. Доклад по большей части затрагивал клиентскую часть в виде JavaScript’а и HTML5, а на собственно Java-часть, видимо, не хватило времени, так как график конференции поджимал. Что ж, может быть, кому-нибудь и пригодится.
После еще одной кофе-паузы Дмитрий Козорез принялся за свой второй доклад, пожалуй, самый интересный на конференции — лямбды и другие грядущие изменения самого языка в Java 8. Эти фичи должны были войти еще в Java 7, но потом в Oracle передумали и отложили их на следующую версию.
Предваряли доклад предостережение о возможной плавке программерских мозгов во время доклада, а также предупреждение о предстоящем «потоке сознания». После этого Дмитрий бодро принялся за дело.
Кратко пояснив про замыкания, он приступил к еще одной новой фиче Java 8: методы по умолчанию в интерфейсах. Методы по умолчанию, по сути, создают в Java возможность множественного наследования, которым раньше Java-разработчиков интенсивно пугали. Но теперь благодаря коротким трем правилам это становится достаточно просто:
— классы важнее;
— иерархия наследования следует вторым пунктом;
— если же ничего не подходит, то вам следует самому переопределить метод.
Из переопределенного метода в классе можно вызвать конкретный метод из интерфейса с помощью еще одного расширения языка — указывать super для конкретного интерфейса/класса (MyInterface.super.validate(), например).
Далее Дмитрий более подробно пояснил, что же приобрели разработчики. Больше не надо писать свой компоратор на каждый чих, достаточно просто передать в функцию comparing замыкание, по которому и будет проводиться сравнение. Нет необходимости и городить анонимные классы для ActionListener’ов — с помощью замыканий это происходит на порядок элегантнее. А итеративный обход коллекций пишется в одну команду, да к тому же можно воспользоваться встроенной поддержкой распараллеливания, если потребуется.
Цель всех этих нововведений одна: эволюция интерфейсов в Java, теперь они становятся более гибкими и соответствующими времени. Доклад Дмитрия был щедро вознагражден бурными аплодисментами слушателей.
Следующим взял слово Артур Пилипенко из Oracle, который рассказал про Java ME. В связи с тем, что сейчас к интернету подключают все больше и больше бытовых устройств, в Oracle сейчас нацелились на рынок встраиваемой аппаратуры. Пока что список поддерживаемых микроконтроллеров не очень велик, но всё впереди. Зато по требованиям Java ME требуется совсем немного: в минимальной конфигурации 128 Кб памяти. К тому же Java ME будет выпускаться в различных изданиях, поскольку рынок встраиваемых систем слишком широк, чтобы покрыть всё одной платформой.
Важным в данной ситуации является тот факт, что код под более «юные» версии должен успешно компилироваться под «старшими», и сейчас в Oracle работают над глобальными изменениями в Java ME. В дополнение к этому будет переход на единую дату выпуска новых версий Java под все платформы. Первым шагом станет выпуск Java ME 8 одновременно с Java SE 8.
Тем временем на сцене происходила магия микроконтроллеров: игрушечная машинка на Java ездила сама по себе, не падая со стола и не врезаясь в ноутбук («Ой, врезалась!.. Но не должна была!» — успокоили разработчики :) ). Присоединившийся к коллеге Александр Белокрылов в прямом смысле этого слова на коленке написал код для управления микроконтроллером, выполняющего простую задачу — мигание лампочки с интервалом в одну секунду.
Последним был доклад про Kotlin от Евгения Геращенко из JetBrains.
Прежде всего Евгений пояснил, что Kotlin — это не остров, как и Java, а язык такой, причем не простой, а с компиляцией в байт-код под JVM. Основной же потребностью в создании нового языка докладчик назвал то, что из-за необходимости соблюдения обратной совместимости в Java вынуждены отказываться от многих нововведений, в то время как в JetBrains уже давно сами подошли к созданию своего языка. К тому же в компании накоплен опыт в виде создания IDE для семи языков программирования, которые признаны лучшими в своем классе.
Имеющиеся же языки под JVM не устроили ребят из JetBrains по различным причинам: Groovy с динамической типизацией, что затрудняет создание IDE под него, Scala слишком сложен, что также затрудняет создание IDE. В общем, парни решили, что в двадцать первом веке следует делать ставку на среду разработки и удобство работы в ней.
Но одной средой не обойтись, нужен и язык, вот в Kotlin'e все и стремится к гибкости и лаконичности. Хотите динамическое количество параметров в метод? Пожалуйста, можете задать для параметров значения по умолчанию, а потом передавать конкретные параметры, указывая их имена перед значением. Надо сгенерировать equals, hashcode для вашего класса? Добавьте перед ключевым словом class параметр data и все необходимое сгенерируется само по себе. Необходим доступ к приватным полям? Также можно сделать еще на этапе объявления поля.
Несмотря на все обозначенные плюсы, новый язык оставил весьма спорные впечатления у слушателей. С одной стороны — краткий, простой и строгий, а с другой — на некоторые вещи из зала следовала явно негативная реакция: добавление публичных методов в класс из другого класса, например.
Кроме этого, Евгения несколько раз поправляли участники, что также оставило неприятный осадок: в первый раз он продемонстрировал неправильный код лямбд для Java 8, уже показывавшихся на конференции. Во второй раз он показал в Kotlin'e немного модифицированный тернарный оператор и заявил, что в Java придется писать полную if-else конструкцию, забыв про существование в Java того же самого тернарного оператора, на что ему сразу и указали.
В любом случае больше языков — больше возможностей, так что JetBrains остается только пожелать удачи в их деле, и, может быть, мы когда-нибудь увидим, как на Kotlin'e будет создаваться программное обеспечение будущего. Язык, кстати, открыт для всех желающих принять участие в разработке.
Закрыл конференцию Виктор Хаменок, BelPrime Solutions, который вкратце рассказал историю своей компании,
а потом созвал всех к столам, где уже все было готово к Star Wars afterparty: стояло пиво и ожидали специальные гости. Дарт Вейдер в компании принцессы, солдата-клона и нескольких инопланетных существ.
В общем, конференция прошла успешно: публика пришла разношерстная, вопросы задавались интересные и неожиданные, а парни из Oracle смущались при упоминании Android. Хоть организаторы немножко и сетовали на низкую активность белорусской группы пользователей Java, но данное событие хорошо показывает, что интерес к Java в Минске есть, были бы желающие заняться организацией и докладами.
Ну что, есть желающие?
Фото: Андрей Давыдчик
Видео докладов
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.