2009-05-02 17 views
6

¿Alguien tiene alguna experiencia directa (buena o mala) usando Jython con Google App Engine?Desarrollo de Jython en Google App Engine

+0

Bounty añadido el 24 de enero de 2011.Si alguien tiene información más reciente sobre Jython, ejemplos en uso en appengine, código fuente, tutoriales, etc., publique – abel

Respuesta

4

Para hacer la pregunta obvia: ¿Por qué querrías? (C) Python es compatible de forma nativa con Google App Engine, y ahora es bastante maduro y tiene un buen soporte.

Para responder a la pregunta original, sin embargo: no tengo experiencia personal, pero le puede dar una visión general de lo que será como:

La forma más fácil actualmente será usar Jython de soporte para llamar a Java para usar el SDK Java de App Engine. Esto significa que aunque va a escribir Python, se parecerá mucho a Java, y tendrá que usar los documentos de Java, en lugar del de Python.

Sin embargo, teóricamente es posible utilizar Python SDK en Jython en App Engine. El SDK es puro Python, y toda la interacción entre el SDK y el tiempo de ejecución se realiza a través de RPC a través del módulo google.appengine.api.apiproxy_stub_map. Java tiene una interfaz equivalente en la clase com.google.apphosting.api.ApiProxy; consulte el artículo en Unit Testing in GAE para obtener más información sobre cómo configurarlo.

Teniendo en cuenta todo esto, aquí es cómo se puede utilizar la API de Python en Jython:

  1. Escribe un apiproxy_stub Python que simplemente toma todas las llamadas a la API y los envía a la clase com.google.apphosting.api.ApiProxy .
  2. Agrupe las partes relevantes del Python SDK con su aplicación Jython (desafortunadamente, eso es gran parte).
  3. En su código de inicialización, instale la subclase apiproxy_stub que escribió como controlador para todos los servicios relevantes: datastore_v3, memcache, user, urlfetch e images.

Si terminas haciendo esto, por favor, documenta y libera el código. Conozco al menos a otro usuario que podría estar interesado. :)

+5

Jython puede interactuar directamente con Java, JRuby, etc., y le da acceso a un conjunto muy diferente de bibliotecas y herramientas que bueno viejo CPython, entonces la pregunta de Thomas me parece muy sensata (desafortunadamente no tengo la experiencia que él pide, así que no puedo responder su pregunta, pero espero que otros lo hagan). –

+0

Un par de razones: una es que he sido aprobado por Java para el tiempo de ejecución de Java y me gustaría aprovechar parte del código Java que he desarrollado durante los últimos 9 años, y el otro es que creo que Python (Django) El desarrollo web tiene más sentido y tiene más de una base de código y comunidad existente que Java (JSP). En serio, esas no son buenas razones para "cortarlo por la mitad" y (en lugar de elegir Java o Python) usar Jython? TL –

+0

Bueno, todavía sugeriría usar Java, si Java es lo que quieres. :) –

2

En primer lugar, hay personas que afirman que Jython, Querces, and JRuby can Beat their Native Counterparts en lo que respecta a la velocidad, utilizando la potencia de la JVM.

Sin embargo, hay cierta información contradictoria sobre la velocidad de Jython. Un usuario de Stack Overflow afirma que Jython is the slowest of many of the languages involved in a speed test he conducted.

Ninguna de las preguntas de rendimiento realmente involucra a App Engine, solo la JVM en general.

En this article posted by a Jython committer, Alan Kennedy afirma que Jython en App Engine combina la naturaleza de rápido desarrollo de Python con las abundantes bibliotecas disponibles en la JVM. Jython es Python, pero es Python el que tiene acceso directo a las clases de Java.

Tengo algo de experiencia con Querces PHP. Transmití el complemento JQuery Form Builder a Google App Engine. Es un código PHP, pero PHP puede acceder directamente a los objetos DAO escritos en Java. Del mismo modo, Jython puede hacer lo mismo.

Alan Kennedy también se encontró con un Challenge issued by Nick Johnson por el cual demuestra algo que se puede hacer con Jython en App Engine que de otra manera sería difícil de lograr en transformaciones Python, XSLT puras. Responde la pregunta de respuesta en la respuesta de Nick: ¿Por qué querrías?