Pull to refresh

Java Virtual Machine in pure python

Reading time 1 min
Views 12K
Коллеги,

Некоторое время назад я начал работать над обучающим проектом, совмещающим java + python + некоторые базовые алгоритмы. Промежуточный этап разработки — имплементация спецификации jdk7 на python. (Java исполняемая в python)

Код доступен www.pyjvm.org или github: github.com/andrewromanenco/pyjvm



Фактически проект можно описать так:
java -cp . some.code.ToExecute
превращается в…
python java.py -cp . some.code.ToExecute

Несколько заметок (не вдаваясь в подробности будущих планов):

  • python 2.7
  • поддерживаются все byte code операции
  • большинство конструкция языка (напр. исключения)
  • многопоточность
  • stdin/stdout
  • примеры java кода в testcases/src


(!!) Стоит заметить, что далеко не все java api native методы поддерживаются — скорее всего ваше java приложение завершится сообщением: Exception: Op (SOME_NAME_HERE) is not yet supported in natives

Что явно отсутствует в этом проекте: тестирование на различных платформах
Если у вас есть 5 свободных минут, пожалуйста, попробуйте запустить проект на вашем компьютере.

1.
git clone github.com/andrewromanenco/pyjvm.git

2.
Если у вас НЕ установлен jdk7: запустите get_rt.py из ./rt — чтобы скачать rt.jar (java classes)
Если jdk7 установлен — проверьте наличие JAVA_HOME

3.
cd testcases
python test_runner.py > output.txt
python test_report.py output.txt

4.
Если тесты проходят — напишите комментарий к топику с информацией о вашей операционной системе.
Если же все плохо — напишите какой тест не проходит — лучше всего в github — c указанием вашей os.

Заранее спасибо за ваше время!
Tags:
Hubs:
+40
Comments 29
Comments Comments 29

Articles