Как стать автором
Обновить

Java Virtual Machine in pure python

Время на прочтение 1 мин
Количество просмотров 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.

Заранее спасибо за ваше время!
Теги:
Хабы:
+40
Комментарии 29
Комментарии Комментарии 29

Публикации

Истории

Работа

Data Scientist
61 вакансия
Python разработчик
129 вакансий
Java разработчик
344 вакансии

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн