Выбор Java по сравнению с Python на Google App Engine

Механизм Приложения Google Currently поддерживает обе Python & Java. Поддержка Java является менее сформировавшейся. Однако Java, кажется, имеет более длинный список библиотек и особенно поддерживает для байт-кода Java независимо от языков, используемых для написания того кода. Какой язык даст лучшую производительность и больше питания? Советуйте.Спасибо!

Править: http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1

Править: "Питанием" я имею в виду лучшую расширяемость и включение доступных библиотек вне платформы. Python разрешает только чистые библиотеки Python, все же.

161
задан Denis T. 1 October 2019 в 15:36
поделиться

4 ответа

Я предвзято (являюсь экспертом по Python, но довольно ржавым в Java), но я думаю, что среда выполнения Python для GAE в настоящее время более продвинута и лучше разработана, чем среда выполнения Java - первая была в конце концов, еще один год на разработку и созревание.

Как будут развиваться дела, конечно, трудно предсказать - спрос, вероятно, выше со стороны Java (тем более, что речь идет не только о Java, но и о других языках, расположенных на также на вершине JVM, так что это способ запустить, например, PHP или код Ruby на App Engine); Однако у команды Python App Engine есть то преимущество, что у нее есть Гвидо ван Россум, изобретатель Python и удивительно сильный инженер.

Что касается гибкости, движок Java, как уже упоминалось, действительно предлагает возможность запуска Байт-код JVM сделан на разных языках, не только Java - если вы работаете в многоязычном магазине, это большой плюс. И наоборот, если вы ненавидите Javascript, но должны выполнять какой-то код в браузере пользователя, Java GWT (генерирующий Javascript для вас из вашего кода уровня Java) намного богаче и продвинутее, чем альтернативы на стороне Python (на практике, если вы выберете Python, вы сами напишете JS для этой цели, а если вы выберете Java, GWT будет полезной альтернативой, если вы ненавидите писать JS).

С точки зрения библиотек это в значительной степени промывка - JVM достаточно ограничена (без потоков, без пользовательских загрузчиков классов, без JNI, без реляционной базы данных), чтобы затруднить простое повторное использование существующих библиотек Java в такой или большей степени, чем существующие библиотеки Python, аналогичным образом затруднены аналогичными ограничениями для среды выполнения Python.

Что касается производительности, Я думаю, что это промывание, хотя вы должны тестировать свои собственные задачи - не полагайтесь на производительность высокооптимизированных JIT-реализаций JVM, не учитывая их большое время запуска и объем памяти, потому что среда движка приложения сильно отличается ( Затраты на запуск будут оплачиваться часто, поскольку экземпляры вашего приложения запускаются, останавливаются, перемещаются на другие хосты и т. д., и все это очевидно для вас - такие события обычно намного дешевле в средах выполнения Python, чем в JVM).

XPath Ситуация / XSLT (эвфемистически ...) не совсем идеальна с обеих сторон, вздох, хотя я думаю, что она может быть немного менее плохой в JVM (где, по-видимому, можно заставить работать значительные подмножества Saxon с некоторая осторожность). Я думаю это' Стоит открывать вопросы на странице Appengine Issues с XPath и XSLT в их заголовках - прямо сейчас есть только проблемы, требующие конкретных библиотек, и это близоруко: мне все равно, КАК хороший XPath / XSLT реализован для Python и / или для Java, если я могу его использовать. (Конкретные библиотеки могут облегчить миграцию существующего кода, но это менее важно, чем возможность выполнять такие задачи, как «быстрое применение XSLT-преобразования» НЕКОТОРЫМ способом! -). Я знаю, что я бы отметил такую ​​проблему, если бы ее хорошо сформулировали (особенно независимо от языка).

И последнее, но не менее важное: помните, что у вас может быть другая версия вашего приложения (с использованием того же хранилища данных), некоторые из которых реализован со средой выполнения Python, некоторые со средой выполнения Java, и вы можете получить доступ к версиям, которые отличаются от "

123
ответ дан 23 November 2019 в 21:26
поделиться

Как вы определили, использование JVM не ограничивает вас использованием языка Java. Список языков JVM и ссылки можно найти здесь . Однако Google App Engine действительно ограничивает набор классов, которые вы можете использовать из обычного набора Java SE, и вы захотите выяснить, можно ли использовать какие-либо из этих реализаций в движке приложения.

РЕДАКТИРОВАТЬ: Я вижу, вы нашли такой список

, я не могу комментировать производительность Python. Однако JVM - очень мощная платформа с точки зрения производительности, учитывая ее способность динамически компилировать и оптимизировать код во время выполнения.

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

6
ответ дан 23 November 2019 в 21:26
поделиться

Я настоятельно рекомендую Java для GAE, и вот почему:

  1. Производительность: Java потенциально быстрее Python.
  2. Разработка Python находится под давлением отсутствия сторонних библиотек. Например, для Python / GAE вообще нет XSLT. Почти все библиотеки Python являются привязками C (и они не поддерживаются GAE).
  3. Memcache API: Java SDK имеет более интересные возможности, чем Python SDK.
  4. Datastore API: JDO очень медленный, но собственный API хранилища данных Java очень быстро и легко.

Я использую Java / GAE в разработке прямо сейчас.

7
ответ дан 23 November 2019 в 21:26
поделиться

Основываясь на опыте использования этих виртуальных машин на других платформах, я могу сказать, что вы, вероятно, получите более чистую производительность от Java, чем от Python. Однако не стоит недооценивать преимущества Python: язык Python гораздо более продуктивен с точки зрения количества строк кода - общее согласие заключается в том, что Python требует треть кода эквивалентной программы Java, оставаясь при этом более читаемым. Это преимущество умножается на возможность запускать код немедленно без явного шага компиляции.

Что касается доступных библиотек, вы обнаружите, что большая часть обширной библиотеки времени выполнения Python работает из коробки (как и Java). Популярный веб-фреймворк Django ( http://www.djangoproject.com/ ) также поддерживается в AppEngine.

Что касается «мощности», то это

18
ответ дан 23 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: