The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Компания Oracle представила универсальную виртуальную машину..., opennews (??), 20-Апр-18, (0) [смотреть все] –1

Сообщения [Сортировка по времени | RSS]


68. "Компания Oracle представила универсальную виртуальную машину..."  +/
Сообщение от Нет ты (?), 21-Апр-18, 13:06 
То есть использования (LLVM) C/C++/Rust (Experimental) R/Python/Ruby из JVM под одним удобным API. Как без JVM пришить одновременно Python/Rust/C++ для дополнений к приложению (которые работают в песочнице) на чистом C?
Ответить | Правка | Наверх | Cообщить модератору

73. "Компания Oracle представила универсальную виртуальную машину..."  –1 +/
Сообщение от Аноним (-), 21-Апр-18, 14:50 
А в чём принципиальная выгода от "без JVM"? Плагину на Python/Ruby/Javascript всё равно нужны сборщик мусора и JIT. Если ты будешь руками прикручивать виртуальные машины этих языков к своему процессу, ты получишь N виртуальных машин в одном процессе, каждая со своей кучей, своим рантаймом, служебными потоками, сборщиком мусора… И взаимодействовать между ними ты сможешь только через C ABI. Graal позволяет загрузить рантаймы этих языков (которые для этого должны быть установлены) в одну, общую виртуальную машину, которая уделывает по качеству и функционалу стандартные VM этих языков. И взаимодействовать с ними через высокоуровневое объектно-ориентированное ABI, предоставляемле GraalVM (aka JVM). "Без JVM" эта схема просто не реализуется, т.к. JVM выступает в качестве замены всех остальных VM.
Ответить | Правка | Наверх | Cообщить модератору

113. "Компания Oracle представила универсальную виртуальную машину..."  +1 +/
Сообщение от Нет ты (?), 21-Апр-18, 22:54 
Мне нужно чтобы берешь graalvm.h, используешь вот эти вызовы из C++ чтобы пнуть свое API в виртуальную машину, но чтобы работал именно язык X не забудьте установить Y который также можно тащить со своим приложением, предварительно выставить ENV со значением Z=APPDIR.

JS вшить что через MozJS (правда с голым C API оно мне больше нравилось), что с V8 не сложно вообще. И всего-то одна библиотека. Python, делал через Boost но все же, также ничего сложного, да тащить runtime. Dart - около V8. Lua - тоже ничего особенного. LLVM Bitcode - довольно интересно и начать не так уж и много занимает - C, C++, Rust, D тут же. Mono - немного поиграть и уже можно работать. На изучение любого из методов не требуется много времени, практически везде можно встретить как это встроить в C/C++ чуть ли не со стартовой страницы.

А что с этим? Вот как вшить в Java (или любой JVM язык), вот есть пересобранные Node.JS/R/Python/LLVM где вы можете вызвать сие чудо из друг друга. А где как вшить в C/C++ и начать работать как человек? Целый сайт восхваляющий сам себя и JVM, а для простых смертных думай как оно работает просматривая как переделали Node.JS в их репозитории что-ли?

Ответить | Правка | Наверх | Cообщить модератору

119. "Компания Oracle представила универсальную виртуальную машину..."  –1 +/
Сообщение от Аноним (-), 22-Апр-18, 07:05 
> А где как вшить в C/C++ и начать работать как человек?

Загружаешь разделяемые библиотеки JVM в своё приложение с помощью Invocation API: https://docs.oracle.com/javase/7/docs/technotes/guides/jni/s.... Собственно, именно так и работают все запускалки, поставляющиеся с Граалем. Само Invocation API существует уже лет 20.

Сам Грааль реализован как JIT-плагин к JVM. Т.е. грузишь ещё пару разделяемых библиотек самого Грааля.

Дальше — в зависимости от рантайма. К примеру, Грааль и Нода интегрируются путём замены v8 на реализацию на основе Грааля: http://mail.openjdk.java.net/pipermail/graal-dev/2017-Decemb... Т.е. грузишь модифицированный билд рантайма ноды, а он уже будет использовать Грааль вместо дефолтной VM.

Я бы тоже не отказался от адекватной инструкции, но к сожалению, разработчики Graal ближе к категории яйцеголовых академиков, чем к программистам, так что желающим в нём копаться придётся разбираться самостоятельно. Как я понимаю, изначальной целью было помочь существующим JVM-языкам (Jython, JRuby и т.п.) сделать нормальную интеграцию без полной пересборки под байткод JVM. Как следствие, они там очень смутно понимают, что может быть нужно остальной целевой аудитории.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру