Oracle TechCasts возобновились. Сегодня [т.е. 16-го февраля] Марк Райнхольд рассказывал о JDK 7 и отвечал на вопросы зрителей. Райнхольд обсуждал самое существенное, над чем он работает в проекте OpenJDK, и раскрыл некоторые предварительные наметки, направленные на объединение кода JRockit и HotSpot. Project Lambda, о котором обычно говорят, как о «замыканиях для Java», также был темой обсуждения.
Первым нововведением в JDK 7, о котором говорил Райнхольд, является попытка разбить платформу Java SE на более мелкие части, так называемый Project Jigsaw («Мозаика»). Кроме улучшения производительности, Райнхольд считает ключевой пользой от Jigsaw возможность не только увеличивать масштаб систем на Java, но и уменьшать их, в том числе в устройства с малым объёмом памяти или места на диске. Jigsaw позволит установить только необходимую часть JDK в таких устройствах, не требуя 60 МБ, необходимых для всей JDK [Shemet в комментариях заметил, что скорее тут речь идёт о JRE, а не JDK]. Кроме того, Jigsaw должна также решить проблему «ада .jar» раз и навсегда. Разработчики наконец получат шанс попробовать Jigsaw в середине марта, когда будет выпущен билд 88. Она не будет пока включена в ядро платформы, но будет доступна для испытаний.
Второй главной целью JDK 7 является улучшение поддержки различных динамических языков. Этот проект добавит расширения общего назначения к JVM, которые позволят языкам, отличным от Java, достигать производительности, сопоставимой самой Java. Project Coin («Монета») внесёт существенные добавления в язык Java, сравнимые с изменениями, сделанными в Java 5. Главными нововведениями Java 5 были generics и цикл for-each. Подобно им, Coin должна упростить повседневное программирование. Райнхольд упомянул несколько добавлений в Coin, а именно «удивительно полезные» строки и switch, и оператор «ромб», который он назвал «чрезвычайно полезным для сложных generic-типов.» Coin также позволит писать на Java с использованием более компактного синтаксиса, «похожего на Python.»
Кроме того, Райнхольд рассказал об аннотациях типов и новом API для работы с файловой системой. Он сказал, что в JDK 7 наконец появится настоящий API для файловой системы, а то, что было в прошлых версиях, иначе как шуткой назвать нельзя. Аннотации типов должны внести большое улучшение в возможности статической проверки программ. Он назвал это «проверкой типов на стероидах.» На более высоком уровне, новая система fork-join должна принести большую пользу, наряду с по-настоящему параллельными потоко-безопасными загрузчиками классов. Один зритель спросил его о JSR 310, API для дат и времён. Он сказал, что очень хотел бы увидеть окончание этой работы, которая надолго задержалась.
Наконец, Райнхольд рассказал, почему он запустил Project Lambda, который должен добавить в Java 7 замыкания. Он сказал, что когда идея замыканий в Java была предложена впервые, она была недостаточно мотивирована и ни одно из предложений не вкладывалось в язык. Расширение использования многоядерных процессоров изменило ситуацию, и теперь он считает, что несколько ядер будет гораздо проще использовать с настоящими замыканиями. Сейчас его «просто тошнит» от того, как приходится извращаться, чтобы выразить в Java массивные операции вроде MapReduce. Продление графика JDK 7 дало ему возможность ввести замыкания сейчас, а не в JDK 8.
По мнению Райнхольда, разработчики хотят видеть, что Java развивается и «подаёт признаки жизни», при сохранении читабельности кода. Он говорит, что в проекте Лямбда уже участвует немало народа, и второй черновик спецификации почти готов. Веха 6 приближается, но в отличие от прошлой, сильного расширения возможностей не планируется.
Кроме работы над JDK, Райнхольд участвовал в нескольких встречах с разработчиками Sun, Oracle и других источников, где обсуждалась возможная интеграция HotSpot и JRockit. Сейчас это находится на стадии исследований, они смотрят, как эти две виртуальные машины подходят друг к другу. План постоянно меняется, говорит он, и они имеют дело с серьёзными проблемами. JRockit и HotSpot много лет вели жёсткое состязания, и у обеих есть собственные преимущества. JRockit, например, проще обслуживать. Их главная цель будет заключаться в том, чтобы повысить производительность и увидеть, чего ещё можно добиться от этих двух систем.
Ещё один зритель спросил Райнхольда о работе на Oracle и об его надеждах на JCP. Райнхольд ответил, что он уверен, что Oracle может расширить число участников JCP, что JCP уже много лет, как застрял, и он рассчитывает на то, что это наконец закончится. В своих встречах по поводу HotSpot/JRockit Райнхольд увидел, что многие технологи Oracle очень открыты новым идеям. Когда они покупают компании, они иногда отбрасывают свои собственные технологии, если купили лучшую. Как пример, он привёл WebLogic, купленную у BEA. Наконец, Райнхольда спросили о его планах на JavaOne в сентябре этого года. Он сказал, что собирается делать то же, что всегда — участвовать в нескольких докладах, пообщаться с сообществом, и засиживаться допоздна.
Первым нововведением в JDK 7, о котором говорил Райнхольд, является попытка разбить платформу Java SE на более мелкие части, так называемый Project Jigsaw («Мозаика»). Кроме улучшения производительности, Райнхольд считает ключевой пользой от Jigsaw возможность не только увеличивать масштаб систем на Java, но и уменьшать их, в том числе в устройства с малым объёмом памяти или места на диске. Jigsaw позволит установить только необходимую часть JDK в таких устройствах, не требуя 60 МБ, необходимых для всей JDK [Shemet в комментариях заметил, что скорее тут речь идёт о JRE, а не JDK]. Кроме того, Jigsaw должна также решить проблему «ада .jar» раз и навсегда. Разработчики наконец получат шанс попробовать Jigsaw в середине марта, когда будет выпущен билд 88. Она не будет пока включена в ядро платформы, но будет доступна для испытаний.
Второй главной целью JDK 7 является улучшение поддержки различных динамических языков. Этот проект добавит расширения общего назначения к JVM, которые позволят языкам, отличным от Java, достигать производительности, сопоставимой самой Java. Project Coin («Монета») внесёт существенные добавления в язык Java, сравнимые с изменениями, сделанными в Java 5. Главными нововведениями Java 5 были generics и цикл for-each. Подобно им, Coin должна упростить повседневное программирование. Райнхольд упомянул несколько добавлений в Coin, а именно «удивительно полезные» строки и switch, и оператор «ромб», который он назвал «чрезвычайно полезным для сложных generic-типов.» Coin также позволит писать на Java с использованием более компактного синтаксиса, «похожего на Python.»
Кроме того, Райнхольд рассказал об аннотациях типов и новом API для работы с файловой системой. Он сказал, что в JDK 7 наконец появится настоящий API для файловой системы, а то, что было в прошлых версиях, иначе как шуткой назвать нельзя. Аннотации типов должны внести большое улучшение в возможности статической проверки программ. Он назвал это «проверкой типов на стероидах.» На более высоком уровне, новая система fork-join должна принести большую пользу, наряду с по-настоящему параллельными потоко-безопасными загрузчиками классов. Один зритель спросил его о JSR 310, API для дат и времён. Он сказал, что очень хотел бы увидеть окончание этой работы, которая надолго задержалась.
Наконец, Райнхольд рассказал, почему он запустил Project Lambda, который должен добавить в Java 7 замыкания. Он сказал, что когда идея замыканий в Java была предложена впервые, она была недостаточно мотивирована и ни одно из предложений не вкладывалось в язык. Расширение использования многоядерных процессоров изменило ситуацию, и теперь он считает, что несколько ядер будет гораздо проще использовать с настоящими замыканиями. Сейчас его «просто тошнит» от того, как приходится извращаться, чтобы выразить в Java массивные операции вроде MapReduce. Продление графика JDK 7 дало ему возможность ввести замыкания сейчас, а не в JDK 8.
По мнению Райнхольда, разработчики хотят видеть, что Java развивается и «подаёт признаки жизни», при сохранении читабельности кода. Он говорит, что в проекте Лямбда уже участвует немало народа, и второй черновик спецификации почти готов. Веха 6 приближается, но в отличие от прошлой, сильного расширения возможностей не планируется.
Кроме работы над JDK, Райнхольд участвовал в нескольких встречах с разработчиками Sun, Oracle и других источников, где обсуждалась возможная интеграция HotSpot и JRockit. Сейчас это находится на стадии исследований, они смотрят, как эти две виртуальные машины подходят друг к другу. План постоянно меняется, говорит он, и они имеют дело с серьёзными проблемами. JRockit и HotSpot много лет вели жёсткое состязания, и у обеих есть собственные преимущества. JRockit, например, проще обслуживать. Их главная цель будет заключаться в том, чтобы повысить производительность и увидеть, чего ещё можно добиться от этих двух систем.
Ещё один зритель спросил Райнхольда о работе на Oracle и об его надеждах на JCP. Райнхольд ответил, что он уверен, что Oracle может расширить число участников JCP, что JCP уже много лет, как застрял, и он рассчитывает на то, что это наконец закончится. В своих встречах по поводу HotSpot/JRockit Райнхольд увидел, что многие технологи Oracle очень открыты новым идеям. Когда они покупают компании, они иногда отбрасывают свои собственные технологии, если купили лучшую. Как пример, он привёл WebLogic, купленную у BEA. Наконец, Райнхольда спросили о его планах на JavaOne в сентябре этого года. Он сказал, что собирается делать то же, что всегда — участвовать в нескольких докладах, пообщаться с сообществом, и засиживаться допоздна.