Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique H 3 088 − 1
LANGAGE JAVA ________________________________________________________________________________________________________________________
// dŽplacer un point
Java fait partie de la famille des langages orientés objet qui public void moveTo(int nx, int ny) {
regroupe Eiffel, C++, SmallTalk, Clos et quelques autres dont Ada
qui intègre à présent certains concepts de l’orienté objet. Sa syntaxe x = nx ;
est proche de celle de C++ [6] mais l’analogie avec C++ ne doit pas y = ny ;
être faite trop rapidement. Sur le fond, la parenté est bien plus
grande avec SmallTalk [9]. Être orienté objet signifie qu’en dehors }
des types de base prédéfinis tels que les nombres ou les caractères, }
tout est objet. Les programmes sont constitués par assemblages
des composants logiciels que sont les objets. L’objet est la réunion Figure 1 – Une classe Point
dans une même entité d’une structure de donnée et des algorithmes
permettant de manipuler cette structure de donnée. Cette idée
s’oppose à celle de la programmation conventionnelle où données Les objets : création et référence.
et traitements sont séparés. L’objet prolonge la célèbre équation de
N. Wirth [13] Program = Data Structures + Algorithms. L’objet se dis- Un objet pour exister doit être créé à partir de sa classe. La créa-
tingue du paquetage [3] de la programmation modulaire par l’outil tion se fait à l’aide mot clef new suivi du nom de la classe et d’une
de sa déclaration, la classe, et par la manière d’exécuter les pro- paire de parenthèses. Ainsi l’expression new Point() a comme
grammes. Enfin, il s’en distingue par le concept d’héritage qui per- valeur une référence sur un objet créé de la classe Point. Notons,
met de créer des objets par spécialisation du modèle d’autres que comme en Eiffel [15], la notion de pointeur n’existe pas en Java,
objets. elle est remplacée par celle équivalente de référence. Notons
également qu’il n’est pas possible d’effectuer d’opération sur les
références comme nous pourrions le faire sur des pointeurs en C ou
en C++. Ces opérations sont une source bien connue de bogues. En
1.1 Caractéristiques Java, comme en C++, et contrairement à Smalltalk, les types de base
tels que les nombres, les caractères ou les booléens ne sont pas
considérés comme des objets à part entière. Ils possèdent une
sémantique par valeur et non par référence : c’est une copie des
Les classes. types de base qui est passée comme argument des envois de mes-
Une classe est le type d’un objet. Tout objet appartient à une sages, et non une référence.
classe, on dit qu’il est instance de cette classe. La figure 1 donne la Les variables.
déclaration d’une classe Point décrivant un point comme ayant Les variables doivent être déclarées avec leur type avant toute
deux coordonnées x et y de type entier et connaissant une procé- utilisation. Une variable ayant pour type une classe est destinée à
dure moveTo(nx,ny) permettant de déplacer le point. De telles pro- contenir une référence sur les objets de cette classe. Initialement,
cédures ou fonctions décrites dans la classe sont appelées des elle contient la référence null qui ne référence aucun objet. Ainsi,
méthodes tandis que les données décrites dans la classe sont appe- on pourrait écrire :
lées des attributs, des champs ou encore des variables d’instance.
Les méthodes et les attributs sont communs à toutes les instances, Point p ; // la variable p contient la rŽfŽrence null
tandis que chaque objet possède ses propres valeurs d’attributs. p = new Point() ; // p contient une rŽfŽrence sur un Point crŽŽ
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
H 3 088 − 2 © Techniques de l’Ingénieur, traité Informatique
_______________________________________________________________________________________________________________________ LANGAGE JAVA
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique H 3 088 − 3
LANGAGE JAVA ________________________________________________________________________________________________________________________
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
H 3 088 − 4 © Techniques de l’Ingénieur, traité Informatique
_______________________________________________________________________________________________________________________ LANGAGE JAVA
public class Point implements Mobile { Par exemple, avec la déclaration de la figure 2, seules les métho-
des de la classe Point peuvent utiliser nommément les attributs x
private int x,y ; // les coordonnŽes du point et y alors qu’un message moveTo(nx,ny) peut être envoyé par
n’importe quel objet.
...
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique H 3 088 − 5
LANGAGE JAVA ________________________________________________________________________________________________________________________
writeText() ; Thread t ;
} t.start() ;
} }
La généricité.
toire. Ces classes doivent bien entendu former un tout à peu près Une classe générique est une classe paramétrée par une ou plu-
autosuffisant. De fait, le nom complet d’une classe est composé du sieurs autre(s) classe(s). L’exemple le plus commun pourrait être
nom du paquetage, suivi d’un point et du nom de la classe. Le nom Stack[T] décrivant des piles d’objets de type T où T paramètre
complet n’est utilisé que pour désigner les classes définies dans un générique n’est pas spécifié. En effet, les opérations sur une pile
autre paquetage que celui où elles sont employées. Cependant, ne dépendent pas du type des objets de la pile. Il est ensuite
grâce à des déclarations import comme celle de la figure 3, il est possible d’utiliser Stack[Point] pour une pile de points ou
possible d’indiquer les paquetages dans lesquels le compilateur doit Stack[FloatNumber] pour une pile de nombres flottants. Java ne
rechercher une classe utilisée et non définie localement. propose pas les types génériques.
Les exceptions.
Structures de contrôle et expressions.
Pour gérer les erreurs et les situations exceptionnelles, Java
Les structures de contrôle de Java, conditionnelles, boucles, etc., propose un mécanisme d’exception inspiré de C++. La structure de
sont celles du C ANSI. Les opérateurs sont aussi ceux du C ANSI, les contrôle try permet de lancer l’exécution d’un bloc d’instructions
trois opérateurs concernant les pointeurs, i.e. ->, *, et &, en moins et tout en proposant des traitements d’exceptions dans des blocs
deux opérateurs >>> et instanceof(C) en plus. Signalons pour les catch suivant le bloc try. L’exécution du bloc d’instructions peut
programmeurs habitués à C que la sémantique des opérateurs déclencher une exception explicite à l’aide d’une instruction throw.
infixés et & est modifiée dans le cas où les opérandes des données Le programme est alors interrompu et l’exception, qui est un objet
sont de type boolean. particulier, est propagée. Les traitements d’exceptions vérifient s’ils
ont prévu un traitement de ce type d’exception. Si oui, le traitement
Les processus légers.
du bloc catch correspondant est exécuté. La structure try peut
Java propose la notion très intéressante de thread, c’est-à-dire de également comprendre un bloc d’instructions, mot clef finally,
processus légers. Les processus légers sont des flots de contrôle qui sera exécuté qu’il y ait ou non une exception de déclenchée. La
distincts qui s’exécutent en parallèle dans un même programme. Ils programmation et la gestion des situations exceptionnelles par les
partagent leurs données. Java propose des outils de synchronisa- exceptions sont maintenant bien connues.
tion de type wait(), la thread s’endort, et notify() qui réveille une La machine virtuelle.
thread endormie. Enfin des outils d’exclusion mutuelle, mot clef
synchronized, permettent de poser des verrous sur un objet pour Le résultat de la compilation d’un programme Java est un code
en interdire l’accès à d’autres threads. L’exécution concurrente des abstrait, le bytecode, conçu pour un processeur abstrait [14]. Pour
flots de contrôle est réalisée en fonction des niveaux de priorité des exécuter ce bytecode, il faut un programme spécialisé, la machine
threads que le programmeur peut fixer. Les threads les plus priori- virtuelle, qui émule le processeur abstrait. Ainsi un programme Java
taires sont exécutées prioritairement jusqu’à ce qu’elles décident de est indépendant de la plate-forme, de l’architecture et du système
passer la main à l’aide d’une instruction wait() ou de l’appel de la d’exploitation, dès lors qu’il existe une machine virtuelle sur cette
méthode de classe Thread.yield(). C’est quand même au pro- plate-forme. Le défaut de ce genre de technique réside dans la perte
grammeur de gérer la concurrence en cas de processus ayant des de performances due à l’émulation du processeur abstrait. Dans [5],
priorités distinctes. Dans le cas le plus courant de priorités identi- nous aborderons les problèmes de la portabilité réelle de Java et de
ques, il n’a en général pas à intervenir. l’impact de la technologie machine virtuelle sur les performances de
ce langage.
Le petit schéma que nous allons présenter montre l’utilisation des
Les applets.
interfaces pour la création d’une thread. Pour pouvoir créer une
thread, il faut implémenter l’interface Runnable (cf. figure 6). Implé- Les applets, appliquettes en français, sont des applications desti-
menter Runnable oblige juste à avoir une méthode run(). nées à être exécutées dans les navigateurs Web. Les principaux
navigateurs Web ont incorporé une machine virtuelle qui leur per-
Pour lancer une thread, il faut un objet d’une classe implémentant met d’exécuter le code compilé Java. Nous y reviendrons aux para-
Runnable, la classe MyThread (figure 7), et qui crée un objet de la graphes 2 et 3.
classe Thread en se donnant lui-même en paramètre à l’aide du mot
clef this qui désigne l’objet lui-même. En envoyant le message L’édition de lien dynamique.
start à l’objet de type Thread, celui-ci lance l’exécution de la La classe ClassLoader du paquetage fourni java.lang permet
méthode run() de l’instance de MyThread, dans un flot de contrôle de charger dynamiquement des classes. Ces classes peuvent même
séparé. être téléchargées à travers le réseau Internet si elles proviennent
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
H 3 088 − 6 © Techniques de l’Ingénieur, traité Informatique
_______________________________________________________________________________________________________________________ LANGAGE JAVA
d’un serveur accédé par le Web. Java propose donc, et c’est relative- sion. Enfin le paquetage java.text permet le formatage des dates,
ment unique, des outils de chargements et d’éditions de lien dyna- des heures et des nombres suivant les conventions de chaque pays.
miques. Les navigateurs Web se servent de la classe ClassLoader Java utilise le standard Unicode établi par le Unicode Consortium
pour réaliser des téléchargements de classes sécurisées (cf. § 3). pour le codage des caractères. Ce codage est réputé pourvoir sup-
porter l’échange, le traitement et l’affichage de textes écrits dans dif-
férentes langues.
1.2 Conclusions
2.3 Le paquetage java.applet
Java est un langage plaisant qui a fait le choix de la sécurité plutôt
que celui des fonctionnalités à tout prix. On peut se féliciter de la
suppression des pointeurs remplacés par des références. Certains Le paquetage java.applet permet d’écrire des applets, ces
déplorent l’absence de pointeurs sur fonction comme il en existe en petits programmes que peuvent exécuter les navigateurs Web.
C++, mais la technologie objet permet sans aucun travail supplé- L’applet est une classe héritant de la classe java.applet.Applet.
mentaire de s’en passer, grâce à une conception véritablement C’est un programme d’interface dont l’affichage est réalisé à l’inté-
orientée objet : on peut réifier les traitements en en faisant des rieur du navigateur Web, au sein d’une page HTML. L’utilisateur
objets que l’on passe en paramètres [4], [15]. peut redéfinir des méthodes comme init(), initialisation des res-
On peut, en revanche, regretter l’absence d’héritage multiple. La sources de l’applet, ou paint(), dessin de l’interface de l’applet. Il
méthode des interfaces compense cela mais elle est beaucoup peut aussi définir simplement les réactions de l’interface aux actions
moins naturelle que l’héritage multiple. Si l’héritage multiple a la de l’utilisateur : gestion des événements liés aux mouvements et
C++ peut sembler regrettable en raison des confusions et des clicks de la souris, saisie au clavier, changement de focus, ouverture
bogues qu’il apporte, les concepteurs de Java auraient pu s’inspirer et fermeture des fenêtres, etc.
des travaux de B. Meyer sur Eiffel. L’ouvrage de Flanagan [8] montre la puissance et la concision de
Même si les aspects sécurité sont cruciaux pour l’utilisation atten- Java pour l’écriture de telles applications interactives. Ce qui est
due de Java, ils induisent des limitations qui peuvent sembler remarquable, c’est que si l’on ne cherche pas à trop personnaliser
excessives. Beaucoup de classes importantes des paquetages four- ses interfaces et si l’on accepte des présentations à peu près stan-
nis avec Java sont finalisées et donc non extensibles. De plus, le lan- dardisées, il est très rapide d’écrire des applets. La figure 8 montre
gage est très limité du point de vue de l’interopérabilité et des accès une applet permettant à l’utilisateur de dessiner librement avec la
aux systèmes d’exploitation. Cela est justifié par la prévision de souris. Elle est inspirée de [8] (chapitre 4, page 102). Pour être char-
machines entièrement Java. C’est aussi l’origine du procès entre gée dans un navigateur Web, il suffit de mettre les lignes suivantes
Microsoft et Sun Microsystems puisque la machine virtuelle du dans un fichier HTML :
navigateur Microsoft Explorer intègre des fonctionnalités d’accès au <APPLET code=ÓDessin.ClassÓ
système d’exploitation sous-jacent qui n’entrent pas dans la norme width=300
Java de Sun Microsystems [20]. height=200>
</APPLET>
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique H 3 088 − 7
LANGAGE JAVA ________________________________________________________________________________________________________________________
import java.applet.* ;
import java.awt.* ;
import java.awt.event.* ;
communication entre threads. Dans java.util.zip, on trouve les 2.6 Le paquetage java.rmi
outils nécessaires à la création et l’utilisation de fichiers compres-
sés.
et les paquetages associés
Avec le paquetage java.net, nous entrons dans un des aspects
Les paquetages java.rmi, java.rmi.dgc, java.rmi.registry
le plus intéressant et le plus original du langage Java : la program- et java.rmi.server sont dédiés à l’invocation de méthodes à dis-
mation en réseau. En matière de programmation du Web, il est pos- tance : Remote Method Invocation ou RMI. Il s’agit d’un mécanisme
sible d’analyser une information à partir d’une URL, c’est-à-dire à qui permet à un programme Java d’appeler certaines méthodes
partir de son adresse, pour en connaître le type et diverses autres d’un objet s’exécutant dans une autre machine virtuelle Java, le plus
informations. Il est également possible de télécharger cette URL. Ce souvent sur un serveur distant. L’établissement de la connexion et le
paquetage permet aussi d’établir assez simplement des communi- transfert des arguments et de la valeur de retour du message sont
cations entre machines distantes reliées par réseau à l’aide de soc- entièrement pris en charge par les différentes classes des paque-
kets via le protocole TCP/IP. tages RMI [10].
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
H 3 088 − 8 © Techniques de l’Ingénieur, traité Informatique
_______________________________________________________________________________________________________________________ LANGAGE JAVA
Le paquetage java.sql est dédié à JDBC, Java DataBase Le premier niveau de sécurité est celui du langage lui-même. Java
Connectivity, une interface standard d’accès aux bases de données a remplacé les pointeurs par des références. Il n’y a pas d’arithmé-
SQL. Elle permet de se connecter et d’interroger toute base de don- tique des références en Java similaire à l’arithmétique des pointeurs
nées relationnelle possédant un driver JDBC ou ODBC, puisque le de C ou de C++. Il est donc impossible au programmeur de manipu-
pont JDBC-ODBC est fourni d’origine. ler des adresses mémoires pour accéder à des zones non autorisées.
La possibilité de déclarer une classe ou des méthodes finales
interdit tout héritage de la classe et toute redéfinition des méthodes.
2.8 Le paquetage java.beans Cela interdit à un programmeur mal intentionné de détourner ces
classes et ces méthodes de leurs objectifs initiaux.
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique H 3 088 − 9
LANGAGE JAVA ________________________________________________________________________________________________________________________
tes dans d’autres langages étant interdits. Les navigateurs offrent arrière car l’on perd le réflexe d’envisager soi-même la gestion de la
souvent la possibilité d’inhiber les restrictions. mémoire.
Pour les applications Java qui ne sont pas des applets, il n’y a Un langage efficace et portable.
aucune restriction a priori. Il est possible alors de définir ses propres Le problème de l’efficacité réelle de Java sera abordé plus profon-
règles, en créant une sous-classe de la classe abstraite Security- dément dans [5]. La mise en œuvre de Java est présentée comme
Manager et en l’associant à l’application par la méthode de classe novatrice alors que le concept de machine virtuelle était déjà forma-
System.setSecurityManager. lisé par L. Nolin, un des pères de l’informatique française, en 1969
On peut imaginer bien d’autres restrictions, mais il faut garder à [19]. Il a d’ailleurs largement été utilisé dans le passé. Même s’il
l’esprit que c’est le navigateur, et lui seul, qui est libre de les mettre apporte des avantages non négligeables dans le domaine de la por-
en œuvre. En particulier, on ne connaît pas de navigateur restrei- tabilité en libérant l’exécutable du système d’exploitation et de
gnant la surconsommation de mémoire ou de CPU. l’architecture matérielle, il n’en reste pas moins que la perte
d’efficacité est sensible. Sans cette technique, il n’aurait pas été
envisageable de télécharger du code dans les navigateurs Web,
mais Java est en moyenne vingt fois plus lent qu’un code C++ équi-
3.5 Les applets signées valent [8]. On peut cependant arguer que, dans son domaine
d’application privilégié, c’est-à-dire les interfaces et la programma-
tion répartie, le problème des performances est moins crucial que
Les restrictions imposées aux applets sont, dans la pratique, sou- celui des fonctionnalités.
vent trop contraignantes. Depuis la version 1.1, Java introduit la Nous pouvons aussi mentionner les compilateurs JIT, compila-
notion d’applets signées pour lesquelles les restrictions sont levées. teurs Just In Time aussi appelés compilateurs à la volée que nous
Il s’agit d’applets téléchargées dont le code est accompagné d’un verrons dans [5].
certificat garantissant son origine et sécurisé par un système de
cryptage pour garantir la sûreté du transfert. Les facilités d’un langage de prototypage.
On sait l’attrait des langages interprétés (Lisp, Prolog, Basic...)
dans le processus de programmation : une erreur est corrigée
presqu’à la volée et il n’y a pas de temps de compilation et d’édition
3.6 Conclusions de lien. On peut donc reprendre immédiatement l’exécution et les
tests. En Java, les classes sont compilées mais il n’y a pas d’édition
de lien, cette dernière est dynamique. Si une erreur est détectée, on
Tout a été pensé et mis en œuvre pour assurer la sécurité des corrige la classe, on la recompile et on relance l’exécution. Java
environnements exécutant des applets téléchargées. Cependant, les combine donc les avantages des langages interprétés et des langa-
informaticiens sont bien placés pour savoir que le risque zéro ges compilés.
n’existe pas.
Un langage puissant, simple d’utilisation.
Java est un langage simple d’utilisation car son orientation objet
est réduite au plus simple et sa sémantique est également simple.
4. Mythes et réalités Mais c’est surtout les bibliothèques de classes fournies avec le lan-
gage et dont nous avons parlé qui font de Java un langage très
apprécié. Il est très simple d’écrire des interfaces. Il est très simple
d’écrire des applications réparties. Il est très simple d’attaquer Inter-
Cette présentation avait pour but de montrer l’essence de Java, ce net depuis Java. C’est une des raisons du succès de Java dans
qu’on peut en attendre et comment y accéder. Nous pouvons à pré- l’enseignement universitaire : des élèves débutants peuvent se per-
sent faire le point sur les différentes qualités que l’on prête à ce lan- mettre d’écrire des applications impressionnantes. Par ailleurs, les
gage. outils de développement dont nous parlons en Doc H 3 088 sont
Un langage orienté objet. assez complets et simples d’utilisation.
Java est un langage orienté objet, mais il ne propose pas tout ce Un langage sécurisé.
que l’on peut attendre d’un langage de ce type. En un sens, les puris- Nous avons vu au paragraphe 3 toutes les mesures qui ont été
tes de l’objet peuvent être déçus, mais le langage est suffisamment prises pour faire de Java un langage sécurisé protégé aussi bien
simple pour que le programmeur peu au fait de la technologie objet contre les maladresses des programmeurs que contre d’éventuelles
puisse s’y investir et maîtriser le langage rapidement. Seule les mauvaises intentions. Nous pensons que le but est atteint, notam-
notions de redéfinitions et de liaison dynamique des méthodes peu- ment par le contrôle du bytecode par la machine virtuelle, mais
vent demander un certain apprentissage. La syntaxe très proche de seule l’expérience nous le montrera. Il n’est pas certain que les pro-
celle de C ou de C++ est un autre facteur facilitant la prise en main moteurs de Java affichent les failles constatées ou connues du sys-
du langage. Mais attention, cette proximité de syntaxe ne traduit pas tème.
une proximité des sémantiques. Java est très éloigné de C++.
Un langage d’avenir.
Un langage plus propre. L’investissement de Sun Microsystems Inc., d’IBM et de Microsoft
Un aspect important pour les théoriciens de la programmation et a été colossal. Il est suivi de celui de beaucoup d’entreprises de
des langages est le toilettage du langage. Le langage est plus simple développement informatique. Les fonctionnalités de Java concer-
et plus propre que C++ avec, notamment, la suppression des poin- nant la programmation du Web sont telles qu’il devient l’outil incon-
teurs déjà préconisée par SmallTalk et Eiffel. De même, l’héritage tournable pour ce faire. C’est Java qui a donné l’interactivité réelle
simple apporte aussi une simplification de la sémantique du lan- aux applications dans les navigateurs Web. Sans Java, ces naviga-
gage même si celle-ci se paie par une complexification de la pro- teurs ne sont que de simples afficheurs d’informations et ce n’est
grammation. Le programmeur est libéré de la gestion de la mémoire pas suffisant pour des activités de gestion d’une entreprise via
grâce au ramasse-miettes qui le dispense des trop fameux problè- l’Intranet ou des activités de commerces électronique via Internet. Il
mes d’allocation et désallocation de mémoire propres aux langages est certain que l’on n’écrira pas tout en Java, car certaines applica-
de moins haut niveau. Le programmeur alloue en créant des objets tions ont besoin de beaucoup d’efficacité, mais le domaine d’appli-
mais il n’a jamais la charge de la récupération de la mémoire non cation de Java est très large et ses bibliothèques de classes lui
utilisée. Cela peut être déroutant pour les habitués de C et de C++ assurent un intérêt remarquable. Alors, oui ! Java est un langage
mais on s’y fait très bien au point de ne plus pouvoir revenir en d’avenir.
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
H 3 088 − 10 © Techniques de l’Ingénieur, traité Informatique
P
O
U
Langage Java R
E
par Patrick BELLOT
N
Docteur d’État en informatique
Professeur à l’École nationale supérieure des Télécommunications
et Christophe MATIACHOFF
Docteur de l’université Pierre-et-Marie-Curie S
IBM Global Services-CGI Informatique, centre de Compétences Objet
A
Références bibliographiques V
[1] Java : market, opportunities, and trend. Zona
Research Inc (1997).
[8] FLANAGAN (D.). – Java in a nutshell. O’Reilly
International Thomson (1996).
[15] MEYER (B.). – Eiffel : The Language. 2e éd.
Prentice Hall (1992).
O
[2] ARON (P.) et PRADENC (H.). – La Java Card
débarque. Le Monde Informatique 739 (24
octobre 1997), 4.
[9] GOLDBERG (A.) et ROBSON (D.). – Smalltalk-
80 : The Language and its implementation.
Addison-Wesley (1983).
[16] MEYER (B.). – An Object-oriented environ-
ment : principles and application. Prentice
Hall (1994).
I
[3] BARNES (J.). – Programming in Ada 95.
Addison-Wesley (1995).
[10] HAROLD (E.R.). – Java Network Program-
ming. O’Reilly (1997).
[17] MEYER (B.). – Reusable software : the base
object-oriented component libraries. Pren-
R
[4] BELLOT (P.). – Conception et programmation [11] HOLMES (J.). – Object oriented compiler tice Hall (1994).
par les objets, le langage Eiffel. Soumis pour construction. Prentice Hall International
parution chez Eyrolles, 250 p., Paris (1997). (1995). [18] MORREY (B.) et HAMMOND (E.). – Java, por-
table avec certaines limites. Le Monde Infor-
[5] BELLOT (P.) et ROBINET (B.). – Conception de
logiciels et portabilité (H 3 288). Techniques
de l’Ingénieur, traité Informatique (1998).
[12] JAMES GOSLING (B.J.) et STEELE (G.). – The
JavaTM language specification. Addison-
Wesley, The Java Series (1996). [19]
matique 736 (3 octobre 1997), 26-27.
NOLIN (L.). – Formalisation des notions de
P
[6]
[7]
STROUSTRUP (B.). – The Design and Evolu-
tion of C++. Addison-Wesley (1994).
BURGER (C.). – Deuxième symposium inter-
[13]
[14]
JEANSEN (K.) et WIRTH (N.). – Pascal. Sprin-
ger-Verlag (1974).
LINDHOLM (T.) et YELLIN (F.). – The JavaTM [20]
machine et de programme. Gauthier-Villars
(1969).
SAINT-ÉLIE (L.). – Compatibilité Java : le dia-
L
national Java - 100 % Java, sinon rien ! Le
Monde Informatique 739 (24 octobre 1997), 4.
virtual machine. Addison-Wesley, The Java
Series (1996).
logue de sourd Sun-Microsoft. Le Monde
Informatique 739 (24 octobre 1997), 44-45. U
S
Outils de développement
D’après [1], le marché des outils de développement pour le langage Java En dehors de ces riches environnements de développement, il est possible
aura été dominé en 1997 principalement par quatre acteurs : Microsoft, de s’initier à Java sans bourse délier, avec le JDK, Java Development Kit de
Symantec, Sun et IBM. Ils représentent à eux seuls près de 80 % des revenus Sun Microsystems Inc., qui est téléchargeable à partir de
estimés de ce marché. En 1998, Borland devrait les rejoindre. Ils proposent les
http://java.sun.com/products/jdk.
environnements de développement graphiques suivants :
— Microsoft Visual J++, URL : Le JDK contient le minimum nécessaire à la programmation en Java :
http://www.microsoft.com/visualj ;
— les différents paquetages de Java ;
— Symantec Visual Café for Java, URL :
— le compilateur Java en ligne, javac ;
http://www.symantec.com/domain/cafe/deved ;
— Sun Java Workshop, URL : — la machine virtuelle et son interpréteur, java ;
http://www.sun.com/workshop/java ; — le visualisateur d’applet, permettant d’exécuter des applets sans utiliser
— IBM VisualAge for Java, URL : de navigateur Web, appletviewer ;
http://www.software.ibm.com/ad/vajava ; — le débogueur Java, jdb ;
— Borland JBuilder, URL : — le désassembleur de classes compilées, javap ;
http://www.borland.com/jbuilder. — le générateur de documentation qui suppose une certaine discipline
dans l’écriture des commentaires, javadoc ;
Une comparaison de ces environnements peut être consultée à l’adresse
Web : — des outils pour RMI ou la création de signatures d’applet ;
http://www.javaworld.com/javaworld/jw-11-jvtools.html. — bien d’autres outils : archiveurs, pour les nouvelles versions, etc.
Le choix des utilisateurs figure dans : On trouvera aussi bien d’autres paquetages permettant de réaliser des fonc-
http://www.developer.com/news/userschoice/111297_ide.html. tions importantes : JavaHelp pour la création de documentation en ligne,
JavaBlend pour l’écriture d’application accédant aux bases de données, Java-
Enfin, une liste très complète de tous les environnements de développe- Mail pour accéder au courrier électronique, Java Electronic Commerce Fra-
ment pour Java est tenue à jour dans : mework pour la programmation d’outils de commerce électronique, JavaIDL
http://www.javaworld.com/javaworld/tools/jw-tools-ide.html. pour interopérer avec CORBA, etc.