I. Qu'est-ce que Java ?▲
Java est un langage orienté objet développé initialement par la société Sun puis par Oracle. La syntaxe générale est très proche de celle du C, mais Java n'est pas une surcouche du C et sa syntaxe est beaucoup plus claire que celle du C++.
Les avantages de Java sont nombreux. En premier lieu, on peut citer sa gratuité, sa communauté, son écosystème et sa pérennité. Par ailleurs, le byte-code, qui assure à Java une portabilité complète vers de très nombreux systèmes. L'importance de l'API de base qui offre tous les services de base, notamment pour la construction des interfaces graphiques. Enfin, c'est l'adaptabilité de Java dans de nombreux domaines, autant pour le web que pour les systèmes embarqués.
Liste des systèmes disposant d'une implémentation de Java : Microsoft Windows, MacOS, Solaris, Linux, AIX, OS/2, IRIX, UnixWare, HP/UX, Digital Unix, AmigaOS, BeOS, OpenVMS, FreeBSD, SunOS, RiscOS. Java est également supporté par des familles de processeurs différents : Intel 32 et 64 bits, ARM…
Il existe plusieurs distributions de Java.
Java SE (Standard Edition ou « édition standard ») est la version de Java destinée aux ordinateurs de bureau, portables et certaines plateformes embarquées ou smartphones disposant des capacités de calcul, de mémoire et de stockage suffisantes pour la faire fonctionner. Cette version de Java définit une API standard présente à l'identique sur toutes les plateformes et permettant ainsi de créer des applications en ligne de commandes ou graphiques qui peuvent s'exécuter sur un grand nombre de machines. Lorsque nous parlerons de JDK, JVM, JRE dans cette FAQ, nous ferons principalement référence à Java SE.
Java ME (Micro Édition ou « édition micro ») est la version de Java destinée aux plateformes embarquées, cartes de paiement, consoles et lecteurs de disques, téléphones et autres périphériques disposant de capacités de calcul, de mémoire ou de stockage limitées. Cette plateforme définit un grand nombre de configurations et de profils pour prendre en compte un large panel d'appareils aux capacités très différentes les unes des autres.
Java EE (Enterprise Edition ou « édition entreprise ») est la version de Java destinée aux serveurs d'entreprises et serveurs web pour implémenter des services réseau et web. Elle inclut Java SE, mais dispose également d'API supplémentaires pour définir des mappings objet-relationnels, des architectures multicouches ou distribuées et des web services.
Android est une version spéciale de Java conçue par Google pour tourner sur sa propre machine virtuelle Dalvik tournant sur Linux sur des périphériques embarqués, téléphones, tablettes, montres, bracelets de course, etc. Google a repris une partie de l'API JavaSE et y a ajouté une API Android propre à la plateforme. Pratiquement tous les concepts abordés dans cette FAQ sont applicables à Android sous réserve du niveau de compatibilité entre la version du JDK mentionnée dans les QR et la version du SDK Android que vous utilisez.
II. Je débute▲
Il n'est pas facile de commencer à développer si on n'a jamais fait de programmation auparavant. C'est pourquoi il est très important de commencer avec de bonnes ressources et de ne pas se lancer à la va-vite dans le langage.
Pour les personnes connaissant déjà la programmation et les langages objet, l'apprentissage de Java ne devrait pas se révéler trop compliqué.
Vous pouvez commencer par lire l'un des tutoriels d'initiation à Java de la rubrique Java de Developpez.com. Je vous conseille d'en lire au moins un parmi ceux-là ou alors un des livres proposés :
- Programmation Java pour les enfants ;
- Penser en Java V2Â ;
- Développez en Java ;
- Support de cours sur le langage Java ;
- Corrections du livre « Programmation Java pour les enfants » ;
- Programmer en Java ;
- Java en concentré.
Il vous faudra bien évidemment un ou des outils pour développer en Java. Néanmoins pour commencer, je vous conseille d'utiliser un simple bloc-note et de compiler et d'exécuter vos programmes en ligne de commandes. Cela vous permettra de bien comprendre le fonctionnement de Java. Ensuite, vous pourrez bien sûr développer avec un EDI plus évolué : RAD et EDI Java.
Je vous conseille d'utiliser Eclipse, Netbeans ou IntelliJ pour développer vos applications Java. Tous ces outils sont multiplateformes, gratuits pour le plus grand usage et très puissants.
III. Je veux aller plus loin▲
Le langage Java peut être utilisé dans de nombreux domaines que je vous invite à découvrir en parcourant les différents articles Java de Developpez.com. Les chapitres suivants reprennent quelques thèmes que vous pourriez approfondir.
III-A. Comment développer des interfaces graphiques avec Java ?▲
Pour développer des interfaces graphiques en Java, plusieurs choix s'offrent à vous.
- AWT : c'est le premier framework graphique de Java. Il utilise les composants systèmes pour dessiner l'interface graphique, il est donc limité en composants.
- Swing : c'est le successeur de AWT. Tous les composants sont dessinés directement en Java. Ce qui fait qu'il est plus lent que AWT, mais cette différence est très faible dans les dernières versions de Java
- JavaFX : est un framework Java permettant de construire des RIA (Rich Internet Application) créé par Sun Microsystems et désormais publié par Oracle. Ce framework est destiné à remplacer AWT/Swing dans le futur en tant que bibliothèque graphique de Java SE (Standard Edition - la version client de la JVM pour ordinateurs de bureau). En effet, le développement officiel de AWT/Swing est arrêté.
- SWT : ce framework graphique n'est pas disponible avec l'API standard de Java. C'est l'équipe de développement d'Eclipse qui l'a créé. Comme AWT, il utilise directement les composants systèmes, mais émule les composants non disponibles en les dessinant lui -même.
Je vous conseille d'utiliser JavaFX. En effet ce framework est très simple d'utilisation et très complet. Vous pouvez aussi tester SWT pour vous faire une idée.
Voici de quoi débuter avec ces frameworks :
III-B. Comment gérer les bases de données avec Java ?▲
La première manière de gérer les bases de données est d'utiliser l'API JDBC qui est en standard avec Java. Ensuite, vous pouvez vous orienter vers les frameworks de mapping objet/relationnel tel que la spécification générale JPA via l'implémentation la plus répandue Hibernate ou encore utiliser un framework de persistance plus petit tel qu'iBatis.
Voici des ressources qui vous seront fort utiles pour votre apprentissage :
- Les tutoriels sur JDBCÂ ;
- Introduction à JDBC ;
- Les tutoriels sur JPAÂ ;
- Les tutoriels sur Hibernate ;
- Charger des données depuis une base MySQL avec JDBC en 5 minutes ;
- Gestion de session avancée avec Hibernate ;
- Apprendre à stocker en Blob ou OrdImage des images avec Hibernate via les UserType.
III-C. Comment faire de la programmation web avec Java ?▲
La programmation web avec Java est très riche. Tout d'abord, on trouve la distribution Java EE qui regroupe un grand nombre de spécifications JSR (CDI, JSP, Servlet, JAX-RS, JAX-WS, EJB, JSF…). On trouve ensuite de nombreux frameworks (Struts, Spring MVC, JSF, Wicket, GWT, Play Framework, Seam…).
Voici quelques ressources qui pourraient vous être utiles :
III-D. Comment développer pour un mobile avec Java ?▲
La distribution Java ME permet le développement sur mobile (ou plus généralement sur systèmes embarqués). Vous pouvez également vous orienter vers le développement Android.
Voici quelques ressources qui pourraient vous être utiles :
III-E. Comment faire de la 2D/3D en Java ?▲
En Java, vous pouvez aussi faire du dessin (graphisme) 2D et 3D. Vous pouvez utiliser différentes API pour faire ceci : Java2D, Java3D, JOGL, LWJGL et encore quelques autres moteurs graphiques. Voici quelques ressources qui vous aideront à démarrer avec le graphisme :
III-F. Quels sont les autres outils que je peux utiliser ?▲
Une fois passé le stade des premiers programmes, il sera utile de voir d'autres programmes utilitaires pour Java et de tester de nouveaux EDI. Découvrez les EDI les plus populaires sur notre page outils.
Pour la gestion de la construction de vos archives JAR, où vous pourriez aussi être amené à utiliser des utilitaires dédiés, vous pouvez vous diriger vers Ant, Maven, Ivy et Gradle.
Enfin, il faudra également penser à mettre en place des tests unitaires avec JUnit.
Voici quelques ressources qui pourraient vous être utiles :
IV. Comment tester mes connaissances ?▲
Faire une série d'exercices pour tester vos connaissances peut se révéler très intéressant. En effet, ceci vous permettra de voir si vous avez bien acquis les informations sur Java.
C'est pourquoi l'équipe Java vous propose une série de petits exercices sur le langage Java : Série d'exercices en Java.
Une autre façon de s'entraîner est de créer une petite application soi-même. Il ne faut pas viser trop gros sans quoi vous risqueriez de ne jamais arriver à bout de votre application. Voici quelques petits exemples d'applications à développer soi-même qui peuvent se révéler intéressants.
- Une calculatrice : pour commencer, développer une calculatrice se révèle assez simple, mais vous pouvez aussi aller assez loin suivant les fonctionnalités que vous lui ajoutez.
- Un petit jeu : vous pouvez aussi développer un petit jeu, par exemple un puissance 4 ou un jeu d'échecs. Vous n'avez pas encore besoin de travailler profondément sur le graphisme, mais vous pouvez déjà faire de belles choses. Si vous voulez aller un peu plus loin, vous pouvez vous lancer dans un jeu de la vie.
- Une bibliothèque : vous pouvez également développer une petite bibliothèque. Cela vous permettra d'aborder les bases de données ainsi que les formulaires.
Bonne chance !
V. J'ai tout lu, mais pas tout compris, où poser mes questions ?▲
Il est possible que vous n'ayez pas compris une notion de Java ou que vous ayez un problème pour implémenter quelque chose. La première chose à faire est de vérifier dans les tutoriels Java si vous ne trouvez pas la réponse. Ensuite, vous pouvez consulter les différentes FAQ de la rubrique.
- FAQ Général Java : pour tout ce qui concerne le langage en général et les notions principales de Java.
- FAQ Java GUIÂ : pour tout ce qui concerne les interfaces graphiques en Java.
- FAQ Java JavaFXÂ : pour tout ce qui concerne JavaFX.
- FAQ Java XMLÂ : pour tout ce qui concerne la manipulation de XML en Java.
- FAQ Java EEÂ : pour tout ce qui concerne Java EE.
- FAQ Java MEÂ : pour tout ce qui concerne Java ME.
- FAQ JDBC : pour tout ce qui concerne la manipulation des bases de données.
- FAQ Hibernate : pour tout ce qui concerne Hibernate.
- FAQ Struts : pour tout ce qui concerne le framework struts.
- FAQ Eclipse : pour tout ce qui concerne Eclipse.
- FAQ Netbeans : pour tout ce qui concerne Netbeans.
- FAQ IntelliJÂ : pour tout ce qui concerne IntelliJ.
- FAQ JCreator : pour tout ce qui concerne JCreator.
- FAQ Maven : pour tout ce qui concerne Maven.
- FAQ Tests : pour tout ce qui concerne les tests.
- FAQ JSFÂ : pour tout ce qui concerne JSF.
- FAQ Spring : pour tout ce qui concerne Spring.
Si votre réponse ne se trouve pas dans une de ces pages, vous pouvez poser votre question sur les forums Java.
- Général Java : pour toutes vos questions générales Java.
-
Et ses sous-forums :
- Langage : langage Java, syntaxe, POO, conventions ;
- API : forum sur les API standard et API complémentaires ;
- JDBCÂ : pour vos questions sur l'API JDBCÂ ;
- Persistance : pour toutes vos questions sur la gestion de la persistance en Java ;
- Spring : pour vos questions sur le framework Spring ;
- XMLÂ : pour vos questions sur la manipulation des fichiers XMLÂ ;
- Java ME : pour vos questions sur le développement pour mobiles.
- Interfaces graphiques en Java : pour toutes vos questions sur les interfaces graphiques en Java.
-
Et ses sous-forums :
- Developpement web avec Java : pour toutes vos questions sur la programmation web en Java.
- Serveurs d'applications pour Java/Java EEÂ : pour toutes vos questions sur les serveurs d'applications pour Java/Java EE.
- EDI/Outils pour Java : pour toutes vos questions sur les différents outils pour Java.
Lorsque vous posez une question, soyez toujours le plus précis possible et évitez les questions du type « Urgent problème db ». Faites aussi attention à poster dans le bon sous-forum. Plus votre question sera claire et plus il y aura de gens qui la liront et prendront la peine d'essayer d'y répondre.
Et voilà , j'espère que vous trouverez les réponses à vos questions.