Руководствуясь стремлением развивать Java, Oracle объявила о выходе новой версии платформы — Java 7. По словам экспертов по Java, среди которых Марк Рейнхольд, главный разработчик в группе Java Platform в Oracle, ирония заключается в том, что изменения в языке и платформе скорее эволюционные, чем революционные, хотя это первое значительное обновление Java за последние пять лет.
Несмотря на такие заявления, прогресс в развитии Java был тепло встречен разработчиками Java во всем мире, что продемонстрировала Oracle во время вебкаста, который длился более четырех часов. “Java 7 — это самый ожидаемый релиз”, — отметил Бруно Сауза, президент SOU-Java, группы пользователей Java из Бразилии.
Развитие языка программирования столкнулось с различными внутрикорпоративными и маркетинговыми трудностями сначала в Sun, а потом и в Oracle после поглощения Sun. Организация Java Community Process, которая управляет процессом разработок Java, погрязла во внутренних распрях и обвинениях в фаворитизме со стороны Sun, а затем Oracle. Для последней слова “Нам надо развивать Java” стали мантрой, будто Oracle была настолько рада приобретению Java, что хотела продвигать ее во что бы то ни стало.
“Java 7 — это релиз, которого все очень долго ждали”, — сказал Бен Эванс из Лондонского сообщества разработчиков Java. Эванс, который также является представителем LJC в исполнительном комитете SE/EE (Java Standart Edition / Enterprise Edition), добавил, что Java 7 станет “катализатором”, позволяющим воспользоваться расширенными возможностями Java при создании новых приложений, в частности в сегменте финансовых услуг.
“Самое значительное событие — это сам факт, что мы снова продаем Java, —утверждает Рейнхолд из Oracle. — Мы ждали этого почти пяти лет”.
В то же время Адам Мессингер, вице-президент подразделения разработки продуктов в Oracle, отметил, что по прошествии полутора лет с тех пор, как Java перешла к Oracle (после приобретения компании Sun), можно сказать, что наконец она находится в хороших руках. Признавая, что в отношении Java Oracle “стоит на плечах атлантов индустрии”, он также подчеркнул, что Oracle активно инвестирует в Java; в частности, она создала “просто огромную” команду для работы над языком и платформой, объединив людей из HotSpot и JRockit.
Мессингер заявил, что Oracle работает над тем, чтобы дальше развивать сообщество Java, и она решила сделать организацию Java Community Process более открытой. “Java — стратегическое направление для Oracle. Мы тоже вносим свой вклад, как и вы” — с такими словами он обратился к сообществу разработчиков Java.
Новые элементы платформы
Платформа Java 7 имеет ряд новых элементов, в том числе Project Coin (также известный как Java Specification Request 334). Проект состоит из небольших языковых изменений, которые помогают повысить эффективность труда разработчиков и облегчают решение стандартных задач программирования благодаря уменьшению необходимого объема программного кода. Основные особенности Project Coin — это реализация таких функциональных особенностей, как оператор diamond operator, блок try-with-resources и strings in switch.
Внедрив в Java 7 новую функциональную особенность Java7 InvokeDynamic, Oracle добилась поддержки динамических языков типа Ruby, Python и JavaScript, требуемой для повышения производительности виртуальной машины JVM (Java Virtual Machine). Алекс Бакли из группы Java Platform утверждает, что Java 7 “позволила впервые убедиться в том, что JVM развивается в правильном направлении”.
Так как JVM была разработана для Java, “все режимы вызова организованы с учетом семантики Java”, отметил Джон Роуз, инженер из Oracle, который возглавлял процесс разработки InvokeDynamic. “Но мы ввели еще один режим для других языков”, — продолжил он. По словам Роуза, InvokeDynamic добавляет поддержку начального уровня и стабильную работу других языков на JVM.
JDK 7 (Java Developer Kit 7) — седьмая версия комплекта разработчика от Java — представляет собой новый прикладной программный интерфейс (API) для параллельного программирования или создания приложений для многоядерных систем. Новая рабочая среда Fork/Join Framework позволяет разработчикам разбивать проблемные задачи на фрагменты, которые могут затем выполняться параллельно с использованием произвольного числа ядер процессоров. В Java 7 также добавлены новый интерфейс ввода-вывода (I/O) для работы с разными файловыми системами и новые сетевые функции и средства безопасности; помимо этого обеспечена обратная совместимость с предыдущими версиями платформы.
Отраслевой обозреватель и аналитик IDC Эл Хилва отметил: “Самые значительные новые функции — это поддержка многоядерных сред благодаря Fork/Join, поддержка динамических языков и новый API для работы с файловыми системами. Все перечисленные выше характеристики какое-то время обсуждались специалистами Java, поэтому всем разработчикам приятно видеть их реализацию в новой версии Java. Что еще важно после всего того, что творилось вокруг Java в течение предыдущих полутора лет, — это то, что Oracle осознает ценность Java и готова продолжать инвестировать в ее развитие. Сообщество Java наконец-то может вздохнуть свободно”.
Важность поддержки динамических языков была отмечена и Миком Кёрстеном, главой Tasktop Technologies и создателем открытого проекта Mylyn. Но он считает, что многочисленные обновления, реализованные в Java 7, не настолько революционны, чтобы поразить разработчиков. Он также добавил, что это признак того, что Java бесспорно лидирует на рынке корпоративных решений, где все изменения должны быть постепенными.
“В большей степени стоит отметить инновационные изменения в Java 7, которые не связаны с самим языком программирования, — сказал Кёрстен. — InvokeDynamics обеспечит заметное увеличение производительности таких динамических языков, как Groovy и JRuby. Новая рабочая среда Fork/Join поможет внедрить функциональные языки типа Clojure и Scala. Тогда как десятилетие назад мы должны были буквально лезть из кожи вон, чтобы создать AspectJ для работы на JVM, новые функциональные возможности Java 7 позволят JVM превратиться в основную среду исполнения программ, где можно реализовывать инновации в области языков программирования”.
Проблемы инновации
Вопрос инноваций в Java в последнее время стал предметов споров и дискуссий. Многие аналитики говорят, что организации, ответственные за развитие Java (Oracle-Sun, IBM и Red Hat — J Boss), больше не лидируют в деле внедрения новшеств в Java, в то время как другие игроки (включая ряд молодых мелких компаний) вырываются вперед в отношении инновационных разработок.
На самом деле многие считают, что Oracle и IBM устраивает тактика постепенного внедрения усовершенствований в платформу, и они довольствуются своей прибылью на рынке корпоративных решений, где Java, очевидно, вытеснит .NET. Соглашение Oracle и IBM в отношении OpenJDK, заключенное в прошлом году, отображает то, насколько комфортно чувствуют себя обе компании.
В настоящее время инновационные разработки появляются вне этого “сговора”, и многие их них являются результатом действий небольших вендоров и стартапов в сфере динамических языков, разработанных на JVM. Больший вес приобретают так называемые “девопы” (инициативы, где разработчики находятся в прямом контакте с ИТ-специалистами по инфраструктуре и системному администрированию), Agile-объединения, являющиеся самоорганизованными группами разработчиков, а также ALM-группы, занимающиеся управлением жизненным циклом приложений.
SpringSource, проект компании VMware, также во многих отношениях способствовал внедрению инноваций в Java. В сфере PaaS (Platform as a Service) тоже происходило внедрение инноваций, и разработчики таких технологий, как Cloud-Foundry от VMware, Elastic Beanstalk от Amazon, различные предложения от Cloud-Bees и др., чуть ли не дрались за возможность предоставить новую среду исполнения программ для Java.
Род Джонсон, генеральный менеджер подразделения VMware SpirnSource, рассказал: “Большинство инноваций в Java разрабатываются не основными игроками, и сегодня практически все новаторские решения в области Java — это свободное ПО. Я думаю, эволюция языка Java в версиях 7 и 8 станет хорошим средством получения прибыли. По моему мнению, как и в случае с Java 5, приложения станут немного проще и намного складнее”.
Джонсон знает толк в инновациях. Он создал Spring Framework, среду для разработки корпоративных приложений на Java, которая настолько впечатлила сообщество, что его стартап Interface21 (позже переименованный в SpringForce) привлек внимание крупных покупателей, в конечном итоге став подразделением VMware.
Однако дело не только в языке. Джонсон утверждает, что сила Java в JVM с ее библиотеками и рабочими средами, которые помогают людям делать стоящие вещи. “Я все больше склоняюсь к мнению, что инновационные разработки будут все активнее выходить из тени туда, где больше возможностей, — сказал он. — К примеру, Grails и Spring Roo не просто предоставляют рабочую среду, они помогают разработчикам в процессе работы, как в случае с Rails”.
Кроме того, Джонсон считает, что индустрию ждет большое разнообразие способов взаимодействия экосистемы Java с развивающимися технологиями. “Мы говорим о тех технологиях, которые подразумевают обращение к базам данных нереляционного типа или разработку приложений, подходящих для использования на нетрадиционных конечных устройствах, которые связываются с серверами по-разному, — добавил он. — И все более растущее количество Java-приложений будет связано с PaaS”.
Java нужна твердая рука
В то время как одни говорят, что для успеха Java нужны инновации, другие считают, что больше всего Java требуется твердая рука. “Oracle оказала громадное влияние на Java”, — заявляет Майк Милинкович, исполнительный директор Eclipse Foundation, предоставляющего инструменты для разработчиков Java.
Он структурирует вклад Oracle в развитие Java следующим образом: “Сначала они инвестировали в команду разработчиков и инженерные ресурсы, чтобы построить, протестировать и выпустить на рынок такую крупную платформу, как Java. А это является фундаментом для серьезной корпоративной платформы, какой является Java. Затем они предоставили Java стабильность и обеспечили лидерские позиции. Их можно критиковать за принятие некоторых непопулярных решений с момента приобретения Java, но ни у кого теперь не возникает сомнений в том, каковы правила, кто главный и к чему все идет. А в течение последних двух лет существования Sun этим нельзя было похвастаться. Прозрачность и ясность стратегии оказывает позитивный эффект на экосистему Java, и недавнее решение SAP присоединиться к сообществу и участвовать в инициативе OpenJDK — явное тому доказательство”.
Также Милинкович сказал, что на протяжении последних лет Eclipse Foundation также оказывала влияние на Java. Eclipse привлекалась к управлению JCP и OpenJDK. “Eclipse остается незаменимой платформой инструментов для разработчиков Java. Наш последний релиз Indigo включает в себя некоторые из самых лучших технологических разработок за несколько лет”, — добавил он.
Аналитик Хилва из IDC соглашается с тем, что Oracle обеспечила равновесие на арене разработок Java. “Во многих отношениях, Java была спасена от стагнации, — отметил он. — JCP погрязла в корпоративных интригах, и начальная стадия конфликта, связанного с Android, пришлась как раз на последний год, когда Java принадлежала Sun”.
Oracle серьезно взялась наводить порядок в Java, распределив новые функции по двум релизам, один из которых уже вышел. Компания разобралась с JavaFX и — возможно, неожиданно — обеспечила инвестиции в NetBeans и GlasFish.
“В целом, все выглядит хорошо, и прогресс налицо. Oracle удалось объединить всех вокруг JDK, в том числе IBM, Apple и Red Hat. Пришлось, однако, пожертвовать Apache, но мне кажется, что по прошествии некоторого времени они наведут мосты”, — добавил Хилва.