2009-05-02 17 views
6

Qualcuno ha esperienza diretta (buona o cattiva) utilizzando Jython con Google App Engine?Sviluppo Jython su Google App Engine

+0

Aggiunta di taglie il 24 gennaio 2011.Se qualcuno ha informazioni più recenti su Jython, esempi in uso su appengine, codice sorgente, tutorial ecc. Per favore scrivi – abel

risposta

4

Per fare la domanda ovvia: perché vuoi? (C) Python è supportato nativamente da Google App Engine, e ormai è abbastanza maturo e molto ben supportato.

Per rispondere alla domanda iniziale, però: non ho esperienza personale, ma posso darvi una panoramica generale di quello che sarà come:

Il modo più semplice momento sarà quello di utilizzare Jython di supporto per la chiamata in Java per utilizzare l'SDK Java di App Engine. Ciò significa che sebbene tu scriverò Python, assomiglierà molto a Java, e dovrai usare i documenti Java, piuttosto che Python.

È, tuttavia, teoricamente possibile utilizzare l'SDK Python in Jython su App Engine. L'SDK è puro Python e tutte le interazioni tra l'SDK e il runtime vengono eseguite tramite RPC tramite il modulo google.appengine.api.apiproxy_stub_map. Java ha un'interfaccia equivalente nella classe com.google.apphosting.api.ApiProxy - guarda l'articolo su Unit Testing in GAE per alcuni dettagli su come configurarlo.

Considerato tutto questo, ecco come si potrebbe utilizzare l'API di Python in Jython:

  1. Scrivi un'apiproxy_stub Python che prende semplicemente tutte le chiamate API e li invia alla classe com.google.apphosting.api.ApiProxy .
  2. Raggruppa le parti pertinenti di SDK Python con la tua app Jython (che è la maggior parte di esso, sfortunatamente).
  3. Nel codice di inizializzazione, installa la sottoclasse apiproxy_stub che hai scritto come gestore per tutti i servizi pertinenti: datastore_v3, memcache, user, urlfetch e immagini.

Se si finisce per fare questo, si prega di documentarlo e rilasciare il codice - so di almeno un altro utente che sarebbe interessato. :)

+5

Jython può interagire direttamente con Java, JRuby, ecc. Ecc. E ti dà accesso a un insieme molto diverso di librerie e strumenti buon vecchio CPython, quindi la domanda di Thomas suona abbastanza ragionevole per me (sfortunatamente non ho l'esperienza che chiede, quindi non posso rispondere alla sua domanda, ma spero che altri possano farlo). –

+0

Un paio di motivi: uno è che sono stato approvato per il runtime Java da Google e vorrei sfruttare parte del codice Java che ho sviluppato negli ultimi 9 anni, e l'altro è che credo che Python (Django) Lo sviluppo del Web ha più senso e ha più di una comunità esistente e una base di codice che Java (JSP). Seriamente, non ci sono motivi validi per "tagliarlo a metà" e (piuttosto che scegliere Java o Python) usare Jython? TL –

+0

Bene, suggerirei di utilizzare Java, se Java è ciò che desideri. :) –

2

In primo luogo, ci sono persone che affermano che è Jython, Querces, and JRuby can Beat their Native Counterparts quando si tratta di velocità, utilizzando la potenza della JVM.

Tuttavia, vi sono alcune informazioni contrastanti sulla velocità di Jython. Un utente di overflow dello stack afferma che Jython is the slowest of many of the languages involved in a speed test he conducted.

Nessuna delle domande sulle prestazioni coinvolge realmente App Engine, solo la JVM in generale.

In this article posted by a Jython committer, Alan Kennedy sostiene che Jython su App Engine combina la natura di sviluppo rapido di Python con le librerie generose disponibili nella JVM. Jython è Python, ma è Python che ha accesso diretto alle classi Java.

Ho un po 'di esperienza con questo con Querces PHP. Ho portato il plug-in JQuery Form Builder a Google App Engine. È un codice PHP, ma PHP è in grado di accedere direttamente agli oggetti DAO scritti in Java. Allo stesso modo, Jython è in grado di fare lo stesso.

Alan Kennedy ha anche incontrato uno Challenge issued by Nick Johnson con cui dimostra qualcosa che può essere fatto con Jython su App Engine che altrimenti sarebbe difficile da realizzare in pure trasformazioni Python e XSLT. Risponde alla domanda sciopero nella risposta di Nick: perché vorresti farlo?