[Squeak-fr] Squeak et Java, objectif applications d'entreprise

Christophe Allegrini christophe.allegrini at birdtechnology.net
Mar 2 Nov 16:39:37 CET 2004


Bonjour à tous,

Squeak et Java, une collaboration fructueuse.

Voici un exemple élémentaire des avantages à utiliser deux langages et un middleware 
plutôt qu'un seul langage.

L'exemple se veut le plus simple possible afin de se concentrer sur l'approche en terme 
d'architecture et non en terme d'algorithme. 

Le programme consiste en deus itérations imbriquées avec incrémentation d'une variable 
de type Long.


Voici le programme complet en Java : 

    long x = 0;
    long timeStart = 0;

    timeStart = System.currentTimeMillis();

    for (int i = 0; i < 1000; i++) {
        for (int j = 0; j < 100000000; j++) {
            x = x + 1;
        }
    }

    timeStart = System.currentTimeMillis() - timeStart;
    System.out.println(new Long(timeStart).toString());
    System.out.println(new Long(x).toString());

Le temps d'exécution est de 487 secondes.



En Squeak l'équivalent est : 
Time millisecondsToRun: [
|  x |
x := 0 .
1000 timesRepeat: [ 
100000000 timesRepeat: [ x := x + 1 ] ] ].

Je n'ai pas eu la patience d'attendre, ce genre de "calcul" n'étant pas le point 
fort de Smalltalk en général.


Maintenant, utilisons BirdView, le framework d'accès à Bird of Java pour aider Squeak, 
en le faisant collaborer avec Java.
On confie à Java la responsabilité de la boucle interne de 1 à 100000000 et de 
retourner le résultat à Squeak : 

La méthode Java : 
public String iteration() {
    long x = 0;
    String value = null;

    for (int i = 0; i < 100000000; i++) {
        x = x + 1;
    }

    value = new Long(x).toString();
    return value;
}


Le programme Squeak : 
Time millisecondsToRun: [
| bv x |
bv := BirdView new.                                "instance create"
bv ipAddress: '127.0.0.1'   ipPort: 2010.    "connection à un listener Bird of Java"
bv ltnName: 'ltn_postgresql'.

x := 0.
1000 timesRepeat: [
bv rpcPackage: 'test' rpcClass: 'TestSpeed' rpcMethod: 'iteration' .
bv rpcEval.
x := x + (bv evalResult at: 1 asInteger) . ] ]

Temps d'exécution : 317 secondes, soit 170 secondes de moins que le programme full Java !


Même si l 'exemple est limité, il démontre que Squeak et Java peuvent parfaitement 
fonctionner ensemble, et fournir un niveau de performance supérieur en étant associé 
que pris séparément.
Cela permet de sortir Squeak de son relatif isolement vis-à-vis de l'ensemble des 
ressources du monde Java, très prisées en ce moment.
Dans cette configuration de test, pourtant peu favorable, BirdView et Bird of Java 
qui intègre dans son noyau la 'connaissance' de Smalltalk offre un solution efficace 
d'interopérabilité Squeak-Java. 

Je présenterais d'autres exemples sur Squeak et BirdView notamment sur l'accès aux 
bases de données à travers JDBC et la conception d'interface graphique avec Squeak 
et des données.


Cordialement,

Christophe Allegrini

email : squeak at birdtechnology.net
www.birdtechnology.net
-------------- section suivante --------------
Une pièce jointe HTML a été enlevée...
URL: http://lists.squeakfoundation.org/pipermail/squeak-fr/attachments/20041102/4bf85f14/attachment.htm


Plus d'informations sur la liste de diffusion Squeak-fr