Марк Райнхольд о JDK 7, замыканиях, JRockit и HotSpot

Original author: mitchp
  • Translation
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 в сентябре этого года. Он сказал, что собирается делать то же, что всегда — участвовать в нескольких докладах, пообщаться с сообществом, и засиживаться допоздна.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 33

    0
    А может кто объяснить, что за «ад .jar» и как мозаика его поможет решить?
      +5
      я думаю в поиске набрав JAR HELL, Вы найдете ответы подробные.
      Хотя вот сразу первые две ссылки про это
      incubator.apache.org/depot/version/jar-hell.html
      en.wikipedia.org/wiki/Java_Classloader
      Если я понимаю верно, то это очень смахивает на dll hall. Когда у программы могут быть не те версии модулей которые ему нужны. из-за чего программа может работать не корректно. а тк модулей идентичных может несколько, не понятно из какого взят код. очень сложно искать ошибки из-за этого
        +1
        Если они это пофиксят, я им лично поставлю памятник. Возможно, небольшой, но рукотворный.
          +1
          Jigsaw отвратно решает проблему jar-ов. Пэкеджинг уже пытаюстся встроить в сам язык, а это не есть хорошо! И вообще, такое впечатление, что это jigsaw не для широкого использоваиня, и предназначается только для организации пакетов и зависимостей внутри самой jvm.

          Кстати, перспективное направление решения проблемы jar-hell — это OSGi, которая уже давно используется в том же Eclipse.
            0
            Да, OSGi — хорошая штука.
              0
              Можете привести примеры приложений, в которых успешно используется инфраструктура OSGi, например, для обновления и подключения сторонних модулей. (Eclipse есть. Что ещё?)
                0
                Spring DM Server использует OSGi, сервисная платформа Apache ServiceMix (он же Fuse). Большинство J2EE серверов собираются переходить на OSGi, несмотря на то, что он до сих не входит в стандарт J2EE 6.

                Да и вообще очень удобно использовать как контейнер в любом собственном проекте. Для этого не нужно ставить всю инсталяцию сервера апликаций, а достаточно набирать только необходимые бандлы. Получается компактная минифицированная система.
            0
            Собственно, в оригинале была ссылка на en.wikipedia.org/wiki/Java_Classloader#JAR_hell, я её забыл вставить. Исправил.
              0
              Это как раз тот случай, когда оригинальное произношение понятнее, чем перевод. :))
              +2
              «лед тронулся господа присяжные»
                –25
                > должен добавить в Java 7 замыкания

                Лавры лиспа покоя не дают?

                > Java развивается и «подаёт признаки жизни»

                Может предсмертные конвульсии?
                  +6
                  можно подумать замыкания только в LISP'е есть. Это удобно и востребовано, вот и добавляют.
                  С покупкой Ораклом смерти явы точно не дождетесь ;)
                    –11
                    Да тихо ты, моя провокация в теме с эппл и Джобсом была как-то странно для хабра принята. Может хоть тут потроллить удастся. =(
                      0
                      прости, бро :'(
                    0
                    Почему именно Лиспа? Думаю, очевидно, что на желание ввести замыкания в Java в первую очередь повлияло их наличие в C#, во всех динамических языках на платформе JVM, в Scala, и т.д.
                    +4
                    Ура! Я искренне рад за платформу! Теперь мне больше не будут сниться кошмары.
                    • UFO just landed and posted this here
                        –1
                        не раньше шестерки.
                        • UFO just landed and posted this here
                        +1
                        > Главными нововведениями Java 5 были generics и цикл for-each.
                        Generics да, но for-each разве важнее аннотаций, или даже enum?
                          0
                          Ну, можно конечно и итераторами списки перебирать, но так намного удобнее.
                            +6
                            При чём здесь это? Я говорю что аннотации — намного более важное и серьёзное нововведение нежели enhanced for, но при перечислении нововведений Java 5 предпочли вспомнить именно о enhanced for а не об аннотациях.
                              0
                              for чаще используют?
                                +3
                                Чаще? Как знать. Аутобоксинг вообще часто «встречается», и что он от этого становится важен?
                                Без енхансд фора легко жить, а вот без аннотаций один только перзистенс уже становится адом. Честно говоря я даже не в курсе предусматривает ли JPA вообще чисто XML-ные конфиги, или он не работает вообще без аннотаций.
                                Я лично бы енхансед фор «отдал обратно» в любой момент, но аннотации — никогда.
                              +1
                              P.S. Можно в принципе перзистенс, депенденси инжекшн и прочие вещи конфигурировать через XML-и, но аннотациями намного удобнее (-;
                                0
                                У использования аннотация и XML просто разные цели.

                                Аннотации — для того, что четко и понятно на стадии дизайна и разработки. XML — то, что может (и должно) конфигурировать деплоером.
                                  0
                                  Согласен с тем что это правильный их применения, хотя на практике не всегда всё так чётко разграничено.

                                  Но в любом случае Аннотации это очень важная штука, даже более важная чем дженерики, ИМО, что уже говорить про enhanced for. Вот и всё что я пытаюсь сказать.
                            0
                            > Главными нововведениями Java 5 были generics и цикл for-each.
                            Аннотации забыли, это существенное изменение, как языка, так и формата классфайлов, и самой JVM.
                            Цикл фор ич — это как раз просто синтаксический сахар, который разворачивается внутри в обычный for-цикл компилятором.

                            И еще — ваше постоянное «Монета» чуть напрягает, я бы писал не переводя- «Проект Coin».

                            А в целом — хорошая новость, плюсую.
                              0
                              Сорри, не обновил ветку комментов :(
                                0
                                А, вижу вы собственно одного мнения со мной по этому поводу. Здорово.

                                Кстати полностью согласен с вами по поводу «Coin» — всётаки имя собственное (пушкина ж каким-нибудь там Cannoner-ом не называют америкосы (-: )
                                  0
                                  Хорошо, в следующий раз оставлю такие названия без перевода.
                                +3
                                >Мозаика позволит установить только необходимую часть JDK в таких устройствах, не требуя 60 МБ, необходимых для всей JDK.

                                А зачем JDK на устройствах, может имелось ввиду JRE.

                                > Сейчас его «просто тошнит» от того, приходится извращаться, чтобы выразить

                                Спасибо автору за статью, но вы хоть бы сами прочитали ее. )
                                  0
                                  > А зачем JDK на устройствах, может имелось ввиду JRE.

                                  Действительно непонятно, но в оригинале так:

                                  Project Jigsaw installs just a piece of the JDK in those small devices without requiring the cumbersome 60MB of space for the whole thing.

                                  >> Сейчас его «просто тошнит» от того, приходится извращаться

                                  Исправил.

                                  > но вы хоть бы сами прочитали ее.

                                  К сожалению, в собственном тексте ошибки заметить трудней :(

                                Only users with full accounts can post comments. Log in, please.