Когда и почему требуется использование SubstrateVM Framwork для собственного изображения? - PullRequest
1 голос
/ 12 января 2020

Я читал о GraalVM и SubstrateVM framework. Я понимаю, что команду native-image можно использовать для создания собственных приложений из Java исходных файлов следующим образом:

$ javac Hello.java
$ native-image --no-server --no-fallback Hello
$ ./hello
Hello World!
$

Это создает собственный двоичный файл hello, который - согласно этому question - работает на платформе SubstrateVM, которая обеспечивает ...

... другие вещи (время выполнения), необходимые для фактического запуска заранее скомпилированного байт-кода Java без JVM.

Мне неясно:

  • Когда и почему требуется среда SubstrateVM? Требуется ли это только во время собственной сборки или также во время выполнения? Двоичный файл hello состоит из чистого байт-кода целевой машины или все еще имеется байт-код Java и встроенная полноценная виртуальная машина, а именно SubstrateVM?
  • Какие издержки требуют для запуска собственного образа hello по сравнению с обычной Hello World! C программой?

1 Ответ

1 голос
/ 13 января 2020

Хорошим примером для понимания того, что происходит, является сборщик мусора.

В JVM есть такой, поэтому вам не нужно вручную управлять памятью. Но когда вы создаете собственный образ, в вашем коде java его нет, верно? Таким образом, собственный инструмент для работы с изображениями объединяет сборщик мусора SubstrateVM с вашим приложением, так что сгенерированный двоичный файл может собирать свой собственный мусор, и вам это не нужно.

Это означает, что Substrate VM необходима во время сборки и во время выполнения. Это также означает, что в двоичном файле нет никакого байт-кода и нет «встроенной полноценной виртуальной машины».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...