Par Frédéric Mazué
Programmer en
Java avec Eclipse
Eclipse n’est pas qu’un simple éditeur,
excellent au demeurant. Il est bien plus que
cela. Cet outil s’est mû en un véritable
environnement de développement.
E clipse suscite beaucoup d'intérêt. Il est bien organisé, doté
d’une bonne ergonomie, et son architecture ouverte le rend
extensible à l'infini. Eclipse est construit autour de Java et permet
tout naturellement de coder en Java et d'être étendu avec Java.
Sous Eclipse, vous avez tout loisir d'écrire vos applications Java-
Swing habituelles. Mais Eclipse est plus intéressant que cela. Si
> Figure 2: Eclipse sous Linux et la librairie Motif.
vous avez eu l'occasion de l'essayer, vous avez forcément remar-
qué, même sur une machine ancienne, que l'interface répond
remarquablement pour du Java. Nous sommes très loin de la len- sants graphiques (widgets) de AWT sont relativement pauvres. Par
teur endémique de Swing. Swing a sans doute sa valeur et ses exemple, si AWT supporte le bouton poussoir, il ne supporte pas
qualités propres, mais les concepteurs d'Eclipse ont jugé bon de la table ou la liste arborescente. Alors que nous vivons à l'époque
développer une boîte à outils graphiques en remplacement de des interfaces utilisateurs toujours plus élaborées, ces limitations
Swing. Cette boîte à outils est baptisée SWT pour Standard Widget font tomber AWT en désuétude. De nos jours, personne n'envisage
Toolkit. SWT est une bibliothèque de bas niveau, ce qui dans le plus de développer avec un plus petit dénominateur commun de
contexte signifie que la couche Java est réduite au minimum, pour composants graphiques.
faire appel (presque) directement aux fonctionnalités natives de la Eclipse solutionne ce problème en redéfinissant une API implé-
plate-forme hôte. En ce sens SWT se rapproche beaucoup de AWT mentée sur toutes les plates-formes où tourne Java. Lorsqu'une
fourni par les JDK. En revanche la différence est que les compo- plate-forme ne propose pas un widget en natif, SWT l'émule. Ainsi
on conserve la portabilité, sans sacrifier à la richesse de la boîte à
outils et SWT reste globalement véloce. Il y a malgré tout un petit
revers à la médaille: le programmeur doit faire attention à la libé-
ration des ressources en programmant avec SWT. Certains puristes
Java acceptent mal ceci. Quant à nous, nous pensons que la
PRATIQUE
contrainte est vraiment minime en regard des possibilités offertes.
Des applications SWT autonomes
SWT a été porté sur Windows et UNIX, avec deux versions pour ce
dernier. Une version construite autour de l'inévitable librairie Motif
et une version construite autour de Gtk+. Comme le montrent les
figures 1 et 2, les développeurs de SWT ont fait du bon travail et
Eclipse se comporte à l'identique sous Windows et Linux. Ceci
nous donne évidemment l'idée d'écrire notre propre application
> Figure 1: Eclipse tournant sous Windows Java-SWT. En effet rien ne s'oppose à ce qu'une application utili-
sant SWT tourne de manière autonome en dehors d'Eclipse. Au
contraire, Eclipse est fait pour ça et est plus qu'un simple éditeur,
Java
NIVEAU : DÉBUTANT
c'est réellement un environnement de développement.
Nous supposons qu'une JDK de version supérieure ou égale à 1.3
est installée sur votre système. Nous supposons qu'Eclipse est lui
aussi installé, cela tombe sous le sens. Si besoin vous pouvez
64 télécharger Eclipse (un gros bébé de plus de 60 Mo) à
Programmez N°55 • JUILLET-AOUT 2003
[Link] ou mieux, l'installer à partir du Cd-Rom de
Programmez! N°53 qui vous propose un Eclipse pour Windows et
un Eclipse pour Linux-Motif. Si vous optez pour le téléchargement,
veillez à télécharger une archive 'SDK' qui contiendra tout ce qu'il
nous faut. Rien ne vous oblige à télécharger un Eclipse complet
pour chaque plate-forme. Si, par exemple, vous choisissez d'écrire
votre code uniquement sous Windows, vous vous limiterez à télé-
charger les librairies (runtime) SWT pour Linux. Cela suffira pour
faire tourner vos applications SWT sous Linux
Créer un projet
Depuis le menu 'File' choisissez New|Project, puis optez pour un
projet Java. Dans la fenêtre suivante baptisez votre projet. Par
exemple: DemoSWT. C'est une bonne idée d'accepter l'option par
défaut qui veut qu'Eclipse sauvegardera tout votre travail dans le
sous-répertoire 'workspace' de son répertoire d'installation. Vous
arrivez maintenant à une fenêtre extrêmement importante pour
notre propos et de titre 'Java Settings'. Cliquez sur l'onglet 'Libra- > Figure 4: Création d'une classe Java sous Eclipse.
ries'. Si tout est en ordre, vous devez voir apparaître dans la liste
arborescente la version de la JRE que vous utilisez et dont les comme ce qui est montré figure 4. Saisissez alors le code ci-
contre.
public class Hello {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Label label = new Label(shell, [Link]);
[Link] ("Hello_world avec Eclipse et Programmez!");
[Link]([Link]());
[Link]();
while(![Link]()) {
if (![Link]())
[Link]();
}
[Link]();
}
}
A ce stade vous allez voir qu’Eclipse souligne un nombre impor-
> Figure 3: Vous devez incorporer l'archive [Link] tant d'éléments du code. Ceci, parce qu'il manque les instructions
dans tout projet impliquant SWT. d'importation:
fichiers jar seront incorporés au projet. Vous devez maintenant
import [Link].*;
ajouter les librairies SWT. Pour cela, cliquez sur le bouton "Add
import [Link].*;
External JARs..." Vous devez alors aller pointer sur le fichier jar de
SWT, la question étant de savoir où il se trouve. Sauvegardez votre travail. Eclipse compile alors automatiquement
Eclipse est une architecture ouverte où tous les éléments se pré- le code.
sentent sous la forme de plugins. SWT, bien qu'à la base même
d'Eclipse, ne fait pas exception à la règle et est lui même un plu- A l'aide !
gin. En supposant que votre Eclipse soit installé dans le répertoire Le fait qu'Eclipse réagisse immédiatement quand quelque chose
C:\Eclipse, vous devez aller en: ne va pas dans votre source résulte du fait que l'environnement
C:\eclipse\plugins\[Link].win32_2.1.0\ws\win32
En faisant bien attention de ne pas confondre [Link] avec
[Link]. Dans le répertoire sus-mentionné se trouve une
archive jar nommée [Link]. Sélectionnez la. A ce stade, la fenêtre
"Java Settings" doit alors ressembler à la figure 3. Cliquez alors
sur le bouton "Finish". Votre premier projet SWT est créé :-)
Respecter la tradition
A-t-on jamais vu prise de contact avec un Toolkit sans programme
'Hello World' ? Non, et ce n'est pas encore pour aujourd'hui ;-)
Retournez dans le menu 'File' d'Eclipse et créez une classe cette
fois. Remplissez la boîte de dialogue de création de classe, > Figure 5: Ajoutez des emplacements Javadoc à votre projet. 65
Programmez N°55 • JUILLET-AOUT 2003
connaître l'emplacement de la librairie native de SWT et de son
archive jar Java. Pour lancer notre programme Hello nous pouvons
par exemple faire (en une seule ligne de commande et le package
de la classe à lancer étant dans le répertoire courant):
java -[Link]=C:\eclipse\plugins\[Link].win32_2.1.0
\os\win32\x86
-cp .;C:\eclipse\plugins\[Link].win32_2.1.0\ws\win32\[Link]
[Link]
Ceci est bien sûr assez lourd. Une solution est de déposer [Link]
dans le répertoire lib\ext de votre JRE et de déposer le fichier de
librairies natives (initialement contenu dans le répertoire os\win32
> Figure 6: Vous pouvez également inclure des sources d'origine étrangère. sus-mentionné) dans un endroit pointé par la variable d'environ-
nement PATH de votre système. Ceci est pratique, mais présente
fait un usage intensif de la réflexion de Java. Dans cet ordre un inconvénient: si vous mettez Eclipse à jour, vous devrez alors
d'idées Eclipse apporte des fonctionnalités d'aide et d'achève- mettre également à jour tous ces petits bricolages. Un moyen
ment de code vraiment efficaces. Pour faire apparaître la docu-
mentation Java relative à une classe SWT, placez le caret sur le
nom de la classe ou sur son nom d'instance et faites la combinai-
son de touches Shift-F2. La documentation apparaît alors dans le
navigateur. Pour invoquer à tout moment l'achèvement de code
tapez Ctrl-<Espace>.
Ceci fonctionne tellement bien qu'il serait dommage que cela soit
limité aux classes de SWT. Ce n'est en fait pas le cas. Nous pou-
vons, par exemple, appeler l'aide de la JDK de la même façon. Il
suffit pour cela d'un peu de configuration. Dans le volet 'package'
cliquez avec le bouton droit sur [Link] sous JRE System Library. Une
boîte de dialogue s'ouvre alors dans laquelle vous devez indiquer
où se situent les javadocs sur votre système (figure 5). Ceci fait,
l'aide sur les classes Java du JDK est disponible dans Eclipse. Dans
la boîte de dialogue vous pouvez encore ajouter des archives de
sources (figure 6). Moyennant quoi, vous pouvez naviguer dans
ces sources aussi facilement que si vous les aviez écrits.
Lancer l'application
Cliquez sur Run (menu Run)... Dans la boîte de dialogue qui surgit,
> Figure 7: Vous devez indiquez à la JVM où les librairies natives
choisissez 'Java Application', puis Hello. Vous devez à présent indi- de SWT sont localisées.
quer à Eclipse où sont situées les librairies qui contiennent le code
natif de SWT. En effet, l'archive [Link] que nous avons incorporée terme est de tout déposer dans un répertoire pointé par une
précédemment ne contient que du code Java. Pour cela, sous l'on- variable d'environnement. La mise à jour reste alors simple et la
glet argument, ajoutez un paramètre à l'attention de la JVM ligne de commande est notablement simplifiée. Par exemple:
java -cp .;%SWTPATH%[Link] -[Link]=%SWTPATH% [Link].
-[Link]=C:\eclipse\plugins\[Link].win32_2.1.0
[Link]
\os\win32\x86
comme montré en figure 7 Sous Linux maintenant. Les principe généraux restent les mêmes.
Sous Linux, cela peut être quelque chose comme: Trois choses à savoir :
• Peu importe que vous utilisiez Eclipse-Motif ou Eclipse-Gtk+.
PRATIQUE
-[Link]=/usr/local/eclipse/plugins/[Link].motif_2.1.0 Vous pouvez toujours lancer votre application avec "l'autre'
/os/linux/x86
Toolkit', pourvu que vous pointiez le(s) bon(s) jar(s) et les
Selon l'endroit où vous avez installé Eclipse. bonnes librairies natives. Soyez attentif. Celles-ci peuvent être
nombreuses (mais heureusement situées dans un seul répertoi-
Une application autonome re) alors qu'il n'y en a qu'une sous Windows.
Voyons maintenant comment une application peut tourner en • Pour Gtk+ il y a DEUX fichiers jar: [Link] et [Link] qui doivent
dehors d'Eclipse. Sous Windows tout d'abord: La JVM doit être pointés par la CLASSPATH.
• Eclipse-Motif vient avec sa propre librairie Motif ([Link].2.1).
Celle-ci dit doit être pointée par argument à la ligne de comman-
Java
NIVEAU : DÉBUTANT
de de la JVM, ou par la variable LD_LIBRAY_PATH en lieu et place
de la librairie Motif qui pourrait se trouver sur votre système. ■
Frédéric Mazué
fmazue@[Link]
66
Programmez N°55 • JUILLET-AOUT 2003