IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Guide du débutant Java et Java EE

Date de publication : 15/07/2009 , Date de mise à jour : 15/07/2009

Par Jawher Moussa (Accueil) (Blog)
 

Vous souhaitez apprendre Java ou vous avez déjà commencé mais vous vous sentez perdu dans la jungle des technologies, bibliothèques et autres frameworks du monde Java ? Vous souhaitez faire une application Web mais vous ne savez par quoi commencer : MVC, JSP, Servlet, Tomcat, etc ? Idem, vous souhaitez communiquer avec une base de données mais vous savez pas quoi utiliser de JDBC, Hibernate, JPA, etc. ? Si c'est le cas, cet article est pour vous.
Notez bien : cet article n'est pas un tutoriel pour l'apprentissage du langage Java ni d'aucune des technologies déjà ou qui seront citées. C'est une sorte de guide pour avoir une idée générale et/ou une vue d'ensemble de l'offre Java dansquelques domaines clés, et de là une liste de liens vers des ressources qui vous seront utiles par la suite.

            

I. Ce qu'est Java
I-A. Java le Langage
I-B. Java, la Plateforme
II. Avant tout, maitrisez le langage
II-A. Interfaces graphiques
II-B. public static
II-C. Conventions de nommage
II-D. Bibliothèque standard
II-D-1. Collections
II-D-2. Entrées/Sorties
II-D-3. XML
III. Javadoc
IV. JARs, WARs
V. Outillage
V-A. Editeur de texte et compilation en ligne de commandes
V-B. IDEs
VI. Ce qu'est JEE
VII. Les serveurs Java
VIII. Base de données
VIII-A. JDBC
VIII-B. ORMs
IX. Web
IX-A. MVC
IX-B. Servlets et JSP
IX-C. Frameworks
X. Spring


I. Ce qu'est Java

La création de Java a été initié par James Gosling dans Sun vers 1991 et la première version 1.0 a été publiée en 1995.


I-A. Java le Langage

Java, c'est d'abord un langage de programmation orienté objet qui ressemble beauccoup dans sa syntaxe à C, C++, Javascript, etc.

Il propose les types de données usuels, dont int pour représenter les entiers, String pour représenter les chaines de caractères, boolean pour les bolléens, etc.

Idem pour les structure de contrôle, on retrouve la boucle for (style C), le if/else, le while, etc.

Si vous avez déjà fait du C ou du C++, vous ne serez pas trop dépayasés

Par contre, la partie objets/classes de Java est plutôt spécifique à ce langage et différente du C++ par exemple.


I-B. Java, la Plateforme

Java est aussi une plateforme dont les points clés sont :

  • bytecode : Dans un langage comme le C ou le C++, un programme est transformé lors de la compilation vers un format dit natif, car exécutable directement sur le processeur. Un programme java lui est compilé vers un langage intermédiaire qui ne correspond à aucun processur réel (enfin, au départ) appelé bytecode. On peut voir le bytecode comme le langage natif exécutable par un processeur virtuel. Il en découle donc que le bytecode est portable dans la mesure où il ne dépend d'aucun processeur ou système physique réel. Mais il ne peut être exécuté telquel.
  • JVM : Java Virtual Machine. C'est un programme qui exécute le bytecode d'un programme java compilé. Pour qu'un code s'exécute il faut qu'il soit tranformé vers le code natif du processeur du système. C'est exactement ce que fait la JVM. Il en découle donc que la JVM est spécifique au système et processeur utilisé. On trouve donc une JVM pour Windows/x86, Linux/x86, Solaris/Sparc, etc.
  • Bibliothèque standard : Java définit et intègre d'office une bibliothèque standard qui offre des fonctionnalités de gestion des fichiers, communication réseau, manipulation des collections, threading, création d'interfaces garphiques et la liste est encore longue.
  • JRE : Java Runtime Environment. C'est la combinaison d'une machine virtuelle (JVM) et de la bibliothèque standard. C'est le minimum requis à installer sur un système pour pouvoir exécuter du code java (bytecode)
  • JDK : Java Development Kit. Combinaison du JRE et des outils permettant le dévelopepemnt en Java. Il s'agit principalement d'un compilateur (nommé javac) qui transforme les sources java en bytecode

II. Avant tout, maitrisez le langage

Voilà, tout est dans le titre. Prenez le temps qu'il faut pour assurer un minimum de maitrise du langage Java.

Java est un langage relativement simple, et les ressources dessus manquent pas :

warning Ne sautez pas directement à la création d'interfaces graphiques (avec Swing généralement) ou encore à attaquer une base de données voire encore à jouer avec la partie Web.

II-A. Interfaces graphiques

C'est un avis personnel bien sûr, tiré de ma propre expérience personnelle lors de mon apprentissage de Java, et de mes observations sur les forums et dans mon entourage.

J'ai donc remarqué cette tendance qu'on a quand on débute Java de vouloir créer des interfaces graphiques très tôt lors de l'apprentissage. C'est logique et a plus d'allure que d'afficher du texte dans une console j'en conviens.

Seulement,le codage des interfaces graphiques via Swing ou autre API implqiue plusieurs notions plutôt avancées (communication inter classes, classes anonymes, partage d'état, etc.) que vous ne maitrisez pas encore à ce stade de l'apprentissage.

Ca rendrait votre contact avec Java pénible et douleureux. Vous aurez à poser des questions mal-reçus sur les forums et si vous tenez le coup, vous résoudrez vos problèmes avec des solutions moches qui n'adhèrent pas à la philosophie objets et Java.


II-B. public static

Si vous vous retrouvez à déclarer pleins de champs (ou méthodes) comme "public static" dans vos classes, c'est que vous vous y prenez mal.

Ceci indique généralement un backgroud procudéral (pascal, C, etc.) et viole les préceptes de bases de la programmation orienté Objets, tel que l'encapsulation.

Il faut savoir qu'un champ statique sera partagé pour toutes les instances de la classe. C'est donc une sorte de variable globale version objet. La programmation objet prone plutôt de minimiser la visibilité/durée de vie/couplage des données.

Ce sujet mérite à lui seul un article complet et dépasse l'objectif de cet article.
Je vous conseillerais juste de garder ça en mémoire, et quand vous vous trouvés forcés de procéder de la sorte (public static) dans votre code, bien que ça marche et que ça résoud le problème, prenez le temps de vous documenter encore plus sur le langage Java (tutoriels, lecture de morceaux de code, etc.) et de revenir dessus plus tard.


II-C. Conventions de nommage

Que vous débutez la programmation avec Java ou que vous venez d'un autre langage, sachez que Java définit des règles plutôt strictes concernant le nommage des variables, méthodes, classes, etc.

La majorité du code Java qui circule dans la nature adhère à ces conventions. Que ces conventions vous paraissent logiques et acceptables ou moches et inadmissibles, sachez que le fait que tout le monde utilise les mêmes conventions facilite la lecture du code (il paraît qu'on passe plus de temps à lire le code qu'à en écrire). Ca permet d'un coup d'oeil de savoir que ceci est une variable ou un champ, ou plutôt un type.

TODO: links


II-D. Bibliothèque standard

La bibliothèque standard a été incluse dans la plateforme Java pour une raison : Vous implifier la vie :)

...


II-D-1. Collections


II-D-2. Entrées/Sorties


II-D-3. XML


III. Javadoc


IV. JARs, WARs


V. Outillage

Dans sa forme la plus simple, la rpogrammation avec Java nécessite un éditeur de texte et le JDK.

Le processus se déroule comme suit :

  1. Créer les dossiers et fichiers java correspondants aux packages et aux classes
  2. Saisir le code dans les fichiers texte
  3. Compiler via la console (javac)
  4. En cas d'erreur, revenir à l'étape 2
  5. Exécuter le code compilé via la console (java)
  6. Revenir à l'étape 1 ou 2
C'est très pénible comme processus de développement et personne ne l'utilise en pratique ou s'il a le choix.

Seulement, il vaut quand même procéder de la sorte quand on débute, non pas par méchanceté/stupidité/gouts pervers, mais pour :

  • Maitriser les outils de base du développement java, on sait jamais, vous en aurez peut être besoin sur une machine autre que la votre qui ne dispose que de ça (une intervention d'urgence chez un client par exemple)
  • Pour comprendre la notion de classpath
  • Pour savoir que c'est de votre code que viennent les erreurs (compilation ou exécution) et non pas de l'EDI que vous utilisez
info A propos du dernier point, beacoup de gens commencent directement par un EDI (Eclipse, Netbeans, etc.). Déjà que ça cache les détails de compilation/exécution, mais plus grave encore, quand un problème survient, et du fait qu'ils interagissent uniquement avec l'EDI, il arrive qu'ils ne savent plus si une erreur vient de leur code (une erreur de compilation ou d'exécution) ou de l'EDI qu'ils utilisent.
Je déplace régulièrement et plusieurs fois par semaine (pour ne pas dire jour) des messages postés dans le forum Eclipse et qui n'ont strictement rien à voir avec Eclipse, du genre "je n'arrive pas à me connecter à ma base de données depuis Eclipse" ou "Comment calculer la factorielle d'un nombre N sur Eclipse"

V-A. Editeur de texte et compilation en ligne de commandes


V-B. IDEs

Un EDI est une sorte de super éditeur de texte qui permet de :

  • Créer des projets, classes et packages via des assistants graphiques
  • Coloriation syntaxique du code
  • Auto-complétion : ne pas avoir à sasir au complet le nom d'une variable, méthode, etc.
  • Lancer la compilation depuis l'EDI, sansa avoir à apsser par javac en ligne de commandes. Parfois même ne pas avoir à lancer la compilation du tout, comme avec Eclipse par exemple qui compile le code chaque fois que vous l'enregistrez.
  • Exécuter un programme depuis l'EDI, sans avoir à passer par java en ligne de commandes.
  • Affichage des erreurs de compilation directement dans le code, au lieu d'avoir à lire le message généré par javac "telle erreur sur la ligne X du fichier Y" puis retrouver soi même l'empalcement.
  • etc. Les EDIs pèsent des dizaines de Mo (plus de 100Mo parfois), et c'est pas pour rien. J'arrête pas d'apprendre de nouvelles donctionnalités qui me facilitent la vie avec Eclipse.

VI. Ce qu'est JEE


VII. Les serveurs Java


VIII. Base de données


VIII-A. JDBC


VIII-B. ORMs


IX. Web


IX-A. MVC


IX-B. Servlets et JSP


IX-C. Frameworks


X. Spring



            

Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Jawher Moussa. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.