Jestem stronniczy (jestem ekspertem od Pythona, ale dość zardzewiałym w Javie), ale myślę, że środowisko uruchomieniowe Python w GAE jest obecnie bardziej zaawansowane i lepiej rozwinięte niż środowisko uruchomieniowe Java - w końcu ten pierwszy miał dodatkowy rok na rozwój i dojrzewanie .
Trudno jest oczywiście przewidzieć, jak będzie dalej postępować - popyt jest prawdopodobnie silniejszy po stronie Javy (zwłaszcza, że nie chodzi tylko o Javę, ale także o inne języki na JVM, więc jest to sposób na uruchomienie np. PHP lub kod Ruby w App Engine); zespół Python App Engine ma jednak tę przewagę, że ma na pokładzie Guido van Rossuma, wynalazcę Pythona i niesamowicie silnego inżyniera.
Jeśli chodzi o elastyczność, silnik Java, jak już wspomniano, oferuje możliwość uruchamiania kodu bajtowego JVM utworzonego w różnych językach, nie tylko w Javie - jeśli jesteś w sklepie wielojęzycznym, jest to dość duży plus. I odwrotnie, jeśli nienawidzisz JavaScript, ale musisz wykonać jakiś kod w przeglądarce użytkownika, Java GWT (generująca JavaScript dla Ciebie z kodowania na poziomie Java) jest znacznie bogatsza i bardziej zaawansowana niż alternatywy po stronie Pythona (w praktyce, jeśli wybierzesz Python, w tym celu sam napiszesz JS, a jeśli wybierzesz Java, GWT jest użyteczną alternatywą, jeśli nie lubisz pisać JS).
Jeśli chodzi o biblioteki, to jest to dość pranie - JVM jest wystarczająco ograniczony (brak wątków, żadnych niestandardowych programów ładujących klasy, brak JNI, brak relacyjnej bazy danych), aby utrudniać proste ponowne wykorzystanie istniejących bibliotek Java tak samo lub więcej niż istniejący Python Biblioteki są podobnie utrudnione przez podobne ograniczenia w środowisku wykonawczym Pythona.
Jeśli chodzi o wydajność, to myślę, że to pranie, chociaż powinieneś testować własne zadania - nie polegaj na wydajności wysoce zoptymalizowanych implementacji JVM opartych na JIT, dyskontując ich długi czas uruchamiania i zużycie pamięci, ponieważ silnik aplikacji środowisko jest bardzo różne (koszty uruchomienia będą często płacone, ponieważ instancje aplikacji są uruchamiane, zatrzymywane, przenoszone na różne hosty itp., wszystko to jest oczywiste dla Ciebie - takie zdarzenia są zazwyczaj znacznie tańsze w środowiskach wykonawczych Pythona niż w przypadku maszyn JVM).
Sytuacja XPath / XSLT (żeby być eufemistyczną ...) nie jest do końca idealna po obu stronach, westchnij, chociaż myślę, że może być odrobinę mniej zła w JVM (gdzie, najwyraźniej, można zmusić znaczące podzbiory Saxona do działania , z pewną ostrożnością). Myślę, że warto otwierać problemy na stronie Appengine Issues z XPath i XSLT w ich tytułach - w tej chwili są tylko problemy z pytaniem o określone biblioteki i to jest krótkowzroczność: nie obchodzi mnie, JAK zaimplementowano dobry XPath / XSLT, dla Pythona i / lub Javy, o ile będę go używać. (Określone biblioteki mogą ułatwić migrację istniejącego kodu, ale jest to mniej ważne niż możliwość wykonywania takich zadań, jak „szybkie stosowanie transformacji XSLT” w JAKIŚ sposób! -). Wiem, że wystąpiłbym z takim problemem, gdyby był dobrze sformułowany (zwłaszcza w sposób niezależny od języka).
Last but not least: pamiętaj, że możesz mieć różne wersje swojej aplikacji (używając tego samego magazynu danych), z których niektóre są zaimplementowane w środowisku wykonawczym Python, inne w środowisku wykonawczym Java, i możesz uzyskać dostęp do wersji różniących się od „domyślnej / aktywnej” "jeden z wyraźnymi adresami URL. Możesz więc mieć zarówno kod Pythona, jak i kod Java (w różnych wersjach aplikacji), aby używać i modyfikować ten sam magazyn danych, zapewniając jeszcze większą elastyczność (chociaż tylko jeden będzie miał „ładny” adres URL, taki jak foobar.appspot.com - co chyba jest ważne tylko dla dostępu dla interaktywnych użytkowników w przeglądarkach, tak sobie wyobrażam ;-).