Вчера состоялось мероприятие по запуску, чтобы отпраздновать тот факт, что сборка 147 Java 7 стала первым и, надеюсь, единственным кандидатом на выпуск долгожданного JDK 7, общий выпуск которого запланирован на 28 июля.
Что наиболее важно в Java 7?
По словам Марка Рейнхольда, главного архитектора группы платформ Java в Oracle,
«Тот факт, что на самом деле доставка».
Он говорит в видео ниже, которое было записано за два дня до прямого эфира, что Java 7 почти 5 лет следовала за Java 6 по деловым и политическим причинам, в течение которых Java перешла в «режим гибернации».
Он также говорит о Java 7:
это не революция, это эволюция.
Адам Мессингер, руководитель группы разработчиков Java в Oracle, предложил обсудить особенности выпуска, который он ведет, с JSR 203, который он описывает как преемник JSR 41, который ввел неблокирующий ввод-вывод и улучшил абстракцию каналов. Теперь 203 предоставляет действительно асинхронный API ввода-вывода, что важно для высокопроизводительных серверных приложений и баз данных, которым требуется низкая задержка в сочетании с высокой пропускной способностью и доступом к нескольким каналам.
Далее Рейнгольд указывает, что JSR 203, наконец, приносит «реальный API файловой системы», описывающий существующий файл ввода-вывода Java как «жалкий» и сделанный «в некоторой спешке». Новый API способен создавать символические ссылки и является «умным» в том смысле, что его наслоение позволяет выполнять независимые от платформы операции, которые обеспечивают более тесную интеграцию, скажем, с Windows или Unix. Рейнгольд отмечает, что, хотя пуристы могут сказать, что это нарушение базового принципа Java write-once-run-anywhere, он считает, что лучше иметь эти средства для лучшей интеграции с конкретными платформами.
Затем Джон Роуз, инженер-консультант в группе VM, в ответ на вопрос «Что нового в виртуальной машине», представляет InvokeDynamic, первую новую инструкцию с начала Java, которая, по его признанию, будет представлять непосредственный интерес для очень ограниченного числа разработчиков. Он сравнивает это с «фитингом для труб», который будет интересен таким людям, как он, чья роль — «сантехник».
InvokeDynamic выполняет функцию, которая была специально исключена из исходной виртуальной машины, поскольку она была специфична для Java. Теперь, когда люди создают сотни различных языков на виртуальной машине и сталкиваются с ограничениями оптимизации, инструкция предоставляет новый режим вызова, который может быть запрограммирован в соответствии с определяемыми пользователем спецификациями.
Рассматривая далее языковую сторону, главный инженер Джо Дарси в группе языков вводит небольшие языковые изменения, называемые Project Coin, которые предназначены для упрощения обычных повседневных задач программирования.
К ним относятся:
строки в операторах switch
инструкции try-with-resources
улучшен вывод типа для создания универсального экземпляра («diamond»),
упрощенный вызов метода varargs,
лучшие интегральные литералы
улучшена обработка исключений (multi-catch)
Затем обсуждение переходит к Java 8, и вы можете увидеть это сами здесь.
На мероприятии по запуску Марк Рейнгольд также выделил фреймворк Fork/Join (JSR 166y) под руководством «гения параллелизма» Дуга Ли, который, уйдя из JCP, продолжил свою работу над OpenJDK. Этот легкий фреймворк, который включает гибкие и многократно используемые барьеры синхронизации, очереди передачи, параллельные связанные двойные очереди и локальные генераторы псевдослучайных чисел, рассматривается как средство обеспечения истинного параллелизма на платформе.
По словам Рейнгольда
«Это первый шаг к тому, чтобы действительно включить Java для многоядерных приложений.»
Таким образом, сегодняшняя Java готова к многоядерному миру, в котором мы живем уже некоторое время, и она прекрасно сочетается с другими целевыми языками JVM. Единственное, что портит настоящее, — это тот факт, что нам пришлось так долго ждать, пока оно будет доставлено. Действительно, действительно верно сказать, что самое важное в Java 7-это то, что он поставляется… ну, почти…