2012-11-25 8 views
5

Просто интересно, существуют ли какие-либо Java-реализации, которые работают без JVM. Причина, по которой мне интересно, это просто, потому что мне любопытно, и мне было интересно, были ли какие-либо «легкие» Java-реализации (без всех подключаемых модулей Sun).Java без JVM

Я также заинтересован в встраивании Java в C++, но вложение JVM в C++ кажется мне довольно смешным. Я просто хочу использовать некоторые функции языка Java в своих приложениях на C++, но не использовать все легкомысленные Java-API.

EDIT:

Я вижу из многих ответов, которые я получил, что мне нужно уточнить ...

Недавно я получил в развивающихся Node.js приложений, который использует JavaScript. JavaScript в istelf - это спецификация языка, он автоматически не приходит с DOM, window.open и т. Д., Хотя это и делалось какое-то время. Мне интересно, есть ли что-то похожее на Google v8, но не на JavaScript, а на Java. В конце концов, меня не волнует, если я не могу писать приложения Hello World с ним, я просто хочу, чтобы встраивать Java в приложение на C++, как я могу встроить JavaScript в приложение на C++ с помощью v8 или SpiderMonkey. Если бы я мог это сделать, тогда я мог бы реализовать вывод консоли в C/C++, а затем сделать эту реализацию доступной для Java.

+5

Sun libs и JVM - это две совершенно разные вещи, и, возможно, главной особенностью Java является современный сборщик мусора - явно функция JVM. –

+1

Вы имеете в виду, что бы скомпилировать Java для чего-то другого, кроме JVM bytecode? Или что бы скомпилировать байт-код JVM на что-то еще? Или что? – hyde

+0

JavaScript - это язык сценариев, и большинство интерпретаторов языка сценариев разработаны таким образом, что их можно легко внедрить на другой язык (обычно скомпилированный язык, такой как C/C++). Я не совсем уверен, почему вы хотите встроить скомпилированный язык, такой как Java, в другой скомпилированный язык как C++. Лучше использовать интерпретатор языка сценариев, например JavaScript или Python или Lua, который имеет четко определенный API для встраивания, если вы хотите использовать язык сценариев для своей программы. –

ответ

0

есть легкий вес Java процессоры, предназначенные для использования в небольших устройствах, например JOP

+0

Есть/были несколько родных процессоров Java, например, [Википедия] (http://en.wikipedia.org/wiki/Java_processor). – JimmyB

5

Хотите на виртуальную машину Java в одиночку без API (стандартная библиотека)?

JRE состоит из JVM (Virtual MAchine) и стандартной библиотеки, я сомневаюсь, что вы можете найти реализацию java без JVM ... Вы можете найти компилятор, который компилирует исходный код Java в собственный код (взгляните на GCJ), но не на реализацию Java без виртуальной машины.

Посмотрите на this wikipedia page, чтобы увидеть некоторые альтернативные реализации Java.

1

GCJ (GNU Compiler for Java), но проект был устаревшим, поскольку OpenJDK был открыт.

1

Как намекают другие, «JVM» - это механизм, который знает, как загружать классы, интерпретировать «байт-коды» и управлять хранилищем. Он по сути не включает какой-либо элемент java.lang ..., за исключением того, что для представления классов и других базовых структур данных в JVM необходимы несколько классов (String, Class и др.).

В результате Java без JVM - это всего лишь куча бессмысленных бит.

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

Как предполагает pstanton, существуют «легкие» Java-решения (Java-подобные), которые подходят для небольших устройств.

1

ИМХО, вам нужно повторить, что именно вы действительно хотите.

Java среда состоит из двух основных компонентов

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

Вы предлагаете использовать Java, но на самом деле у вас ничего не осталось.

Например, вы даже не можете написать программу «hello world» без библиотек, поскольку String является классом в JDK.

Смежные вопросы