[PageD'Accueil] [IndexDesTitres] [IndexDesTermes

Interface Java et Python

Jython est une ré-implémentation de Python en Java. Jython est écrit à 100% en Java: cela vous permet donc de faire fonctionner vos programmes Python dans n'importe quelle machine virtuelle Java.

Dans vos programme Jython, vous avez sous la main la syntaxe du Python, la plupart des classes de Python et vous pouvez également appeler toutes les classes de Java, y compris AWT et SWING.

Cependant Jython n'est pas adapté à toutes les situations: l'interpréteur est plus lent que le CPython standard, et il y a toujours un certain retard dans l'implémentation des nouvelles fonctionnalités apportées à CPython. Il existe aussi d'autres solutions pour accéder aux classes Java depuis CPython. On peut noter par exemple JPype (http://jpype.sourceforge.net/index.html), qui établit une liaison avec la JVM via JNI.

Installer Jython sous Windows

Installer le JDK

Vous devez tout d'abord installer le compilateur Java. Pour cela, téléchargez le JDK (ou J2SE SDK) de http://java.sun.com
La version 1.1 minimum est nécessaire pour Jython. Vous pouvez bien entendu télécharger la version la plus récente.

Pensez à modifier la variable PATH pour qu'elle contienne le chemin du répertoire \bin du JDK. C'est nécessaire pour pouvoir lancer correctement le compilateur java (javac) et les autres outils du JDK.

Tapez java -version pour vérifier que Java est correctement installé.
javac -help doit vous afficher la liste des options du compilateur.

Installer Jython

Téléchargez Jython (http://www.jython.org/), puis installez-le.
Tapez java jython-xx (où xx est le numéro de version que vous avez téléchargé) et suivez les instructions.

Créer une applet Java en Python avec Jython

Nous allons créer une applet SWING toute simple.

Le programme Python

Crééez le fichier jyapplet.py:

from javax.swing import *

class jyapplet(JApplet): # doit correspondre au nom du fichier !
  def init(self):    
    label=JLabel("Hello, je suis une applet écrite en Jython !")
    self.getContentPane().add(label)

Compiler

puis compilez-le en tapant: jythonc -c -j jyapplet.jar jyapplet.py

Note: jythonc est un fichier batch/shellscript fourni avec Jython (dans le répertoire d'installation).

Vous obtiendrez le fichier jyapplet.jar qui est votre applet.
Elle contient votre programme Jython complet, et l'interpréteur Jython est inclu dedans. Vous n'avez besoin d'aucun fichier externe. Ce fichier jar fait environ 274 ko.

Tester

Créez une page HTML pour appeler votre applet:

<html>
<body>
<applet code="jyapplet.class" archive="jyapplet.jar" width="640" height="240"></applet>
</body>
</html> 

et ouvrez ce fichier dans votre navigateur. Au bout de quelques secondes vous devriez voir apparaître le message "Hello, je suis une applet écrite en Jython !"

Créer une applet qui accède au disque dur

Le système de sécurité de Java empêche votre applet d'accéder au disque dur ou au réseau (exception faite du site même d'où a été chargée l'applet). L'utilisation de exec() et eval() est également bloqué.

Pour permettre à l'applet de faire plus de chose, il vous faut la signer cryptographiquement.

Créer l'applet

Créons une applet qui liste le contenu de C:\:

from javax.swing import * 
import os
 
class jyapplet(JApplet):
  def init(self):     
    tx=JTextArea("\n".join(os.listdir("c:\\")))
    self.getContentPane().add(tx)

Compiler

Compilez cette applet comme indiqué précédemment (jythonc -c -j jyapplet.jar jyapplet.py).

Générer sa clé

Tapez: keytool -genkey -alias votreNomdAlias
et entrez les informations nécessaires. N'oubliez pas le mot de passe que vous avez entré pour protéger cette clé.

Vous n'avez besoin de générer votre clé qu'une seule fois. Une fois votre clé créée, vous pouvez vous en servir pour signer autant d'applet que vous voulez.

Signer son applet avec sa clé

Tapez: jarsigner -verbose jyapplet.jar votreNomdAlias

Entrez le mot de passe de votre clé.

Tester l'applet

Vous pouvez utiliser la même page HTML que précédemment.

Lors du chargement dans le navigateur, une fenêtre d'avertissement s'affichera demandant à l'utilisateur s'il fait confiance à l'applet. Cliquez sur "Oui".

Vous pouvez refaire le test en compilant votre applet sans la signer: Java bloquera l'exécution de l'applet par mesure de sécurité.

Note spéciale Netscape: Contrairement aux spécifications de Sun, Netscape utilise un modèle de sécurité différent pour les applets. Votre applet fonctionnera donc dans tous les navigateurs, sauf dans Netscape.


2016-06-05 21:42