Colino Computing







[? visites]


Articles



Le langage Java.


Une introduction rapide.
Le Java est un langage au concept assez nouveau. Il a été développé par Sun Microsystems vers 1994. Le premier but de Java était de se pencher sur les difficultés des programmeurs à développer sur différentes plateformes, ce qui nécessitait toujours un travail important pour le portage.
Le C ANSI, définissant des normes strictes, permettait déjà, dans le cas théorique parfait, à ces programmeurs de porter leurs logiciels sans modifier les sources. Il suffisait de recompiler les sources en question avec un autre compilateur. Toutefois, la recompilation était toujours nécessaire. D'autre part, ce cas était rarement possible et les sources devaient, en règle générale, toujours être plus ou moins modifiés;: les extensions sauvages du C / C++, aisni que l'arrivée des différentes interfaces utilisateur (Windows, MacOS, les multiples GUI d'Unix et Linux, ...) et leurs API différentes ont rendu impossible le portage d'un logiciel sans modifications. Si la tâche reste peu ardue pour le classique "Hello world", on imagine facilement le travail nécessité pour porter un logiciel comme Photoshop !

Portabilité : le prix du confort.
Les doux rêveurs de Sun ont donc imaginé une façon de programmer qui ne nécessiterait ni modification des sources, ni même recompilation pour faire tourner le même logiciel sur différentes plateformes. Cette idée semble magnifique, mais elle apporte toutefois ses inconvénients : pour que le même programme puisse tourner sur des machines aux systèmes complètement différents, à l'architecture matérielle complètement différente, il faut forcément ajouter une couche d'émulation ! C'est cette couche le principal argument des détracteurs de Java.
En effet, un programme Java "compilé" ne l'est pas réellement : le résultat de la compilation est appelé bytecode, et ce bytecode est en effet semi-interprété par un interpréteur Java. Les instructions présentes dans ce bytecode doivent en effet être transformées en langage natif, doit permettre d'afficher une fenêtre similaire sous des systèmes d'exploitation très différents comme Windows, MacOS etc. Les inconvénients de ce mode de fonctionnement sont faciles à deviner : le "retraitement" nécessaire par l'interpréteur amènera le logiciel a être moins performant, dans certains cas (principalement pour les instructions "platform-dependant" comme l'affichage d'éléments graphiques) que celui qui aura été écrit dans un langage natif. Ce problème de performances est toutefois beaucoup moins important avec le temps et l'augmentation de la capacité des machines.
D'autre part, le rêve s'arrête avec la disponibilité des Java Virtual Machines (JVM), les interpréteurs en question : ils ne sont pas présents, en effet, pour 100% des plateformes existantes. Enfin, la devise "write once, run anywhere" peut être arrêtée par un autre inconvénient : la version de l'interpréteur Java utilisée. En effet, Java est en perpétuelle évolution, et de nouvelles fonctionnalités apparaissent avec les différentes versions : si vous programmez en Java 2, en utilisant certaines fonctions qui n'existaient pas dans le Java 1, votre logiciel fonctionnera sur toutes les machines équipées d'un interpréteur Java 2. Et plantera sur celles munies du Java 1. Ce problème est cependant contournable : il est autorisé d'inclure des éléments du Java 2 dans votre programme, ce qui permettra aux clients 1.1 de profiter aussi de votre logiciel.

Les avantages du Java
Ces petits inconvénients sont le prix à payer. Toutefois ce langage présente aussi des avantages (hormis la portabilité : parlons maintenant des utilisateurs).
Personnellement je suis réjoui de pouvoir utiliser exactement la même application n'importe où. Que vous soyez sous Windows, sous MacOS, sous Unix, et surtout si vous utilisez différents environnements (bureau / maison, par exemple), vous pourrez retrouver vos repères avec une facilité incroyable : vos programmes fonctionneront et se présenteront exactement pareil.
D'autre part, l'interpréteur permettant les appels aux API natives présente un autre avantage : il soulage votre application, dans laquelle ne se trouve que des appels à l'interpréteur, de nombreuses librairies (prévenez-moi lorsque vous tomberez sur une application Java munie de DLLs). D'une part, cela permet d'alléger considérablement ces applications (beaucoup peuvent tenir sur une disquette - <pub>comparez la taille d'Outlook Express et de ColinoMail</pub>), ce qui permet de les récupérer facilement (d'une machine à l'autre, ou bien via Internet), et d'autre part cela dispense d'une installation, ça ne laisse pas de traces sur le système, etc.).
Lorsque vous verrez des applications Java installées par un InstallShield ou équivalent, se lançant via un exécutable, dites-vous bien qu'il s'agit uniquement de ne pas faire perdre ses repères à l'utilisateur. Bien souvent l'installeur se contente d'extraire/copier les fichiers, et l'exécutable ne fait qu'appeler un interpréteur Java.

Que peut-on faire en Java ?
Le Java a l'avantage de permettre la programmation sous de multiples facettes :
  • applications : logiciels qui s'exécutent normalement sur une machine cliente ;
  • applets : les petits jeux auxquels vous pouvez jouer sur Internet, par exemple (faites une recherche, sur Altavista par exemple, sur "+tetris +java", le résultat est impressionnant) ;
  • servlets : qui sont en fait des CGI en Java, permettant la génération dynamique de pages HTML à partir, par exemple, d'une base de données.
Enfin, le Java est très orienté réseau.

Programmer en Java.
Si j'ai atteint mon but, j'ai réussi à vous présenter Java sous un jour favorable, et si vous êtes programmeur, peut-être aurez-vous envie de vous y frotter ! Pour découvrir les aspects de la programmation Java, vous pouvez donc lire la suite de cet article.

© 2000, Colin Leroy


Retour aux articles