Что может сделать Python, что Jython не может?

Мне нужна гибкая структура, и я хотел бы попытаться ввести код в разных местах, чтобы просто изменить поведение на лету.

Поскольку это проект Java, и в основном я ограничен интерфейсами и играю с реализациями, стоящими за ними, я думал, что могу запустить Jython и посмотреть, что это может принести в таблицу.

Я имею в виду, eval() является мощной функцией, и я мог бы добавить код в виде строки и оценить ее, по крайней мере, на Python, и там возник вопрос, поскольку он в основном компилируется в Java...

Какие ограничения существуют для Jython по сравнению с Python? Что я могу сделать в Python, чего я не могу сделать в Jython?

2 ответа

Как отмечалось в предыдущем сообщении, вы действительно хотите сравнить CPython с Jython. Как отмечалось ранее, стабильная версия Jython составляет 2,5,3 с альфа-версией для 2,7. Это означает, что некоторые функции отсутствуют в Jython. Например, упорядоченные словари, счетчики и именованные кортежи были добавлены в пакет Collections с 2,5. С Jython вы не можете использовать многие сторонние библиотеки Python, такие как NumPy, SciPy, GeoDjango, Lxml или все, что использует расширения C.

С другой стороны, у Jython есть несколько преимуществ, которые вы не можете найти с помощью CPython. С Jython вы можете развернуть Django на стандартном Java-сервере (например, Tomcat, WebLogic и т.д.). Вы можете вызывать существующие Java-классы из кода Jython.


Подумайте о сравнении jython с cpython, поскольку они оба являются питонами, но один реализован в c, а другой в Java. Таким образом, cpththon время запуска намного быстрее. Если вы проверите время запуска для каждого, чтобы выполнить пример hello world, cpython выполнил код примерно в 50 раз быстрее. Стабильность Jython в настоящее время использует Python 2.5, который намного старше, чем текущий python 2.7 в 2-й серии, и у них нет реализации python3. Таким образом, вы пропустили бы некоторые из функций там.

$ time jython -c "print 'hello'"
hello
real 0m1.641s
$ time python -c "print 'hello'"
hello
real 0m0.026s

licensed under cc by-sa 3.0 with attribution.