2010-12-01 22 views
5

Quel est le meilleur moyen de générer java à partir de python? Je veux écrire un décorateur qui génère du code java pour appeler une version json d'une fonction (je peux utiliser les décorateurs existants pour exporter l'API json).Le meilleur moyen de générer du java avec python?

Quelle est la meilleure façon de générer le Java, devrais-je considérer des choses comme les FSM ici?

Idéalement, je peux écrire mon code une fois, pour le serveur et générer du code pour l'interface avec lui pour différentes langues (java d'abord).

Edit (tiré d'un commentaire sur une réponse supprimé):
Le code Java en cours d'exécution sur Android, tandis que le code python sera dans un serveur django ... Aussi, je veux être en mesure de générer statiquement le code java, et cela dans le cadre d'une API que les gens peuvent utiliser.

+1

La meilleure façon ne génère pas quelque chose de si complexe si vous pouvez l'éviter. Un indice cependant: autant que je sache, il est relativement «simple» (par opposition à toutes les autres possibilités) de générer un code correct (pas trop lisible, mais correct) de quelque chose comme un AST (arbre de syntaxe abstraite) - au moins vous connaissez bien le format de l'arbre (et ce qu'il représente). Cela signifie essentiellement l'implémentation de la moitié d'un compilateur Java. – delnan

+0

Votre serveur génère donc du code Java (octet?) Que l'utilisateur Android va exécuter juste pour obtenir des données JSON? –

+0

De toute évidence, le bit qui peut générer du code Java ne sera exécuté que lorsque nous décidons de changer l'API, pas tout le temps :) –

Répondre

0

La réutilisation est bonne. La complexité est un prix.

Il vous fera payer deux fois ou plus plus tard. Mesurez votre retour sur investissement (ROI) avant de faire un saut.

[Edit:]

  1. Vous pouvez utiliser Jython qui le rendre facile d'écrire du code de la colle en appelant les fonctions Java.
  2. jythonc transforme le code source Python en code source Java puis appelle un compilateur Java pour le transformer en fichiers .class. Comme indiqué précédemment, vous pouvez utiliser un modèle. Quelqu'un a utilisé cheetah à cette fin. Bien que le lien ne soit plus disponible.
+1

La programmation réseau peut être un cauchemar à déboguer, pour générer toute cette colle, vous économiserez beaucoup de tracas. –

+0

@Stuart Axon: +1 Très vrai! Je ne le conteste pas du tout. Nous devons être un juge de cela. Cependant, j'ai vu les gens ont payé pour prendre des décisions hâtives spécialement avec des codes de colle. Cela dépend vraiment de ce qui est réalisé ici. La complexité des API json par rapport à la complexité du code de la colle.J'ai juste une intuition que la complexité des API json serait moindre car Python a d'excellents outils dans son arsenal. – pyfunc

+0

C'est plus générer le code pour l'appeler de Java/android que je pense à tant que le côté python. Je vais enquêter sur Jythonc ... pour l'instant je suis dans une phase d'enquête, si cela semble être une impasse alors ce n'est pas trop une perte. –

1

Vous pouvez toujours créer du code Java de la même manière que les webapps créent du HTML: avec un template. Ensuite, vous pouvez avoir le code source java compilé en bytecode en utilisant un compilateur Java régulier (voir Package javax.tools)

Pas nécessairement la meilleure option, mais certainement une option (et assez simple BTW)

+0

Pourrait faire ... J'ai généré du code comme ça avant et ce n'est pas toujours joli. –

-1

Mon conseil? Avez-vous générer du code JavaScript au lieu du code Java. Android peut exécuter du code JavaScript en utilisant un WebView.

+0

Certes, je ne suis pas sûr de ce fonctionnement en tant que service si. –