|
En deux journées denses, ce séminaire explicite de façon didactique l’ensemble des concepts et connaissances indispensables à tout informaticien en charge de gérer ou de participer à des projets Java.
Après avoir expliqué les principes de fonctionnement de Java et les principales caractéristiques du langage, le séminaire examine son utilisation principale : la réalisation d’applications serveur en utilisant Java EE (précédemment nommé J2EE). Sont ensuite étudiés le développement des applications Java, l’utilisation de Java sur le poste client, Java et le Web 2.0 ainsi que la mise en œuvre d’architectures orientées services (SOA) en Java.
Le séminaire répondra plus particulièrement aux questions suivantes :
- Que propose Java EE ? Comment se décompose une application Java EE ?
- Quel est le rôle des frameworks et comment faire son choix ?
- Quelles méthodes et quels outils choisir pour le développement d’applications Java ?
- Quelle plate-forme d’exploitation choisir ?
|
 |
Les concepts de base |
|
- L’origine de Java (rappels)
- Les objectifs des concepteurs de Java.
- Les débuts de Java : la notion d’applet. L’intégration de Java dans les navigateurs.
- Les composants de base : le langage, la machine virtuelle et les librairies.
- Les différentes utilisations de Java : de Java embarqué (JavaCard, J2ME) à Java sur le serveur (Java EE). Historique des versions de Java.
- Les conséquences du rachat de Sun par Oracle.
- La machine virtuelle Java (JVM)
- Principe de fonctionnement. Indépendance de Java par rapport aux systèmes d’exploitation. La portabilité des applications Java : quelles limites ?
- La structure des applications Java : les fichiers .class et .jar.
- Les performances des JVM. Les évolutions : du simple interpréteur aux compilateurs natifs, en passant par les compilateurs Just-In-Time et les compilateurs dynamiques tels que hotSpot.
- Les principaux fournisseurs de JVM. Les plates-formes supportées.
- Comment protéger le code des applications Java contre la décompilation ?
- Les principales caractéristiques de Java
- Langage orienté objet, conçu comme une synthèse de C++, Smalltalk et Objective C.
- Langage favorisant l’écriture d’applications robustes : principes de la gestion automatique de la mémoire (“Garbage collect”) et mécanisme de gestion des erreurs (les exceptions).
- Langage orienté réseau : librairies de communications, support du multitâche pour le développement d’applications serveurs.
- Java : langage “ouvert” ? Les processus de décision sur les évolutions de Java : le JCP (Java Community Process). Sun et le passage de Java en Open Source. L’utilisation intensive de Java par la communauté Open Source, les principaux acteurs : Apache, Red Hat/JBoss, Eclipse, Spring.
- Java et les autres langages
- Les principaux avantages et inconvénients de l’utilisation de Java.
- L’offre concurrente de Microsoft : .NET, C# et le CLR (Common Language Runtime).
- Les évolutions majeures du langage Java avec les versions 5 et 6. Les objectifs de la version 7.
- L’émergence des langages dynamiques utilisant la JVM : Groovy, JRuby, Jython, etc.
|
 |
Java EE : la principale utilisation de Java |
|
- Présentation de Java EE (précédemment nommé “J2EE”)
- Intérêts de Java EE pour le développement d’applications Intranet et Internet. Les services offerts par Java EE : socle d’exécution d’applications Web, gestion des transactions, sécurité, persistance, etc.
- Les principaux composants techniques de Java EE : servlets, JSP, EJB, JMS, JTS, etc.
- Les servlets et les JSP (Java Server Pages) : principes de fonctionnement. Comment bien utiliser les servlets et JSP : le modèle MVC. La notion de session. Les évolutions apportées par la spécification JSF (Java Server Faces). XSLT : une alternative aux JSP ?
- Les EJB (Entreprise Java Beans) : le modèle de composants Java distribués. Les principaux types d’EJB : session, entité et message. L’utilisation des EJB est-elle nécessaire ? Les précautions à prendre. Les apports de la spécification EJB 3. Les solutions alternatives : conteneurs légers, approche POJO, Spring, Hibernate.
- L’accès aux données
- L’accès aux bases de données relationnelles : la librairie JDBC. Principes de fonctionnement. Les différents types de drivers JDBC. Les performances. Le support de JDBC par les éditeurs de SGBDR.
- La spécification J2EE CA pour accéder aux autres sources de données, par exemple l’accès à CICS, l’accès aux progiciels (SAP, Oracle Applications, etc.). Java dans les progiciels.
- Les solutions pour gérer la persistance des objets Java en limitant l’écriture de code technique : Hibernate, EclipseLink, les EJB entités CMP, JDO, TopLink. La notion de mapping objet-relationnel. Les POJO. La spécification JPA (Java Persistence API).
- Les frameworks
- La majorité des développements Java côté serveur s’appuie sur des frameworks. Pourquoi utiliser un framework ? Comment choisir un framework ?
- Les principales notions mises en œuvre par les frameworks : le modèle MVC 2, l’inversion de contrôle et l’injection de dépendances, les notions de composants et de services.
- Les frameworks historiques : Struts et Spring. Les approches plus novatrices : Seam de JBoss, Tapestry, Wicket, Grails, Spring ROO.
- Les conteneurs “légers” en remplacement des serveurs Java EE. Le trio Tomcat, Spring et Hibernate peut-il être une alternative aux serveurs d’applications ? La notion de profil de Java EE 6. Présentation d’OSGi.
- La mise en exploitation des applications Java EE
- Le modèle de déploiement des applications Java EE : les formats WAR et EAR.
- L’administration des applications Java EE. Les outils et standards. La spécification JMX (Java Management eXtension). Les fonctionnalités de répartition de charge. Les outils pour mesurer les performances.
- Les principaux serveurs d’applications Java : IBM WebSphere, Oracle WebLogic Server, JBoss de Red Hat, Geronimo et Tomcat de la fondation Apache, Glassfish de Sun/ Oracle, JOnAS du consortium OW2, Jetty de la fondation Eclipse. Caractéristiques techniques, positionnement, parts de marché, forces et faiblesses de chaque offre. Les solutions complémentaires : portails et portlets, ESB, EAI, etc. Les conséquences des rachats de Sun et BEA par Oracle.
|
 |
Développement des
applications Java |
|
- Les environnements de développement Java
- Les fonctionnalités nécessaires : navigateurs de classes, éditeurs sophistiqués, travail en équipe, etc.
- L’outillage de base : le JDK. Le compilateur Javac et l’outil Javadoc.
- L’intégration des IDE dans un cycle de développement itératif. Lien avec les outils de modélisation UML.
- L’offre Open Source : Eclipse et NetBeans. Présentation des deux projets et des outils associés. L’impact de la fondation Eclipse et de ses projets sur l’offre des éditeurs.
- L’offre des éditeurs : Rational Application Developper d’IBM, JDeveloper et BEA WebLogic Workshop d’Oracle, Idea d'IntelliJ.
- La problématique du développement des servlets, JSP et EJB. L’utilisation des serveurs d’applications Java EE lors de la phase de développement.
- L’organisation des développements
- Comment organiser les équipes ? Quels outils choisir, notamment pour le travail en équipe et la gestion des versions ?
- Nécessité de la modélisation objet pour les applications Java ? L’intégration des outils de modélisation UML dans les IDE Java. L’approche MDA : le projet Eclipse EMF, etc.
- L’utilisation de méthodes dites agiles. Les outils utilisés par la communauté Open Source : ANT, Ivy, Maven, JUnit, CVS, Subversion, etc. Leur adoption en entreprise et leur intégration dans les IDE Java.
- Les nombreuses librairies utilisables par les développeurs. Librairies standard et librairies Open Source, par exemple JNI, RMI, JNDI, le projet POI d’Apache pour la manipulation de documents Word ou Excel, la librairie JFreeChart pour les graphiques, les projets JasperReports et Eclipse BIRT pour la génération de rapports, etc.
- Tester, analyser et optimiser les applications Java
- La gestion des tests unitaires avec JUnit. Les outils de simulation de charge pour les applications Web, notamment JMeter, The Grinder, LoadRunner.
- La machine virtuelle pour analyser dynamiquement l’exécution d’un programme Java. Les outils disponibles : JProbe, TPTP, VisualVM, etc. Quel intérêt, quelles limites ?
- Les outils pour analyser les problèmes d’utilisation de la mémoire. Eclipse MAT.
- Les outils pour analyser les problèmes d’utilisation de la mémoire.
- Analyser la qualité du code avec des outils comme Checkstyle, FindBugs et Pmd. Les outils pour faire des tests de couverture.
|
 |
Java et les nouvelles architectures applicatives |
|
- Java et les applications de type client riche
- Client lourd, client léger et client riche. Avantages et inconvénients de l’utilisation de Java dans ces contextes. Le déploiement d’applications clientes avec Java Web Start.
- Java et les interfaces graphiques : les librairies AWT, Swing et SWT. Forces et faiblesses, complémentarité. Les constructeurs d’interfaces graphiques.
- Les frameworks pour le développement de clients riches : le projet Eclipse RCP (Rich Client Platform) et le projet NetBeans RCP. Quels sont les apports de ces plates-formes ?
- Java sur les smartphones. Le projet Android de Google.
- Java et le Web 2.0
- Spécificités des clients riches Internet. Web 2.0, Ajax.
- Java et JavaScript : deux langages très différents.
- Pourquoi utiliser Java pour le développement d’applications Ajax ? Les librairies et outils disponibles : Google Web Toolkit (GWT), le projet RAP d’Eclipse, Echo2, Vaadin, etc.
- JavaFX : quel futur pour ce concurrent des offres d’Adobe (Flash/Air) et de Microsoft (Silverlight) ?
- Java et le Cloud Computing : Java sur les offres AppEngine de Google, EC2 d’Amazon. Positionnement d’Oracle/Sun et d’IBM sur le Cloud Computing. Le rachat de SpringSource par VMWare.
- Java, Web Services et SOA
- Les Web Services (SOAP et WSDL) et les architectures orientées services. L’alternative REST.
- L’intégration des Web Services dans les serveurs Java EE. Les API définies dans la spécification Java EE 5.0 : JAX-RPC, JAX-WS, JAXB, JAXR et SAAJ. Le projet AXIS d’Apache. Java et l’approche REST, JAX-RS.
- Les spécifications SCA (Service Component Architecture) et SDO (Service Data Objects).
- Java et les ESB (Enterprise Service Bus). Principe de fonctionnement d’un ESB. La spécification JBI.
|