построение системы на Java и языке ассемблера, который работает на «голом железе» - PullRequest
0 голосов
/ 20 августа 2009

Ладно, Допустим, я хотел создать систему, которая использовала бы только ассемблер и java, мой вопрос был бы таков, пока я включил все папки jvm, классы, jar и т. Д. Java все еще должен работать эффективно? Я понимаю, что есть те вещи, которые специально скомпилированы на платформе, но поэтому я спрашиваю, возможно ли использовать сборку для репликации всех .exe или других исполняемых файлов, которые java включил в чистую систему сборки / java?

Ответы [ 5 ]

4 голосов
/ 20 августа 2009

Если вы спрашиваете, возможно ли построить систему на Java и языке ассемблера, работающем на «голом железе», ответ - да. Есть несколько текущих примеров:

  • JavaOS ориентирован, главным образом, на область встроенных систем. (Sun считает SunOS «устаревшей» линейкой продуктов в наши дни.)
  • JNode Цели более широкие и охватывают встроенные системы, настольные системы, серверы и облачные вычисления.

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

Если вы спрашиваете о чем-то еще, пожалуйста, будьте более явными.

РЕДАКТИРОВАТЬ: ответ на дополнительный вопрос OP:

  1. Непрактично использовать Java и другие exe-файлы как таковые. Они требуют полноценной операционной системы под ними; например Windows, Linux, что угодно. Если бы у вас был доступ к исходному коду, вы, возможно, могли бы переписать его по мере необходимости, чтобы они работали на «голом железе», но это повлекло бы за собой значительные архитектурные изменения, особенно если вы хотите писать драйверы устройств и т. Д. На Java. (Кроме того, ядро ​​Sun JRE реализовано на C ++ ...).
  2. Вы не можете напрямую использовать существующие JAR-файлы библиотеки классов Java, поскольку они содержат значительный объем кода, специфичного для платформы. Однако вы можете создать свои собственные JAR-файлы библиотеки классов Java из существующей версии библиотек классов Java с открытым исходным кодом (например, библиотеки JJSE OpenJDK 6.0). Вы имеете дело с кодом, специфичным для платформы, предоставляя свои собственные версии в виде собственных библиотек или (как это делает JNode) в качестве классов Java.
1 голос
/ 20 августа 2009

Посмотрите на JNode. Они работают над этим годами.

http://www.jnode.org/

1 голос
/ 20 августа 2009

Jikes RVM и Sun Maxine предоставляют реализацию JVM с небольшим (порядка 1 килокалорий) нативным кодом. Тем не менее, обе виртуальные машины требуют ОС и являются только исследовательскими реализациями. Процесс создания потока октетов, образующих машинный код, очевидно, достижим в Java.

1 голос
/ 20 августа 2009

Теоретически возможно реализовать jvm на другом языке. Лучший пример, который я могу придумать, это Python / Jpython, где есть оригинальная реализация C и реализация языка Java на чистом языке.

Главный аргумент против этого - это тонна работы за небольшую выгоду.

Официальные библиотеки Sun jvm и поддерживающие jni написаны в основном на C, вам, как минимум, нужно предоставить собственные ассемблерные реализации для большинства API C POSIX.

Кроме того, первоначальной целью разработки C был «переносимый язык ассемблера», и в значительной степени он все еще отвечает этим целям. C производит эффективный машинный код, и большинство компиляторов C позволяют машинным инструкциям кода быть встроенными в код C.

Еще одним преимуществом C является количество доступных кросс-компиляторов, вам не нужно запускать среду разработки на целевой архитектуре, вы можете разворачивать и тестировать модули на вашей любимой форме / IDE, когда вы будете готовы, вы можете экспортировать исполняемые файлы для целевой платформы.

1 голос
/ 20 августа 2009

Если я правильно понимаю ваш вопрос, вы подразумеваете что-то вроде JavaOS . Конечно, возможно реализовать JVM raw на оборудовании, но не знаю, почему вы это сделаете. И если бы вы это сделали, почему бы вам не использовать C вместо Assembly для большей части работы.

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