Сайт магистра

Якубчук Михаил Олегович

Java – движение вперед. От Java SE 7 к Java SE 8

Автор:В. С. Бабков

Источник:Библиотека ДонНТУ

Введение

В июле 2011 стал доступным для скачивания первый релиз Java с момента приобретения компании Sun компанией Oracle – Java 7 [1]. Данный релиз ознаменовал собой важный шаг в развитии Java-платформы, т.к. стал первым релизом с 2006 года. За последние 5 лет многое изменилось в сфере программирования: появились и исчезли новые языки, новые парадигмы и язык Java не мог остаться в стороне. Новшества, пришедшие как в базовый синтаксис языка, так и в библиотеки, прежде всего, нацелены на повышение эффективности программирования, упрощение решения повседневных задач программиста.

1 Новшества Java 7

Релиз включает в себя ряд небольших, но удобных изменений в языке, новый API для работы с файловыми системами, каркас для параллельного программирования Fork/Join, а также улучшает поддержку динамических языков на базе JVM. Для Java 7 изменения языка были продиктованы спецификацией JSR 334, направленной улучшение читабельности кода и производительности программ. Особо следует отметить появление конструкций автоматического управления ресурсами. Также два важных изменения были внесены в обработку исключений. Во-первых, несколько типов исключений можно обрабатывать единым блоком перехвата. Грамматика языка теперь позволяет указывать список перехватываемых исключений, разделяемых оператором «|». Во-вторых, реализован безопасный проброс исключений, что позволяет в случае «rethrow» и неизменности исключения внутри блока не добавлять исключение в сигнатуру метода с помощью ключевого слова throws.

Другие изменения языка включают в себя [2]:

  1. Возможность использовать строковые (String) константы в операторе switch.
  2. Поддержка бинарных литералов и разделителей (в виде символа подчеркивания) в числах, чтобы увеличить читабельность кода, например, long phoneNumber = 050_448_65_51L.
  3. Упрощение определения типа для обобщенных классов при создании экземпляра (так называемый оператор “diamond”), т.е. вместо ArrayList = new ArrayList(); теперь можно писать ArrayList = new ArrayList<>();
  4. Новый API доступа к файловой системе. Данный API обеспечивает новый набор классов и абстракций для работы с объектами FS (классы Path, Files, FileSystem, FileStore). Также файловые операции ввода-вывода сделаны в истинно асинхронном виде. Следует отметить, что улучшения библиотек для работы с файловыми системами, прежде всего, упрощают рекурсивные операции с деревьями объектов, работу с правами доступа, символьными ссылками и обеспечивают простое подключение новых файловых систем.
  5. Новый API для реализации параллельного выполнения частей кода. Данный механизм (каркас Fork/Join) [3] предназначен для того, чтобы разложить задачи на части, которые могут быть выполнены параллельно на произвольном числе процессорных ядер (рис. 1). Преимущество такого подхода, по сравнению с классической моделью многопоточности или пула исполнителей («Executors»)демонстрируется значительным приростом производительности на разветвляющихся параллельных операциях (табл. 1).
Концепция каркаса Fork/Join [3]
Рисунок 1 – Концепция каркаса Fork/Join [3]

Отдельно от синтаксических нововведений необходимо отметить расширенную поддержку интернационализации, в том числе Unicode 6.0. Кроме того, что особо примечательно, впервые с появления спецификации JVM в состав системы команд виртуальной машины Java введена новая команда. Команда «InvokeDynamic» добавляет режим вызова метода со связыванием, которое может быть запрограммировано на основе пользовательских спецификаций. Данный вызов специально предназначен для эффективного и гибкого вызова методов при отсутствии статической информации о типах, что обеспечивает возможность выполнения на виртуальной машине программ, скомпилированных в байт-код из языков с динамической типизацией, например JRuby и Jython.

На данный момент работа с Java SE 7 поддерживается в таких средах разработки как NetBeans 7.0, IntelliJ IDEA, Eclipse.

Таблица 1. Результаты тестирования для каркаса Fork/Join [3]
Количество ядер Однопоточная реализация, время, мс Реализация Fork/Join, время, мс Ускорение
2 18798 11026 1.704879376
4 19473 8329 2.337975747
8 18911 4208 4.494058935
12 19410 2876 6.748956885

2 Пути развития. К платформе Java 8

Несмотря на недавний выход релиза Java 7, на конференции Java One летом этого года компания Oracle объявила о своих планах по развитию и продвижению платформы Java 8, в том числе с линейкой релизов для Mac OS X [4]

Схема «дорожной карты» развития платформы показана на рис. 2.

«Дорожная карта» развития платформы Java (Java One 2011 Slides) [4]
Рисунок 2 – «Дорожная карта» развития платформы Java (Java One 2011 Slides) [4]

Oracle планирует выпустить реализацию платформ Java SE 7 и Java FX 2.0 для Mac OS X во 2 квартале 2012 года. Сообщество OpenJDK также займется внедрением прототипа Java SE 8. Основные усилия сообщества будут направлены на улучшение HotSpot Java Virtual Machine (JVM). Также Oracle будет продолжать работу по слиянию Oracle Java HotSpot JVM и Oracle JRockit JVM в конвергентное приложение. JDK 7 уже содержит первую версию конвергентной JVM, с особенностями JRockit. Движение вперед к релизу Java SE 8 предполагается завершить летом 2013 года. Из основных предполагаемых нововведений «восьмерки» можно выделить:

3 Java и RIA

Также перспективным направлением для Oracle является продвижение Java в сфере построения RIA-приложений. После ряда неудач, связанных с выводом на рынок платформы Java FX, было принято решение перейти от специализированного декларативного языка на классический Java с сохранением всех новшеств и возможностей Java FX. Планы Oracle по развитию платформы Java FX представлены на следующей «дорожной карте» (рис. 3) [4].

Еще одним интересным проектом в рамках развития RIA-приложений на Java является проект «Avatar». Проект «Avatar» - это путь интеграции Java и современной инфраструктуры веб, основанной на стандарте HTML5 [5]. На данный момент проект находится на начальной стадии и впервые был анонсирован на конференции Java One 2011.

«Дорожная карта» развития платформы Java FX (Java One 2011 Slides) [4]
Рисунок 3 – «Дорожная карта» развития платформы Java FX (Java One 2011 Slides) [4]

Выводы

Подводя итог, можно сказать, что Java-платформа остается динамически развивающейся платформой, которая старается идти в ногу со временем, стараясь воплотить в себе передовые идеи. Путь развития, предложенный компанией Oracle, основывается на максимальной интеграции всех компонентов Java-платформы с целью достижения максимальной производительности и гибкости в разработке.

В частности, одной из целей объединения является плотная интеграция платформы Java ME в экосистему Java, т.к. до последнего времени разработка мобильных приложений на Java представляла собой обособленную ветвь развития.

Литература

  1. Java 7 release. Электронный ресурс. Режим доступа: https://blogs.oracle.com/javase/entry/java_7_has_released
  2. Java SE 7 Released: First Major Update Since December 2006. Электронный ресурс. Режим доступа: http://www.infoq.com/news/2011/07/javase7-ga
  3. Fork and Join: Java Can Excel at Painless Parallel Programming Tool. Электронный ресурс. Режим доступа: http://www.oracle.com/technetwork/articles/java/fork-join-422606.html
  4. JavaOne 2011 : Road Map – Review & Slides. Электронный ресурс. Режим доступа: http://www.vavario.com/2011/10/javaone-2011-road-map.html
  5. JavaOne Unveils Project Avatar: One HTML5 Strategy to Rule Them All. Электронный ресурс. Режим доступа: http://www.theserverside.com/discussions/thread.tss?thread_id=63069