Jython - Python - Java - etc
Le
Wamli

Jython est un interpreteur de Python tournant en java. Il peut donc utiliser
les classes existantes de Java, donc toute l'API (swing, awt etc). Mais
peut-il également être étendu à l'aide de librairies python "normales"
(Numerical, Gtk, etc) si celles-ci sont écrites en quelque chose d'autre que
python ou carrément compilées en languages machine ?
les classes existantes de Java, donc toute l'API (swing, awt etc). Mais
peut-il également être étendu à l'aide de librairies python "normales"
(Numerical, Gtk, etc) si celles-ci sont écrites en quelque chose d'autre que
python ou carrément compilées en languages machine ?
Je n'ai pas compris cette phrase : <<de librairies python "normales" si
celles-ci sont écrites en quelque chose d'autre que python>>
MCI
A ton avis ?
Réponse dans la FAQ:
http://www.jython.org/cgi-bin/faqw.py?req=show&fileúq04.001.htp
Ca a bien du me prendre 2 minutes à trouver !-)
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"
Oui, c'est assez déroutant comme formulation !-)
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"
qu'en utilisant http://jepp.sourceforge.net/ tu pourrais le faire, mais
j'ignore ce que cela vaut...
que tu en penses. JPython ne m'a pas vraiment convaincu, je trouve cela
trop lent, en plus le garbage collector est celui de java donc bien
trop compliqué à utiliser.
Qu'entends-tu par "compliqué à utiliser" ?
Il y a bien sûr quelques fonctions qui permettent de contrôler le gc (en
java ou en CPython, d'ailleurs), mais je n'ai jamais eu le besoin de les
utiliser...
--
Amaury
Je clarifie ma question et ma situation.
J'ai repris un projet qui n'a pas été touché depuis trois ans, développé en
Python, et je dois y incorporer de nouveaux modules. Ce projet se base sur
des extensions python comme "gnome.ui", "Numeric" ou encore "Gtk".
Le projet est en fait un framework de test pour des algorithmes
d'optimisation. L'avantage est qu'il permet de réaliser rapidement une
implémentation d'un algorithme, python se passant de beaucoup de formalisme
(typage dynamique etc). Mais je crois que pour le framework lui-même, on
atteint les limites de python, car cela devient difficile de s'y retrouver
entre les types, les classes et les fichiers.
Je pense donc porter, réécrire ou carrément refaire le framework en Java
(voire en C# sur .NET ou MONO), mais en gardant la possibilité d'étendre les
possibilité du framework à l'aide d'un language plus "simple" --> python.
Bien sur le portage serait la solution la plus simple, et pour commencer je
souhaitais voir s'il était possible de lancer l'application en utilisant
JPython. Ensuite, commencer doucement en transformant quelques objets en
code "natif" java.
Mais il croche assez vite car il ne trouve pas la librairie "gnome.ui" par
exemple. D'où ma question... Je crois que j'ai une partie de la réponse,
trouvée sur un des liens que vous m'avez envoyés, à savoir qu'il faudrait
écrire des interface JNI pour pouvoir profiter des extensions à python. Mais
je me demandais si justement l'écriture de ces interfaces n'avait pas pu
être automatisée par quelque groupe de développement ambitieux...
Voila, merci pour vos futures réponses
"Wamli"
Donc impossible à intégrer *directement* en Java. Regarde éventuellement
la FAQ de Jython.
Là, franchement, je pense que tu te trompes. Regarde des projets comme
Zope2, CPS, Zope3, PEAK, Twisted etc, et tu verra que question
frameworks riches et complexes, pas de problème, Python sait faire
C'est un autre problème. Soit lié à la qualité du projet lui-même, soit
lié à tes connaissances en Python - soit tout simplement inhérent à la
complexité naturelle du problème.
C'est bien sûr difficile de juger sans connaitre effectivement le projet
et le contexte, mais a priori, je pense que cette démarche est aussi
inutile que risquée. Python n'est pas un VBScript, c'est un langage
(largement) aussi puissant que Java. Son dynamisme et ses capacités en
matière d'introspection et de métaprogrammation le rende AMHA bien plus
adapté au développement de frameworks que des langages comme Java.
Suis-je dans le vrai si je suppose que tu connais mieux Java et C# que
Python ? Le cas échéant, prend le temps d'apprendre Python, ce sera
certainement bien plus rapide que de porter tout le projet - sans
compter les wrappers JNI et tout le tintouin. Pour info, à
fonctionnalités équivalente, une implémentation Python peut tenir en 4 à
10 fois moins de lignes qu'une implémentation en Java. Crois moi, passer
de 10Kloc à 50 ou 100KLoc + des wrappers JNI, ça fait une différence
sensible en termes de maintenabilité.
mes deux centimes...
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"