Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Azul Zulu — JVM для облака либо легко порт OpenJDK на Windows?

Anna | 4.06.2014 | нет комментариев
На конференции JavaOne 2013, которая незадолго завершилась в Сан-Франциско, компании Microsoft Open Technologies и Azul Systems анонсировали Zulu — порт OpenJDK для облачной платформы Windows Azure. Рассматривая, что три месяца назад Oracle и Microsoft объявили о партнёрстве в области облачных спецтехнологий, многие ждали, что именно Oracle выпустит JVM для облачной платформы от Microsoft. Впрочем такую JVM выпустила Azul Systems, многолетний лицензиат Java SE, знаменитый своими высокопроизводительными решениями для серваков с крупными хипами.

В первой части статьи мы испробуем разобраться, кто такой данный Zulu и что нам от него ждать. Это только предисловие пути либо теснее готовое решение? Во 2-й части мы перейдём к распаковке Zulu Technology Preview и, в качестве побочного результата, посмотрим, чем же Oracle так нашпиговала свою JDK, что та весит в полтора раза огромнее Zulu.

Java: Oracle и IBM? Azul и Microsoft!

Увлекательные времена наступают. Вернее, теснее наступили. В последние полгода Azul и Microsoft как-то крепко активизировались в плане Java, причём именно в России. Посудите сами:

Кто такие Azul

Вообще Azul Systems знаменита своими высокопроизводительными Java-решениями. Начали они с того, что сделали свою Java на… железе. Ну вернее, оно линуксовое, легко все вычисления выполняются на отдельной плате (на ум сразу приходит NVidia CUDA). Решение именуется Azul Vega. Последние версии содержат сотни вычислительных ядер и сотни гигабайт RAM.

TheShade как-то рассказывал байку времён своей работы в Intel. Мол, брали они стандартную бенчмарку, в которой Sun’овская Java давала 4000 попугаев, начинали оптимизировать свою имплементацию и позже длинных трудов им получалось выжать 5000 попугаев. «Ура!», кричали они, и публиковали статью о том, как они уделали сановскую имплементацию даже на 25%. Позже этого приходили парни из Azul, брали бенчмарку и получали на своей Vega не 4000 и не 5000 попугаев, а миллион. Занавес.

Несколько лет назад Azul сотворили чисто софтовое решение — Zing для Linux. Судя по каждому, начиная с какой-то версии Linux 2.6 API Linux стало довольно для того, Дабы отказаться от железной части и портировать свои лучшие наработки из железной части в софт. Вышло достаточно резко. Zing позиционируется как решение для тачек с крупными хипами:

Как вестимо, всякая плюшка чего-то стоит. В случае low latency нам неизменно доводится жертвоватькаждому остальнымthroughput’ом. Знаменитый мастер elizarov рассказывал незадолго за чаем, что резких latency они добивались на стенде при загрузке процов на 5%, а теснее в районе 10% latency начинал крепко проседать. Допустимо, крутаны из Azul могли бы затюнить своё решение значительно отменнее, но речь теперь вообще не об этом.

Пресс-релиз от Azul

Что же официально говорит нам Azul в своём пресс-релизе?
Во-первых, говорится про Windows Azure. Во-вторых, встречается модное ныне «community-driven». В третьих, говорится про полную совместимость со спецификацией Java SE 7. Значит, эти ребята не крепко разрушили OpenJDK, что радует :) Но это всё и так ясно.

Из увлекательного: Azul будет энергично заливать в OpenJDK патчи и багфиксы. То есть, не только пользоваться чужим, но и вносить свой взнос. Это резкое заявление, но не новое. Всякий типичный лицензиат Java так делает правда бы для того, Дабы избавиться от головной боли.

Предположим себе, что у нас есть хитроумный лицензиат Вася, тот, что нашёл баг в OpenJDK, пофиксил его в своём форке, но не сказал остальным. Ту бишь, не за бэкпортил. И сидит такой удовлетворенный собой. Возможен, через месяц ту же загвоздку нашёл Добросовестный Петя, пофиксил её своим методом и залил в OpenJDK. В выводе при первой же синхронизации с обновлённым OpenJDK у Васи случится батхёрт кофликт в исходниках, с которым необходимо будет разбираться. А это то ещё наслаждение.

Глазами Microsoft

В Редмонде тоже не дремлют. Чувак из Microsoft Open Technologies пишет на MSDN, что фишка в том, что сейчас последние версии OpenJDK 7 для Windows сейчас доступна в бинарном виде вследствие Zulu, а в последующем цитирует пресс-релиз Azul.

Пресса

Joab Jackson на ComputerWorld подмечает явственное: Azul будет дефолтной платформой в Azure для тех, кому Java в Azure необходима как сервис. Помимо того, он упоминает Oracle Cloud, в котором Oracle отчего-то не предоставяет Java SE как сервис, а предоставляет как сервис больше высокоуровневое решение — Java EE. Типа, деплойте-ка своё JavaEE-приложение в Oracle Cloud, а дальше мы сами разберёмся, как его результативно исполнять.

Звучит умно с точки зрения облачной модели c одной стороны и как забивание болта на Java SE с иной. Необходима ли бизнесу Java SE без Java EE? Стоит ли ради неё заморачиваться? Судя по статье, Microsoft отвечает на данный вопрос скорее утвердительно, а Oracle скорее негативно. Следует лишь подметить напоследок, что это статья на ComputerWorld, а не формальный релиз Oracle либо Microsoft.

Распаковка

Выходит, потрогаем Zulu Technology Preview. На официальном сайте Azul Systems лежит ссылка. Кликаем и, о Диво, перед нами 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)

хмм, ну ок. Кажется, мы получили результат на 1-й вопрос. На данный момент, на осень 2013 года, Azul Zulu — это только предисловие плана по облачной Java.

Пройдёмся по внутренностям архива. Распакованная jdk 1.7.0_25 весит 216 мегабайт, а распакованная zulu 1.7.0_25 весит 136 мегабайт. Где же собака порылась оставшиеся 80 метров?

  • папка bin весит в Zulu 1.7 метров вопреки 2.5 в Oracle JDK. Мелочь, но увлекательно. Заходим вовнутрь и видим, что наименования файлов те же, только вот размеры различные. Множество мелких exe-шников у Oracle весит по 16 килобайт, а у Azul — по 9 мегабайт. Такое чувство, что разница легко в компиляторе, которым эти самые екзешники делали. Ну либо в настройках. java.exe и javaw.exe отличаются на 11 кило (185 у Oracle вопреки 174 у Azul). Значительно отличается размер unpack200.exe (177К вопреки 109К). Радует, что правда бы майкрософтовская msvcr100.dll весит поровну в обоих дистрибутивах :)
  • 5-мегабайтной папки db c JavaDB у Azul нет. Но есть папки demo и sample суммарным весом как раз приблизительно 5 метров.
  • src.zip весит приблизительно идентично, по 21 мегабайту
  • папка include у Oracle огромнее на 150К за счёт наличия врапперов вокруг вызовов AccessBridge DLL, требуемой для работы Java Accessibility
  • jre у Azul поменьше на 50 метров: 76 вопреки 126. Заглянем вовнутрь. jre/bin весит 13 метров вопреки 36. Из крупняка там нет библиотек для упомянутого Java Accessibility (пара мегабайт), JavaFX (я насчитал 15 мегабайт). Ну и по мелочи: JdbcOdbc, JavaWebStart Acivex Control и т.п. Ещё 2 мегабайта отыскалось в jre/lib/fonts. Ещё 15 метров отыскались в jre/lib/jfxrt.jar (классы JavaFX). Ещё 4 метра — в Deploy.jar …
  • Ещё 27 мегабайт в оракловой джаве занимает VisualVM — профилировщик, портированный несколько лет назад из плагина NetBeans в отдельное приложение.

На этом месте я осознал, что разница с точки зрения именно файлового содержимого — в том, что Oracle JDK включает пачку собственных проприетарных спецтехнологий, следственно весит крепко огромнее и сопоставление не вовсе правильно. В этом смысле, необходимо было сопоставлять сборки Oracle JDK и OpenJDK под Ubuntu — было бы проще.

Выходит, как итог: под капотом у нас использование различных компиляторов под винду (либо, по крайней мере, различные настройки одного компилятора) и несколько спецтехнологий от Oracle, необходимых не каждому и раздувающих дистрибутив. Именно для того, Дабы побороть последнюю загвоздку, в Java SE 8 реализованы Compact Profiles. Я понимаю, что сопоставлять две софтины по комплекту файлов — это полный идиотизм, и необходимо копать дальше и запускать всё это, меряться попугаями и т.п. Но это материал для технической статьи, а не обзорной.

Давайте её запустим!

Первым jar-ником, попавшимся мне под руку оказался Dcompiler Выходит, java -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.<init>(Window.java:535)
     at java.awt.Frame.<init>(Frame.java:420)
     at java.awt.Frame.<init>(Frame.java:385)
     at javax.swing.JFrame.<init>(JFrame.java:180)
     at MainFrame.<init>(MainFrame.java:253)
     at Gui.create(Gui.java:18)
     at Gui.main(Gui.java:49)

Мда, она ещё и Headless. Это значит, что эти парни выпилили из своей джавы AWT и Swing Zulu предуготовлена только для серверов. IntelliJ IDEA вы на ней не запустите. Вот так.

Завершение

Для меня по-бывшему остаётся загадкой, в чём же особенность Zulu. На ум приходит только какое-то потенциальное узкое сотрудничество Azul Systems и Microsoft в плане компиляции и оптимизации нативного кода OpenJDK под винду. Может быть, какие-нибудь навеянные совместными усилиями оптимизации в JIT. Может быть, какие-то куски из Zing, тот, что является продуктом для Linux, будут портированы (либо теснее портированы) в Zulu.

Отчего же Zulu позиционируется именно как решение для Windows Azure, а не легко как сборка OpenJDK под винду. Что это? Маркетинг? Ну ок. А что в Zulu технически нового? Какова особенность Zulu? Хочется верить, что это подлинно выльется во что-то увлекательное технически и даст Java-миру что-то твердо новое. Пока что я вижу только порт OpenJDK на Windows x64. Повторюсь, видимо, план только в самом начале пути.

В то же время, налицо увлекательное возражение между Zing и Zulu. Zing — это продукт для одной огромныйтачки. А Zulu, как заявлено, продукт для облака, то есть для множества мелких тачек. Чего хочет добиться Azul? Играть на обоих рынках? Дозволено ли при таком возражении портировать какие-то решения из Zing в Zulu? Либо это легко порт OpenJDK, что именуется, без жалоб на первенство? В всеобщем, много увлекательного. Время покажет.

Ну и вообще — Java в облаке, JVM в облаке. Что это и для чего? Стремительное клонирование работающего рантайма между машинами в облаке? Вероятность менять настройки хипа на лету? Механический форк инстансов при выполнении каких-то условий? Реализация I/O (диска и сети), оптимизированная для виртуальных машин? В всеобщем, вопросов масса.

Порассуждать на эти и другие темы я приглашаю вас на конференции Joker 2013, которая пройдёт в Питере теснее через две недели. Среди прочих, в программе конференции будет отчет от CTO Azul Systems Гила Тини про сборку мусора и отчет от Александра Белоцерковского из Microsoft как раз про Java в Windows Azure. И именно им двоим лично я и хочу задать озвученные выше вопросы.

Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB