НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Java 7 и дары клонов

Java 7 официально выпущена. Правда, программистский праздник оказался слегка омраченным: несмотря на тщательное тестирование, несколько проектов, включая некоторые из семерки крупнейших Java-разработок, под Java 7 запускаться отказались. Среди них -- поисковый движок и библиотека Lucene + Solr фонда Apache. Это примерно как если бы вышла Windows 7, и в ней бы не заработал Word 2007. Неужели не протестировали, ведь бета и RC давно вышли?

[spoiler]Как выяснилось, проблема в некорректной оптимизации циклов в виртуальной машине, будет исправлена в ближайшем патче. Впрочем, этот баг существовал и в Java 6, только выявлялся, если явно указать соответствующую опцию.
Пока же оптимизацию циклов надо отключить так:
-XX:-UseLoopPredicate

Java SE 8 ожидается в 2012-м.

Не известно пока, насколько совместимой с Java 7 окажется быстро набирающая популярность социалка Google+, которая целиком написана на стандартной серверной технологии Java Servlets, а на клиентской стороне используется JavaScript. В ней также применяется крайне полезная технология разработки сложных систем Guice -- так называемая инъекция зависимостей (dependency injection).

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

Для создания пользовательского интерфейса задействован фреймворк Closure, включающий "компилятор" JavaScript (по сути, оптимизатор исходного js-кода). Он кстати задействован и в серверной части, так как частично понимает и java-код.

Некоторые элементы системы написаны с помощью Google Web Toolkit -- свежая версия 2.5 поддерживает HTML5, хотя официальные лица почему-то отказываются признать или опровергнуть факт использования GWT. Возможно, применяется и ориентированный на многопоточные задачи язык Go, который, забавно, из стратегических соображений Windows почти не поддерживает.

Со временем конечно совместимость Google+ и Java 7 выяснится, пока же Гугль поразил ИТ-мир удивительным решением закрыть Google Labs... Возможно, причиной стала экономия (хотя миллионы долларов на проекты спасения мира находятся), но подобные подразделения в крупных корпорациях уже давно преследуют во многом имиджевые, нежели прикладные, цели.

Суровой критике подвергли на днях специалисты российской компании JetBrains ряд языков последних поколений, которые клонируют Java-концепции. Так, Scala -- язык очень мощный, но и не менее сложный и трудный в освоении. Кстати, поддержку платформы .NET в середине июля реализовало сообщество Scala-разработчиков (на денежки Microsoft). Теперь он стал действительно кросс-системным, ибо работает уже на двух промышленных платформах -- JVM и .NET. Вот-вот ожидается плагин для MS Visual Studio.

Groovy -- язык динамический, поэтому возможны ошибки времени выполнения, да и работает заторможено;
Gosu -- хотя и поддерживает статическую типизацию, однако есть исключения, аналогичные Java-вским (например при обработке массивов), что делает его больше похожим на скрипт-языки;
Ceylon -- не совместим с Java, не поддерживает перегрузку.

В этом контексте JetBrains представила собственную разработку Java-аналога -- Kotlin, который выйдет в конце года и включит компилятор и плагин для IntelliJ IDEA -- Java-среды разработки, традиционно отличающейся мощными средствами  рефакторинга и благородно выпускаемой под свободной лицензией.
Kotlin  -- совместимый с Java! -- взял лучшее из многих предшественников, включая C#, а компилируется в байт-код JVM; можно будет комбинировать его и с JavaScript. Важнейшая фича -- в Kotlin  можно встраивать собственные проблемные DSL-языки!
Ждем-с.
Доки на Kotlin, пример Hello World.