LE VIRAGE TECHNOLOGIQUE VERS LE JAVA



Table des matières

Les problèmes reliés aux applications plate-formes spécifiques
Le Java, une plate-forme de programmation universelle
Le Java et l'internet
Le langage de programmation Java et son champ d'application
L'intérêt des entreprises pour le Java


Les problèmes reliés aux applications plate-formes spécifiques

L'évolution de la technologie informatique suscita l'émergence d'une diversité de microprocesseurs (CPU) et de systèmes d'exploitation (OS) servant de plate-formes pour l'exécution de programmes. Traditionnellement, le code exécutable (binaire) d'une application était inextricablement lié à la plate-forme native d'exécution représentée par le tandem spécifique OS/CPU. Dans bien des cas, la syntaxe du langage utilisé (source) par le programmeur devait aussi se conformer à certaines particularités de la plate-forme utilisée: ces applications sont dites plate-formes spécifiques. Dans la majorité des cas aujourd'hui, c'est cette situation que l'usager rencontre lorsqu'il interagit avec l'ordinateur. Citons à titre d'exemple le traitement de texte Word pour Windows d'un PC IBM compatible. Cette application est constituée d'une représentation binaire dont l'interprétation opérationnelle n'est que possible dans un environnement formé du système d'exploitation Windows et d'un microprocesseur Intel. L'application Word pour MacIntosh est pour sa part différente de la version Windows: des modifications doivent être apportées à la source et le binaire doit dans ce cas correspondre à une représentation adaptée à l'architecture spécifique du CPU utilisé par le Mac.

La dépendance d'une application sur sa plate-forme d'exécution a plusieurs implications. Quand une entreprise ou un particulier met à jour son matériel informatique, les applications doivent être réadaptées à ce dernier. Du point de vue du programmeur, cela implique qu'il devra modifier l'ancienne source pour produire une version adaptée à la nouvelle plate-forme. Ou bien, en raison des nouvelles possibilités offertes par celle-ci, de réécrire l'application de bout en bout dans un langage plus moderne pour exploiter ainsi au maximum la performance accrue offerte par les nouvelles ressources. Les codes source et binaire doivent être ressuscités à chaque fois que la plate-forme change: le programmeur doit réinventer la roue, pour ainsi dire, afin de permettre au programme d'avancer sur la nouvelle plate-forme. Du point de vue de l'entreprise, cela implique des coûts: elle devra acquérir les nouvelles versions d'applications commerciales propres à sa nouvelle plate-forme et défrayer les coûts associés à la modification ou à la réécriture puis l'implantation de programmes ad hoc. Si l'entreprise opte tout simplement de ne pas mettre à jour ses applications afin de se soustraire des frais substantiels ou des difficultés techniques que cela implique, elle devra maintenir sa plate-forme existante et souffrir de la performance relative mitigée que celle-ci représente désormais.

Cette situation explique pourquoi l'industrie informatique défraie aujourd'hui des milliards de dollars pour réécrire du vieux code qui n'a pas tenu compte du changement de date pour le prochain millénaire, pourquoi le système de controle de traffic aérien roule sur des plates-formes archaïques datant des années 60, pourquoi la créativité des programmeurs est freinée, occupés comme ils sont à adapter leurs programmes existants sur les plates-formes émergentes.

Le Java, une plate-forme de programmation universelle

Dans le but de remédier à cette situation, la compagnie Sun a introduit dans les années 90 le langage de programmation Java. Contrairement aux langages traditionnels dont le code binaire est fortement lié à la spécificité de la plate-forme native, le binaire de Java (appelé bytecode) est interprété dans un contexte d'abstraction (qui existe au niveau logiciel) indépendant de la plate-forme OS/CPU. Ce niveau d'abstraction correspond à l'environnement d'exécution Java (JRE) dont la machine virtuelle Java (JVM), responsable de l'interprétation des bytecodes, en est le coeur. Les bytecodes de Java sont l'équivalent des binaires d'autres langages de programmation mais, contrairement à ceux-ci , ne sont pas spécifiques à l'architecture native du CPU puisqu'au lieu de cibler ce dernier, leur destination finale est le JVM(1). En d'autres mots, l'architecture "native" des bytecodes est le JVM. En ce sens le Java transcende le simple fait d'être un langage de programmation pour constituer une plate-forme opérationnelle universelle qui coexiste paisiblement avec n'importe quelle plate-forme native OS/CPU. Celle-ci est reléguée au rôle de moteur déterminant la vitesse d'éxécution de l'application Java.

Puisque la source et le code binaire Java sont indépendants de la plate-forme native OS/CPU, les problèmes sus-mentionnés ne se posent plus. Le programmeur peut écrire et compiler son application Java sur son PC IBM compatible puis porter les bytecodes sur un Mac et l'éxécuter. Une entreprise peut acquérir une plate-forme native plus performante et simplement porter les binaires de ses applications Java sur sa nouvelle machine et le tour est joué. Il n'est plus nécessaire de réécrire le code, ni même de le recompiler. La seule exigence est que les machines sur lesquelles sont portées les bytecodes soient pourvues de la machine virtuelle Java. Certains manufacturiers d'ordinateurs ont d'ailleurs déjà commencé à intégrer le JVM dans leurs machines(2).

Au rythme où vont les choses actuellement, on peut d'ores et déjà entrevoir le jour où Java sera la plate-forme dominante, supplantant même Windows. Celle-ci deviendra alors une plate-forme native parmi tant d'autres au-dessus de laquelle s'éxécuteront des applications (universelles) Java. Il est important de comprendre que ce virage vers le Java ne s'accompagnera pas nécessairement d'un changement de matériel pour l'usager puisque l'incorporation du Java est réalisée par l'intégration d'un JVM adapté à la spécificité existante de l'OS/CPU de la machine.

Le Java et l'internet

Le réseau internet, ou le World Wide Web (WWW), représente une révolution dans le monde des communications. Cette technologie permet à un usager d'accéder à distance à pratiquement toute forme d'information imaginable, d'échanger avec des correspondants partout à travers le monde sur des sujets d'intérêt commun, et j'en passe. Les entreprises sont devenues plus efficaces en exploitant les vitesses de transmission rapides - pratiquement en temps réel - du réseau. Dans cette technologie réseau on retrouve du côté usager le fureteur, doté d'un interpréteur de langage HTML ("Hyper Text Markup Language") qui génère la page Web. Le fureteur représente une plate-forme universelle pour l'interprétation du langage HTML en ce sens qu'indépendemment de la plate-forme native, la page Web doit toujours être rendue de la même manière sur l'écran de l'usager. L'engouement pour le Java a réellement pris son envol lorsque la compagnie Sun intégra l'environnement d'exécution Java (JRE) directement dans leur fureteur HotJava, puis à partir de leur version 2.0 de Netscape(3). Le fureteur "Java compatible" était né. Grâce à cette nouvelle technologie, un programme Java peut être intégré à une page Web ce qui permet de véhiculer l'exécutable à travers le réseau jusqu'au client(4): lorsque l'usager doté d'un fureteur "Java compatible" accède à la page en question, les bytecodes du programme sont téléchargés dans le JRE de son fureteur, sont interprétés par le JVM de celui-ci et le programme est exécuté. Le fureteur devient ainsi une plate-forme pour l'exécution de programmes Java qui peuvent voyager à travers le réseau avec la même facilité que le contenu de pages Webs. Du point de vue de l'utilisateur, le fureteur devient une plate-forme étendue de fonctions multiples renfermant les capacités d'acquérir, de transmettre des données mais aussi la capacité de traiter les données par le biais de programmes Java téléchargés dans le JRE. Dans certains cas, un usager peut faire tout son travail dans le contexte convivial de l'interface usager de son fureteur: il peut lire/envoyer son courrier, prendre connaissance des nouvelles quotidiennes, exécuter des applications Java dédiées à son travail, acquérir des programmes Java qui lui sont utiles sur le net.

Le langage de programmation Java et son champ d'application

Le langage de programmation Java est en train de s'établir comme un langage de programmation sérieux, capable de produire les applications les plus sophistiquées dans tous les domaines. C'est un langage structuré de haut niveau reposant sur le paradigme orienté-objet. Il permet de créer des applications multi-tâches avec la possibilité d'associer des priorités relatives aux divers contextes d'exécution. Il offre aussi un éventail très riche de composantes graphiques permettant de créer des interfaces d'usager graphiques conviviales. Le Java a des applications dans tous les domaines de l'industrie: le commerce, la téléphonie, la gestion de réseaux, les applications client-serveur pour en nommer quelques-unes. L'interface de programmation contient des librairies permettant d'accéder à des bases de donnée corporatives par le biais d'interfaces JDBC ("Java Database Connectivity").

L'intérêt des entreprises pour le Java

Cette souplesse du langage, jumelée avec son caractère universel (écrire une fois, éxécuter partout), son indépendance vis-à-vis les plates-formes natives émergentes, sa capacité d'exécuter du code téléchargé depuis un serveur lointain sur le fureteur préféré de l'usager, représentent des avantages tellement attrayants (tant du côté usager que du côté programmeur) que ce n'est qu'une question de temps pour que le Java s'impose comme la plate-forme de programmation la plus répandue dans le monde.

Actuellement, les grandes corporations ont déjà commencé leur virage vers le Java. Les petites et moyennes entreprises n'auront d'autre choix que d'emboîter le pas pour demeurer compétitives. Il y aura un besoin de conseillers-experts pour évaluer la manière optimale que le Java peut être intégré dans ces entreprises. Comme le phénomène Java est relativement récent, le conseiller-expert pourra préparer des séminaires de sensibilisation auprès des dirigeants d'entreprises, de services sociaux (hôpitaux, etc...) et, à la lumière des besoins manifestés par ceux-ci, proposer le développement d'applications ad hoc pour optimiser leur rendement et efficacité.

Michel Comeau

Sources: Byte, janvier 1997, mai et juin 1998.

Retour au menu principal

(1) Des ponts peuvent néanmoins être créés entre le JVM et le OS natif pendant l'exécution de l'application Java. Ainsi, certaines classes de bytecode Java ("peer classes") vont emprunter des attributs spécifiques à l'OS natif. C'est le cas quand Java crée des composantes pour une interface d'usager graphique: un bouton d'une interface graphique produit par une application Java aura l'apparence d'un bouton MacIntosh quand l'exécution se fait sur un Mac alors que ce même bouton prendra la forme de celui propre à Windows 95 quand l'exécution s'effectue sur celui-ci. D'autre part, une technique optionnelle permet de transformer les bytecodes en code natif qui est caché temporairement en mémoire pendant l'exécution ("Just-In-Time" compilers; JIT). La présence de cette technologie, qui peut être complètement transparente pour l'usager, peut accroître de façon significative la vitesse d'exécution de l'application. Retour

(2) Par ailleurs, la compagnie Sun va plus loin en développant des microprocesseurs dédiés au Java (Java chips) ce qui permet d'accroître sensiblement la performance des applications Java en éliminant le niveau d'abstraction du JVM. Retour

(3) Aussi Microsoft ne tarda-t-il pas à suivre l'exemple de son compétiteur en incluant sa propre version de fureteur "Java compatible" avec Windows 95, soit Explorer 3.0. Retour

(4) On désigne sous le nom de "applet" un programme Java qui s'exécute dans le contexte d'une page Web HTML. Le JRE soumet les bytecodes d'un applet à une série de tests pour s'assurer que celui-ci ne pose pas de problème de sécurité pour le client qui l'a téléchargé. Ainsi le vérificateur bytecode du JRE empêchera l'exécution de l'applet s'il détecte que celui-ci effectuera une opération d'écriture sur le disque du client ou tentera d'autres actions potentiellement malveillantes. Retour