- PVSM.RU - https://www.pvsm.ru -
На конференции JavaOne 2013, которая недавно завершилась в Сан-Франциско, компании Microsoft Open Technologies и Azul Systems анонсировали Zulu — порт OpenJDK для облачной платформы Windows Azure. Учитывая, что три месяца назад Oracle и Microsoft объявили о партнёрстве в области облачных технологий, многие ожидали, что именно Oracle выпустит JVM для облачной платформы от Microsoft. Однако такую JVM выпустила Azul Systems, многолетний лицензиат [1] Java SE, известный своими высокопроизводительными решениями для серваков с большими хипами.
В первой части статьи мы попробуем разобраться, кто такой этот Zulu и что нам от него ожидать.Ну а потом мы перейдём к распаковке Zulu Technology Preview и, в качестве побочного эффекта, посмотрим, чем же Oracle так нашпиговала свою JDK, что та весит в полтора раза больше Zulu.
Интересные времена наступают. Точнее, уже наступили. В последние полгода Azul и Microsoft как-то сильно активизировались в плане Java, причём именно в России. Посудите сами:
Вообще Azul Systems известна своими высокопроизводительными Java-решениями.
Начали они с того, что сделали свою Java на… железе. Решение называется Azul Vega [11]. Последние версии содержат [12] сотни вычислительных ядер и сотни гигабайт RAM.
TheShade [13] как-то рассказывал байку времён своей работы в Intel. Мол, брали они стандартную бенчмарку, в которой Sun'овская Java давала 4000 попугаев, начинали оптимизировать свою имплементацию и после долгих трудов им удавалось выжать 5000 попугаев. «Ура!», кричали они, и публиковали статью о том, как они уделали сановскую имплементацию аж на 25%. После этого приходили парни из Azul, брали бенчмарку и получали на своей Vega не 4000 и не 5000 попугаев, а миллион. Занавес.
Потом они создали чисто софтовое решение — Zing для Linux. Судя по всему, начиная с какой-то версии Linux 2.6 API Linux стало достаточно для того, чтобы отказаться от железной части и портировать свои лучшие наработки из железной части в софт. Вышло довольно круто. Zing позиционируется как решение для тачек с большими хипами:
Как известно, каждая плюшка чего-то стоит. В случае low latency нам всегда приходится жертвовать всем остальнымthroughput'ом. Известный мастер elizarov [16] рассказывал недавно за чаем, что крутых latency они добивались на стенде при загрузке процов на 5%, а уже в районе 10% latency начинал сильно проседать. Возможно, крутаны из Azul могли бы затюнить своё решение гораздо лучше, но речь сейчас вообще не об этом.
Что же официально говорит нам Azul в своём пресс-релизе [10]?
Во-первых, говорится про Windows Azure. Во-вторых, встречается модное нынче «community-driven». В третьих, говорится про полную совместимость [1] со спецификацией Java SE 7. Значит, эти ребята не сильно разломали OpenJDK, что радует :) Но это всё и так понятно.
Из интересного: Azul будет активно заливать в OpenJDK патчи и багфиксы. То есть, не только пользоваться чужим, но и вносить свой вклад. Это крутое заявление, но не новое. Любой нормальный лицензиат Java так делает хотя бы для того, чтобы избавиться от головной боли.
Представим себе, что у нас есть хитрый лицензиат Вася, который нашёл баг в OpenJDK, пофиксил его в своём форке, но не сказал остальным. Ту бишь, не за бэкпортил. И сидит такой довольный собой. Допустим, через месяц ту же проблему нашёл честный Петя, пофиксил её своим способом и залил в OpenJDK. В итоге при первой же синхронизации с обновлённым OpenJDK у Васи случится
батхёрткофликт в исходниках, с которым нужно будет разбираться. А это то ещё удовольствие.
В Редмонде тоже не дремлют. Чувак из Microsoft Open Technologies <a href="">пишет на MSDN [17], что фишка в том, что теперь последние версии OpenJDK 7 для Windows теперь доступна в бинарном виде благодаря Zulu, а в дальнейшем цитирует пресс-релиз Azul.
Joab Jackson [18] на ComputerWorld отмечает [19] очевидное: Azul будет [20] дефолтной платформой в Azure для тех, кому Java в Azure нужна как сервис. Кроме того, он упоминает Oracle Cloud [21], в котором Oracle почему-то не предоставяет Java SE как сервис, а предоставляет как сервис более высокоуровневое решение — Java EE. Типа, деплойте-ка своё JavaEE-приложение в Oracle Cloud, а дальше мы сами разберёмся, как его эффективно выполнять.
Звучит разумно с точки зрения облачной модели c одной стороны и как забивание болта на Java SE с другой. Нужна ли бизнесу Java SE без Java EE? Стоит ли ради неё заморачиваться? Судя по статье [22], Microsoft отвечает на этот вопрос скорее утвердительно, а Oracle скорее отрицательно. Следует лишь заметить напоследок, что это статья на ComputerWorld, а не официальный релиз Oracle или Microsoft.
www.pcworld.com/article/2049415/microsoft-sails-past-oracle-in-bringing-java-se-to-the-cloud.html [22]
Итак, потрогаем Zulu Technology Preview. На официальном сайте Azul Systems лежит ссылка [23]. Кликаем и, о чудо, перед нами 60-мегабайтный zip-архив. Судя по названию, этот билд собран на OpenJDK 7u25 и заточен под Windows x64. Для справки, Oracle JDK 7u25 под win x64 весит около 90 мегабайт, а Oracle JDK 7u40 аж целых 125 мегабайт. Запускаем:
D:zulu1.7.0_25-7.0.0.0-win64bin>java -version
openjdk version «1.7.0_25»
OpenJDK Runtime Environment (Zulu 7.0.0.0-win64) (build 1.7.0_25-b34)
OpenJDK 64-Bit Server VM (Zulu 7.0.0.0-win64) (build 23.25-b03, mixed mode)
хмм, ну ок. Тогда пройдёмся по внутренностям архива.
Распакованная jdk 1.7.0_25 весит 216 мегабайт, а распакованная zulu 1.7.0_25 весит 136 мегабайт. Где же собака порылась оставшиеся 80 метров?
На этом месте я понял, что разница с точки зрения именно файлового содержимого — в том, что Oracle JDK включает пачку собственных проприетарных технологий, поэтому весит сильно больше и сравнение не совсем корректно. В этом смысле, нужно было сравнивать сборки Oracle JDK и OpenJDK под Ubuntu — было бы проще.
Итак, как результат: под капотом у нас применение разных компиляторов под винду (или, по крайней мере, разные настройки одного компилятора) и несколько технологий от Oracle, нужных не всем и раздувающих дистрибутив. Именно для того, чтобы побороть последнюю проблему, в Java SE 8 реализованы Compact Profiles [26]. Я понимаю, что сравнивать две софтины по набору файлов — это полный идиотизм, и нужно копать дальше и запускать всё это, меряться попугаями и т.п. Но это материал для технической статьи, а не обзорной.
Я взял Dcompiler.jar и…
D:>D:zulu1.7.0_25-7.0.0.0-win64binjava.exe -jar DCompiler.jar
Exception in thread «main» java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:208)
at java.awt.Window.(Window.java:535)
at java.awt.Frame.(Frame.java:420)
at java.awt.Frame.(Frame.java:385)
at javax.swing.JFrame.(JFrame.java:180)
at MainFrame.(MainFrame.java:253)
at Gui.create(Gui.java:18)
at Gui.main(Gui.java:49)Мда, она ещё и Headless [27]. Это значит, что
эти парни выпилили из своей джавы AWT и SwingZulu предназначена только для серверов. IntelliJ IDEA вы на ней не запустите. Вот так.Заключение
Для меня по-прежнему остаётся загадкой, в чём же специфика Zulu. На ум приходит только какое-то потенциальное тесное сотрудничество Azul Systems и Microsoft в плане компиляции и оптимизации нативного кода OpenJDK под винду. Может быть, какие-нибудь навеянные совместными усилиями оптимизации в JIT. Может быть, какие-то куски из Zing, который является продуктом для Linux, будут портированы (или уже портированы) в Zulu.
Почему же Zulu позиционируется именно как решение для Windows Azure, а не просто как сборка OpenJDK под винду. Что это? Маркетинг? Ну ок. А что в Zulu технически нового? Какова специфика Zulu? Хочется верить, что это действительно выльется во что-то интересное технически и даст Java-миру что-то принципиально новое. Пока что я вижу только порт OpenJDK на Windows x64. Что я упустил? Кто из вас что знает про Zulu? Ну же?
В то же время, налицо интересное противоречие между Zing и Zulu. Zing — это продукт для одной большой тачки. А Zulu, как заявлено, продукт для облака, то есть для множества мелких тачек. Чего хочет добиться Azul? Играть на обоих рынках? Можно ли при таком противоречии портировать какие-то решения из Zing в Zulu? Или это просто порт OpenJDK, что называется, без претензий на лидерство? В общем, много интересного. Время покажет.
Ну и вообще — Java в облаке, JVM в облаке. Что это и зачем? Быстрое клонирование работающего рантайма между машинами в облаке? Возможность менять настройки хипа на лету? Автоматический форк инстансов при выполнении каких-то условий? Реализация I/O (диска и сети), оптимизированная для виртуальных машин? В общем, вопросов масса.
Порассуждать на эти и другие темы я приглашаю вас на конференции Joker 2013 [28], которая пройдёт в Питере уже через две недели. Среди прочих, в программе конференции будет доклад от CTO Azul Systems Гила Тини про сборку мусора и доклад от Александра Белоцерковского из Microsoft как раз про Java в Windows Azure. И именно им двоим лично я и хочу задать озвученные выше вопросы.
Автор: 23derevo
Источник [29]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/44590
Ссылки в тексте:
[1] лицензиат: http://en.wikipedia.org/wiki/Technology_Compatibility_Kit#TCK_for_the_Java_platform
[2] Image: http://ru.wikipedia.org/wiki/%D0%97%D1%83%D0%BB%D1%83%D1%81%D1%8B
[3] JPoint: http://javapoint.ru/
[4] спонсором: http://www.worlditsystems.ru/worlditsystems.ru/index.php/ru/about-us/press-center/256-press-center
[5] Аня Барски: http://www.linkedin.com/in/anyabarski
[6] слухи: http://itop-portal.net/news/1154/show
[7] объявляют: http://techcrunch.com/2013/06/24/microsoft-and-oracle-team-up-to-bring-java-oracle-database-linux-and-weblogic-server-to-azure-and-windows-server/
[8] партнёрстве: http://blogs.technet.com/b/microsoft_blog/archive/2013/06/24/partners-in-the-enterprise-cloud.aspx
[9] подтвеждаются: http://vk.com/anyabarski?w=wall2513159_299%2Fall
[10] представляют: http://www.azulsystems.com/press/azul-systems-releases-zulu
[11] Azul Vega: http://www.azulsystems.com/products/vega/processor
[12] содержат: http://www.azulsystems.com/products/vega/specs
[13] TheShade: http://habrahabr.ru/users/theshade/
[14] low latency, GC без пауз: http://www.azulsystems.com/technology/c4-garbage-collector
[15] и так далее: http://www.azulsystems.com/products/zing/whatisit
[16] elizarov: http://habrahabr.ru/users/elizarov/
[17] ">пишет на MSDN: http://blogs.msdn.com/b/interoperability/archive/2013/09/25/azul-systems-releases-zulu-an-openjdk-build-for-windows-azure-in-partnership-with-ms-open-tech.aspx
[18] Joab Jackson: https://twitter.com/Joab_Jackson
[19] отмечает: http://www.computerworld.com/s/article/9242688/Microsoft_sails_past_Oracle_in_bringing_Java_SE_to_cloud
[20] будет: http://www.computerworld.com/s/article/9241519/Microsoft_adds_Java_to_its_Windows_Azure_cloud_service
[21] Oracle Cloud: https://cloud.oracle.com/mycloud/f?p=service:home:0
[22] статье: http://www.pcworld.com/article/2049415/microsoft-sails-past-oracle-in-bringing-java-se-to-the-cloud.html
[23] ссылка: http://azure.azulsystems.com/zulu/zulu1.7.0_25-7.0.0.0-win64.zip
[24] Java Accessibility: http://docs.oracle.com/cd/E17802_01/j2se/javase/technologies/accessibility/docs/jaccess-1.3/doc/core-api.html
[25] VisualVM: http://visualvm.java.net/
[26] Compact Profiles: http://openjdk.java.net/jeps/161
[27] Headless: http://www.oracle.com/technetwork/articles/javase/headless-136834.html
[28] Joker 2013: http://jokerconf.com/
[29] Источник: http://habrahabr.ru/post/195740/
Нажмите здесь для печати.