Vous trouverez ici quelques informations sur Java. Je viens (fin 02/2005 à fin 06/2005) d'apprendre ce langage grâce à une formation du Greta : Concepteur/Développeur UML/Java/J2EE.
Je m'y suis mis du fait d'un vieil intérêt, avec des hauts et des bas :
.jar
à télécharger... et un énorme fichier à installer ; et donc la JVM est gourmande en
mémoire : je n'utiliserais pas Java pour afficher une horloge sur mon bureau !Les bas datent de l'époque de mon premier PC, que j'utilise toujours : un Pentium II 300 MHz avec 6 Go de disque dur et jusqu'à il y a peu, seulement 64 Mo de mémoire. Avec cette configuration, les contraintes de Java sont rédhibitoires, un logiciel comme NetBeans met presque une minute pour démarrer...
Avec un PC moderne et la généralisation d'ADSL, ces contraintes sont moins génantes. Et il faut reconnaître que de nombreux langages dotés d'une bibliothèque conséquente ont les mêmes problèmes : Visual Basic et MFC (mais la probabilité qu'ils soient déjà installés avec un logiciel ou l'autre est assez grande), Perl, Python, etc.
Je m'y suis mis aussi parce que j'ai vu de nombreuses offres d'emploi demandant de connaître ce langage...
J'ai commencé par lire un livre qu'on m'a offert (j'aurai pas eu l'idée de le lire sinon...) : Java la tête la première édité par O'Reilly. Sous un aspect humoristique destiné à faire passer la pilule de l'aridité des concepts, il presente les bases du langage, les concepts de programmation objet (de façon très claire et agréable : de toutes les présentations de ce sujet difficile, c'est celle qui m'a parlé le plus, même si les nombreux livres et articles lus sur le sujet ont dû préparer le terrain) et une vue plus ou moins approfondie de la plupart des concepts importants de ce langage.
Parmi les points que j'ai apprécié, le livre simplifie certains concepts, mais n'hésite pas à indiquer que la réalité peut être plus complexe que ce qu'ils expliquent et ils donnent des éléments pour approfondir la question si on veut.
Grâce à ce livre, j'ai pu aborder la formation de façon sereine, et elle s'avère passionnante. Le monde Java est fort vaste, et on ne peut que l'effleurer, à nous de creuser certains concepts, selon nos attirances (Swing, Java2D, JavaBeans, J2ME), ou probablement selon les exigences de nos futurs employeurs.
Nous programmons nos exercices avec Eclipse (3.0.1), sur plateforme Linux (distribution Debian : SimplyMEPIS, bureau KDE), ce qui a l'avantage supplémentaire de rafraîchir mes connaissances Unix, de m'initier à Linux (spécificité de l'interface graphique), bref de travailler sur une plateforme alternative.
Eclipse est un outil superbe, avec quelques limites :
en 1024x768, la surface de travail est un peu étriqué.
Si on choisi une police système plus petite (pour avoir plus d'espace), les boutons
ont le bas de leur intitulé qui disparaît, effet qui, curieusement, se voit moins avec une police
plus grande... Je soupçonne que ce problème n'apparaît pas sous Windows...
Le rêve Java (Write once, run everywhere
) est parfois bousculé
par la réalité. J'ai trouvé des plug-ins intéressants mais qui visiblement
ne tournent que sous Windows, ou nécessitent quelques aménagements (sauver la config.
sous C:\xxx...).
L'éditeur est pas mal, mais moins puissant que Scintilla auquel je suis habitué. Là encore, je sais que ce composant a été adapté à Eclipse, mais uniquement sur le versant Windows. Et sur ma plateforme, je n'ai pas accès au drag'n'drop (glisser-déposer) que j'utilise beaucoup. Donc il n'est pas rare que je code alternativement avec SciTE (pour D'n'D, rechercher/remplacer, etc.) et Eclipse (pour sa correction syntaxique en temps réel, pour sa complétion automatique, sa compilation instantanée, etc.).
Un petit projet à réaliser en trinôme. On a répartit la tâche en trois parties :
Histoire de montrer ce que je sais déjà faire, je fournis cette application en téléchargement. Je ne donne que ma partie, d'une part parce que c'est ce que j'ai codé, d'autre part parce que la démo serait plus difficile à faire tourner avec un serveur Corba et une base de données (MySQL) où il faudrait créer la base et les tables.
Pour que l'application soit autonome, j'ai ajouté un accès aux données local, avec une classe de gestion de réservations, et un stockage par simple sérialisation de ladite classe. L'utilisation du découplage de l'interface et des données (présentation-modèle) et de l'abstraction de l'accès aux données ont permis de faire ça de façon transparente.
Vous pouvez donc télécharger le ficher ClubMedClient-1.0.zip. L'archive contient le fichier .jar et des scripts pour lancer l'application, soit depuis le répertoire bin généré par Eclipse, soit depuis le fichier .jar (suffixe j).
Le fichier .jar contient le source (répertoire src) mais je vais peut-être le déplacer dans l'archive .zip pour alléger le .jar, et les binaires répartis en trois packages : ClubMed (le code généré à partir de l'IDL), cmc (Club Med Client, le code d'accès aux données) et gui (l'interface graphique). Le répertoire images contient les icônes affichées sur les onglets (images trouvées sur le Net, dont deux extraites des icônes WinXP...).
À noter que je n'ai pas réussi à garder les packages dans un sous-répertoire bin dans
l'archive, malgré de nombreux essais et recherches sur le Net, y compris en précisant un Class-Path
dans le fichier Manifest. Il semblerait que les packages doivent impérativement se trouver à
la racine du .jar.
Le fichier repertoire.data, s'il est extrait avec le .jar, contient des données sérialisées, permettant de démarrer avec des réservations exemples.
Évidement, cette application n'a en fait aucun intérêt pratique, ce n'est qu'une démonstration. Mais un programmeur Java débutant y trouvera un certain nombre d'astuces Swing collectées sur Internet et réunies ici.
Je vais bientôt ajouter ici une analyse du code avec copies d'écran commentées.
J'ai écrit une petite comparaison de J2EE contre PHP. Elle n'a pas la prétention d'être exhaustive, mais tente d'éclairer certaines différences entre les deux langages.