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 :
|
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 :
- Créer les dossiers et fichiers java correspondants aux
packages et aux classes
- Saisir le code dans les fichiers texte
- Compiler via la console (javac)
- En cas d'erreur, revenir à l'étape 2
- Exécuter le code compilé via la console (java)
- 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
|
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
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.