Фон
В свое время я создаю веб-приложение приличного размера с другом, и мы решили использовать фреймворк Django на Python. Django предоставляет нам множество функций, которые нам понадобятся, поэтому, пожалуйста, не предлагайте альтернативные фреймворки.
Единственное решение, с которым у меня возникают проблемы, - использовать ли мы Python или Jython для разработки нашего приложения. Теперь я хорошо знаком с Java и, возможно, мог бы извлечь пользу из библиотек JDK. Я знаю минимальный Python, но использую этот проект как возможность выучить новый язык, поэтому большая часть работы будет написана на Python.
Привлекательность Jython, конечно же, заключается в JVM. Количество веб-хостов с поддержкой python / django крайне минимально - в то время как я предполагаю, что могу разместить приложение jython / django на огромном количестве хостов. Это не серьезное дизайнерское решение, но я думаю, что его еще нужно решить. Я бы предпочел jython вместо python только для доступности jvm.
Вопросов
Есть ли у Jython много ограничений по сравнению с обычным питоном? Будет ли запуск django на jython вызывать проблемы? Насколько быстро команда Jython выпускает обновления вместе с Python? Будет ли Django работать так, как рекламируется на Jython (с минимальной предварительной настройкой)?
Решение
Спасибо за полезные комментарии. Думаю, я собираюсь разработать на Jython поддержку JVM, но постараюсь использовать только код / библиотеки Python. Переносимость не является серьезной проблемой, поэтому, если мне понадобится библиотека в JDK (недоступная в python), я воспользуюсь ею. Пока Django полностью поддерживается, я счастлив.






Предполагается, что Django совместим с jython sinc версии 1.0.
Этот учебник немного устарел, но оттуда вы можете видеть, что особых проблем нет.
Django выполняет работать на Jython, хотя вам необходимо использовать разрабатываемый выпуск Jython, поскольку технически Jython 2.5 все еще находится в стадии бета-тестирования. Однако Django 1.0 и выше должен работать без изменений.
Что касается того, следует ли вам использовать обычную реализацию Python или Jython, я бы сказал, что это вопрос того, предпочитаете ли вы, чтобы все библиотеки Java были доступны или все библиотеки Python. На этом этапе вы можете ожидать, что почти все в стандартной библиотеке Python будет работать с Jython, но все еще существует множество сторонних пакетов, которые не будут работать, особенно модули расширения C. Я лично рекомендую использовать обычный Python, но если у вас есть большой опыт работы с JVM и вы хотите придерживаться того, что знаете, то я могу это уважать.
Что касается поиска хостинга Python, эта страница может быть полезна.
Вам почти всегда понадобится тонкая обертка, хотя это зависит от библиотеки.
Я бы сказал, что если вам нравится Django, вам также понравится Python. Не делайте (слишком распространенной) ошибки, смешивая прошлый языковой опыт, пока вы изучаете новый. Только после освоения Python вы сможете судить, лучше ли гибридный язык, чем любой другой.
Это правда, что очень немногие дешевые хостинги предлагают предустановленный Django; но вполне вероятно, что это изменится, учитывая, что это среда, наиболее похожая на движок приложений Google. (и большинство проектов GAE можно запустить на Django)
Недавно в свободное время я начал работать над настольным проектом с открытым исходным кодом. Так что это может не относиться. Я пришел к такому же вопросу. Я решил, что мне следует написать как можно больше кода на python (и Django) и нацелить его на все платформы CPython, Jython и IronPython.
Затем я решил, что напишу плагины, которые будут взаимодействовать с библиотеками в разных реализациях (например, с разными библиотеками графического интерфейса).
Почему? Я заранее решил, что долговечность моего кода может зависеть от ориентации не только на CPython, но и на виртуальные машины. Для сегодняшних целей CPython - лучший вариант из-за скорости, но кто знает о завтрашнем дне. Если ваш код достаточно гибкий, возможно, вам не придется выбирать его таргетинг.
Обратной стороной этого подхода является то, что вам придется создавать и поддерживать больше кода.
Могут ли модули расширения python c быть загружены изнутри java с помощью load_library () или потребуется написать тонкую оболочку для их переноса?