Ich bin voreingenommen (ein Python-Experte, aber in Java ziemlich verrostet), aber ich denke, die Python-Laufzeit von GAE ist derzeit weiter fortgeschritten und besser entwickelt als die Java-Laufzeit - die erstere hatte schließlich ein zusätzliches Jahr Zeit, um sich zu entwickeln und zu reifen .
Wie die Dinge in Zukunft weitergehen werden, ist natürlich schwer vorherzusagen - die Nachfrage ist wahrscheinlich auf der Java-Seite stärker (zumal es nicht nur um Java geht, sondern auch um andere Sprachen, die über der JVM liegen, also ist es DIE Art, zB PHP auszuführen oder Ruby-Code in App Engine); Das Python App Engine-Team hat jedoch den Vorteil, Guido van Rossum, den Erfinder von Python und einen erstaunlich starken Ingenieur, an Bord zu haben.
In Bezug auf die Flexibilität bietet die Java-Engine, wie bereits erwähnt, die Möglichkeit, JVM-Bytecode auszuführen, der in verschiedenen Sprachen und nicht nur in Java erstellt wurde - wenn Sie sich in einem mehrsprachigen Geschäft befinden, ist dies ein ziemlich großer Vorteil. Umgekehrt, wenn Sie Javascript verabscheuen, aber Code im Browser des Benutzers ausführen müssen, ist Javas GWT (das Javascript für Sie aus Ihrer Java-Codierung zu generieren) weitaus umfangreicher und fortschrittlicher als Python-seitige Alternativen (in der Praxis, wenn Sie dies wünschen Python, Sie werden selbst einige JS für diesen Zweck schreiben, während GWT eine brauchbare Alternative ist, wenn Sie es ablehnen, JS zu schreiben.
In Bezug auf Bibliotheken ist es so ziemlich eine Wäsche - die JVM ist so eingeschränkt (keine Threads, keine benutzerdefinierten Klassenladeprogramme, keine JNI, keine relationale Datenbank), dass die einfache Wiederverwendung vorhandener Java-Bibliotheken genauso oder mehr behindert wird als vorhandenes Python Bibliotheken werden in ähnlicher Weise durch ähnliche Einschränkungen der Python-Laufzeit behindert.
In Bezug auf die Leistung denke ich, dass es eine Wäsche ist, obwohl Sie sich an Ihren eigenen Aufgaben orientieren sollten - verlassen Sie sich nicht auf die Leistung hochoptimierter JIT-basierter JVM-Implementierungen, die ihre großen Startzeiten und Speicher-Footprints aufgrund der App-Engine reduzieren Die Umgebung ist sehr unterschiedlich (Startkosten werden häufig bezahlt, wenn Instanzen Ihrer App gestartet, gestoppt, auf andere Hosts usw. verschoben werden - alles für Sie - solche Ereignisse sind in Python-Laufzeitumgebungen normalerweise viel billiger als in JVMs).
Die XPath / XSLT-Situation (um euphemistisch zu sein ...) ist auf beiden Seiten nicht gerade perfekt, seufz, obwohl ich denke, dass es in der JVM ein bisschen weniger schlimm ist (wo anscheinend erhebliche Teilmengen von Saxon zum Laufen gebracht werden können mit einiger Sorgfalt). Ich denke, es lohnt sich, Probleme auf der Seite " Appengine Issues " mit XPath und XSLT in ihren Titeln zu eröffnen. Derzeit gibt es nur Probleme, bei denen nach bestimmten Bibliotheken gefragt wird, und das ist kurzsichtig: Es ist mir egal, wie ein gutes XPath / XSLT implementiert wird. für Python und / oder für Java, solange ich es verwenden kann. (Bestimmte Bibliotheken können die Migration von vorhandenem Code erleichtern, aber das ist weniger wichtig, als Aufgaben wie "XSLT-Transformation schnell anwenden" auf EINIGE Weise auszuführen! -). Ich weiß, dass ich ein solches Thema in der Hauptrolle spielen würde, wenn es gut formuliert wäre (insbesondere sprachunabhängig).
Last but not least: Denken Sie daran, dass Sie unterschiedliche Versionen Ihrer App (mit demselben Datenspeicher) verwenden können, von denen einige mit der Python-Laufzeit implementiert sind, andere mit der Java-Laufzeit, und dass Sie auf Versionen zugreifen können, die sich von "default / active" unterscheiden "eine mit expliziten URLs. Sie können also sowohl Python- als auch Java-Code (in verschiedenen Versionen Ihrer App) verwenden und denselben Datenspeicher ändern, wodurch Sie noch mehr Flexibilität erhalten (obwohl nur einer die "nette" URL wie foobar.appspot.com hat - Das ist wahrscheinlich nur für den Zugriff interaktiver Benutzer auf Browsern wichtig, stelle ich mir vor ;-).