Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Jython - Python - Java - etc

8 réponses
Avatar
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 ?

8 réponses

Avatar
Do Re Mi chel La Si Do
Bonsoir !

Je n'ai pas compris cette phrase : <<de librairies python "normales" si
celles-ci sont écrites en quelque chose d'autre que python>>

MCI
Avatar
bruno at modulix
Wamli wrote:
Jython est un interpreteur de Python tournant en java.
(snip)

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 ?


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('@')])"

Avatar
bruno at modulix
Do Re Mi chel La Si Do wrote:
Bonsoir !

Je n'ai pas compris cette phrase : <<de librairies python "normales" si
celles-ci sont écrites en quelque chose d'autre que python>>


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('@')])"

Avatar
remi_inconnu
Avec Jython, il ne me semble pas que cela soit possible, peut être
qu'en utilisant http://jepp.sourceforge.net/ tu pourrais le faire, mais
j'ignore ce que cela vaut...
Avatar
remi_inconnu
Va voir aussi http://jpype.sourceforge.net si tu l'utilises dis nous ce
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.
Avatar
Amaury
Va voir aussi http://jpype.sourceforge.net si tu l'utilises dis nous ce
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

Avatar
Wamli
Merci pour vos remarques et réponses. Mais ce n'est pas encore bien clair.
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" wrote in message news:
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 ?





Avatar
bruno at modulix
Wamli wrote:
Merci pour vos remarques et réponses. Mais ce n'est pas encore bien clair.
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".


Donc impossible à intégrer *directement* en Java. Regarde éventuellement
la FAQ de Jython.

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,


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

car cela devient difficile de s'y retrouver
entre les types, les classes et les fichiers.


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.

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.


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('@')])"