LINUX.ORG.RU

Поясните за GraalVM

 ,


2

1

https://github.com/oracle/graal http://www.graalvm.org/

In 2017 I would like to run ALL languages in one VM.

для чего оно работоспособно?

java GUI swing/opengl/javafx чтото из этого может?
зоопарк питонских биндингов(к ГТК QT lib***xxxxyyyy) которые по дефолту есть осилили?
в LLVM я так понял ничего кроме libc нельзя?

Оно уже давно граальвээм: Java, Kotlin, Scala, Clojure, Jython, Groovy, Jruby, ..., ∞

makoven ★★★★★ ()

cast stevejobs - он тут лучше всех в «Грале» разбирается :)

bvn13 ★★★★★ ()
Ответ на: комментарий от makoven

и в чем фишка?

можно запустить java gui приложения(нетбеанс может?) через него?

быстрее OpenJDK?

питон гуй софт(миллион gnome3 скриптов)?

или только хеловорды?

missxu ()

Ask me anything

Грааль состоит из трех элементов:

1) Graal Compiler - оптимизирующий компилятор, работающий как плагин для обычного OpenJDK

2) Truffle - фреймворк для написания языков (есть готовые релизации типа Graal.js (Node.js) и Sulong (LLVM)).

3) SubstrateVM - closed world java-like VM (компилирует в exe-шники, не умеет динамический класслоадинг - и это фича)

В целом, эта штука позволяет запускать на JVM программу, написанную сразу на нескольких языках так, что производительность не просаживается. Позволяет создавать такие не просаживающиеся реализации языков.

java GUI swing/opengl/javafx чтото из этого может?

Про пункт 3 - там очень [сложные ограничения](https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md), и «из коробки» почти ничего не работает. Это совершенно особая штука для особых целей. В целом, всякие свинги и javafx должны под ним запускаться, но для реального приложения важней совершенно другое. Можешь взять свое приложение и провести исследование, насколько оно запускается (или нет) под SVM и написать отчет.

Graal и Truffle же не пересекаются с первыми двумя пунктами. Truffle просто не используется в перечисленным тобой, а Graal Compiler - это drop-in replacement для C2, поэтому от его включения ни в этих фреймворках, ни в каких других, ничего сломаться не должно. (Может сломаться и ломается какой-то особо извращенный код типа Blackhole в JMH)

зоопарк питонских биндингов(к ГТК QT lib***xxxxyyyy) которые по дефолту есть осилили?

это сложный вопрос, так как емнип, питон под граалем еще не в проде

а вот нативные расширения Node.js уже работают

в LLVM я так понял только ничего кроме libc нельзя?

Ну то есть, Sulong это тупо интерпретатор LLVM-биткода. Ты собираешь крестовую приложуху Шлангом, а Граль выполняет. О функционировании внешних библиотек нужно заботиться самостоятельно. Ну то есть, для запуска С++ кода придется вручную озаботиться включением libc++. Это не магия.

====

В качестве лайтового введения можешь глянуть мой рассказ на одном из джугов (хотя я был упорот и с температурой под 38, так что получилось так себе, предупреждаю)

Скоро будем поднимать русскоязычную инфраструктуру:

GraalVM Новости - Телеграм-чатик с новостями

GraalVM RU - Телеграм-группа для общения

GraalVM Community - Сайт, на котором будут ночные сборки, бложик и статьи. Самое важное что там будет - RSS на все это. Сейчас там заглушка со ссылкой на Гитхаб.

github://graalvm-community - неофициальный репозиторий

Сайт и репозиторий нужны, чтобы не иметь отношений к Oracle и не соблюдать их полиси.

Они пока еще не анонсировались, потому что вначале надо залить контент. Но так как лор все равно читает три с половиной человека, а я потом забуду написать анонс, скидываю ссылки прямо сейчас.

stevejobs ★★★★☆ ()
Ответ на: комментарий от missxu

быстрее OpenJDK?

с Graal Compiler стартап будет медленней, будет очень долгий прогрев и большой time to performance, но потом летать будет быстро

Ускоряется: - Современный код с лямбдами и стримами
- Числодробилки, записанные в объектно-ориентированной форме. То есть внутри методов создается много объектов, которые по сути не нужны и никуда из метода не убегают (в смысле escape analysis), а сам метод возвращет, например, массив интов
- Лютейший говнокод, абузящий предыдущие два пункта
- Scala (особенно data science на ней), как живой пример всех предыдущих пунктов.

Не ускоряется: - Код, написанный аккуратно и оптимально в стиле Java 6.

можно запустить java gui приложения(нетбеанс может?) через него?

В целом, думаю что на старых Java IDE никакого перфоманс буста не будет. Там хорошо написанный код в стиле старых джав.

питон гуй софт(миллион gnome3 скриптов)?

хз. Попробуй.

или только хеловорды?

тема хэлловорлдов актуальна только для SVM. Пока что это совершенно рисеч проект, и там нет важных вещей вроде раздельной компиляции и кэширования. То есть, собрать не-хэлловорлд ты можешь, но ждать придется очень долго и каждый раз заново.

Впрочем, кое-кто уже юзает в проде, но только для мелких микросервисов в контейнерах, там кода кот наплакал, и наверняка это то, что ты имел в виду под словом «хэлловорлд»

Ну и конечно, для SVM нужно переписывать код. Выбрасывать динамический класслоадинг и вот это все. Без изменений запустятся только вещи, написанные в очень особом стиле (например, Netty собирается без изменений) либо хэлловорлды

stevejobs ★★★★☆ ()
Ответ на: комментарий от stevejobs

Scala (особенно data science на ней), как живой пример всех предыдущих пунктов.

Вот вроде интересно, но насколько я понял, что в комьюнити версии перформанс не обещают

nihirash ★★★ ()
Ответ на: комментарий от nihirash

В платной версии есть дополнительные оптимизации, да. Но есть и хорошие новости:

а) Самая главная оптимизация (лютый набор оптимизаций) - это partial escape analysis. В Community Edition он есть в почти полном виде.

Команда пытается запихать в CE как можно больше базового кода, и оставить в платной версии только то, за что большие ынтерпрайзы будут платить большое бабло.

б) Магических оптимизаций не существует) Большинство вменяемых рантаймов выдают на похожих ворклоадах похожий перфоманс. Даже на питоне с нативными расширениями можно написать что-то быстрое, если руки не из жопы. У больших ынтерпрайзов есть битва за единицы процентов перфоманса (в которых действительно есть разница), но не совсем понятно, нафига это нужно обычным людям.

в) Вообще говоря, все эти оптимизации и ускорения - это не главное. Главное в том, чтобы с помощью Грааля переписать ядро JDK на Java вместо С++. Поэтому, уже достаточно, чтобы оно работало в целом не хуже, чем C2 сейчас.

г) Поэтому «для обычных людей» (не ынтерпрайзов) Грааль как цельный продукт правильней представлять как средство, нужное для разработки и выполнения быстрых DSL. High-Performance Polyglot Runitme. Все эффекты ускорения относительно мэйнлайна жабы - это приятный, но необязательный бонус.

Но люди спрашивают обычно не про polyglot runtime, а про перфоманс, (а зря), поэтому и приходится писать про него.

stevejobs ★★★★☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

В целом, эта штука позволяет запускать на JVM программу, написанную сразу на нескольких языках так, что производительность не просаживается. Позволяет создавать такие не просаживающиеся реализации языков.

както очень сомнительно звучит, если честно...
как будто предложение «объеденить все виртуалки в одну, все сервера в один» лол

есть же бинарные биндинги JNI(и подобные)
если питон-джава-питон комуникация то сокеты или банальным веб сервером(или UDP очевидно протоколом) в каждом из приложений
если «огороженное приложение»- то внешнаяя обертка для комуникации(получаем по АПИ огороженного приложения и пересылаем в свое приложение как угодно хоть через сокеты хоть через вебсервер, также посылаем обратно ответы получая их по внешнему апи и транслируя в АПИ огороженный)

так даже джаваскрипт-питон-джава-си-пхп я пробрасывал когда надо было(каждый в своем интерпретаторе/ВМ)..работа буквально на пол часа

к этому помоему все привыкли
и тут все переделывать под грааль...в чем смысл?

темболее учитывая тенденции 2017+ года по отказу от всех ВМ и прослоек, и помещения всего в отдельные контейнеры, а то все тормозит и течет

также миллион вопросов очевидных возникает
если чтото зависнет- умрет вся «веселая многоэтажка»?
джаваскрипт/питон течет его рестартят раз в сутки везде, чтоб рестартить тут опять нужны будут свистопляски по «написуй очередной не текущий менеджер памяти для отключения своего модуля»
однопоток? если многопоток то очередные 10005000 проблем с синхронизацией памяти между «виртуальными виртуалками»?...

а если делать по «граалю на каждую ВМ»(запускать) то чем это отличается от изначального существования разных ВМ под разные языки

missxu ()
Ответ на: комментарий от stevejobs

а про перфоманс

у меня нетбеанс с ССД и 16гигами оперативки минуту стартует(минуту), когда весь линукс за 0.5 сек грузится

фантастическую работу питона и .Net я лучше не буду упоминать

про браузер стоит говорить?

missxu ()
Ответ на: комментарий от missxu

есть же бинарные биндинги JNI(и подобные)

JNI решает проблему только нативных биндингов. Причем решает её плохо в плане удобства и с оверхедом - все это будет дорабатываться.

Здесь же предполагается прозрачное переключение между Java и динамическими и скриптовыми языками вроде JS, Puby, R, Python итп без потери в перфомансе.

джаваскрипт-питон-джава-си-пхп я пробрасывал когда надо было

больше не надо ничего пробрасывать, оно само работает. Без оверхеда на подготовку пробрасываемых данных. В простейшем случае, там есть специальный полиглотный буфер между контекстами языков, в который ты можешь писать и читать откуда угодно

банальным веб сервером(или UDP очевидно протоколом)

ржали всем сетевым стеком :) Вот благодаря таким говнарским подходам приложухи и работают как тормозные монстры

к этому помоему все привыкли
и тут все переделывать под грааль...в чем смысл?

если кто-то привык тратить в стро раз больше усилий на создание тормозных микросервисных монстров, то мне с ним не по пути, такие дела

если чтото зависнет- умрет вся «веселая многоэтажка»?
«граалю на каждую ВМ»(запускать)

Грааль это и есть часть VM. Не надо ничего «запускать, это не отдельная запускаемая сущность. Зависать там нечему (ну, не больше чем просто так в JDK).

джаваскрипт/питон течет его рестартят раз в сутки везде,

вот поэтому мы и пишем на крутой чудесной джавке (JVM), с лучшими в мире сборщиками мусора, и у нас все ОК.

в чем смысл?

основной смысл в том, что это - ядро обновленной Java. Все остальное побочное, но иногда это „побочное“ можно использовать. Кому надо, тот будет. Все остальные могут спокойно проходить мимо.

stevejobs ★★★★☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Главное в том, чтобы с помощью Грааля переписать ядро JDK на Java вместо С++

Это интересно.
Где можно смотреть за процессом/почитать об успехах?

anonymous ()
Ответ на: комментарий от stevejobs

В платной версии есть дополнительные оптимизации, да

Ой, за это ещё и мзду ораклю платить надо? Нахер, нахер. Средства разработки должны быть открыты и бесплатны.

anonymous ()
Ответ на: комментарий от anonymous

За Community Edition платить не надо, все доступно в исходных кодах на гитхабе

stevejobs ★★★★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.