Thématiques principales

Affichage des articles dont le libellé est JAX-WS. Afficher tous les articles
Affichage des articles dont le libellé est JAX-WS. Afficher tous les articles

mercredi 21 mars 2018

JEE : Petite Intro

Nous avons traité dans quelques articles précédents de l'évolution de Java en partant de la version 1.4 jusqu'à presque aujourd’hui et la version 9 [1]. Il faut savoir qu’au fils de ces années, cette évolution a été suivi par sa version Entreprise. Celle ci nommé sous l’acronyme de J2EE (Java 2 Enterprise Edition) quand java n’en était encore qu'à la version 1.4, elle porte maintenant l’acronyme simplifié JEE (Java Enterprise Edition).

Ainsi avant d’entrer dans les détails techniques propres à cette technologie, je vous propose de faire un petit tour d’horizon des fonctionnalités offertes par cette version entreprise de Java [2].

Java pour l’entreprise est apparue en 1998 et a rapidement intégré les premières API importante du noyau JEE que l’on connaît encore bien aujourd’hui avec les :Servlets, JSP, EJB, JTA, JNDI, JavaMail et JMS (on notera aussi des extension JDBC car JPA n’existait pas encore et JAF).

Rapidement se sont greffés des API très connus comme la JSTL, JAXP (parseur xml) et moins connu comme JCA (Java Connector Architecture et non Java Cryptography Architecture de la version standard de Java) et JAAS (Java Authentication and Authorization Services qui en fait a ete ajoute au java standard mais qui va beaucoup plus etre utile sur les application web et donc JEE).

C’est avec la version 1.4 que J2EE a commencé à se segmenter autour de trois axes. Les techno Web (WebServices, XML, Servlets, JSP, JSTL et les nouvelles JSF), les technos d’entreprises ( avec les fameux et redoutés EJB 2) et enfin les technos de management et de sécurité (JMX et JACC mais oublions le…. ^^)

L’arrivée de Java 5 a été un bouleversement pour l'écosystème java. Java EE 5 a fait de même. La partie Web s’est enrichie de StAX pour le streaming Xml et de SAOP tandis que la partie Entreprise a enfin vu naître les EJB 3 et JPA (issu des techno Hibernate).

JEE 6 a introduit la notion de WebProfile permettant une simplification de la certification JEE pour les conteneurs applicatif leger. On a ainsi pu avoir des conteneurs d’applications se focalisant essentiellement sur le seul respect du web profile. Le WebProfile ne contient par définition que les parties cœurs de JEE, c’est à dire la partie Web (JSP,JSTL, Servlet, etc) en excluant la partie Web service et la Partie Entreprise, c’est à dire les EJB (en version simplifié “Lite”) JPA, et JTA. La version 6 de JEE a aussi amener de nouvelles API: un enrichissement de la partie Web Service avec JAX-RS et JAXM des ajouts dans la partie entreprise comme CDI (issu des technos Spring), les interceptons (équivalent aux filtres de la partie servlet) [3,4]

En 2013 est ensuite venu JEE 7 avec l’ambition de renouveler les technologies permettant la communication entre le front et le back. La partie Web a donc intégré un parseur JSON, l’API WebSocket (tout ça pour HTML5) et l'amélioration des servlets en proposant un mécanisme asynchrone et donc des outils pour gérer la concurrence au sein de la partie Entreprise. A cela, cette composante de JEE s’est également doté d’un mécanisme de Batch permettant l'exécution de traitement spécifique, parallélisable, etc… Donc pas de grosse révolution mais une volonté clairement affichée de suivre le mouvement, a un moment ou le monde du dev à basculer dans le BigData, le cloud, les archi distribuées, (l’IA), etc… [5]

Enfin Java EE 8 ! Sortie en septembre dernier [6], elle repose sur le socle de Java 9. Dans la continuité de JEE 7 ou l’on sentait bien une volonté de tendre vers les technologies Cloud, BD et distribué, celle ci propose des évolutions technique de l’existant et quelque nouveauté comme la prise en charge de la nouvelle norme HTTP/2 ou l'ajout de l'API JSON-B. Certains diront que son évolution a manqué le coche cette année mais JEE 9 étant prévu cette année, JEE 8 doit plutôt être vu comme un temps de pause et une bonne prise d’appuis (avec le passage à java 9 et ses modules) avant un nouveau rebond (espérons le!)

Voila, un petit tour d’horizon historique sur JEE qui n’engage que moi qui attend de voir ce que nous donnera les futur évolutions. En attendant celle-ci, je vous proposerai donc de poursuivre cet article par une liste d’articles traitant du contenu technique de JEE par la pratique. Cet article en fait donc une petite introduction que, j'espère, vous aurez appréciée.

Référence 

[1] https://un-est-tout-et-tout-est-un.blogspot.fr/p/java.html
[2] https://en.wikipedia.org/wiki/Java_EE_version_history
[3] http://alexander.holbreich.org/javaee5-vs-javaee6/
[4] https://blog.xebia.fr/2012/02/01/java-ee-6-une-plateforme-simple-et-legere-spring-na-qua-bien-se-tenir/
[5] http://blog.ippon.fr/2013/06/18/java-ee-7-plus-quun-nouveau-numero-de-version/
[6] http://www.oracle.com/technetwork/java/javaee/tech/index.html

vendredi 13 octobre 2017

Evolution Java 6

Je reviens avec les évolutions de Java  au fil du temps. Aujourd'hui nous allons nous intéresser aux évolutions de Java 6.

L'integration d'interpreteurs de script est une évolution tres intéressante dans l'optique de rendre interopérable Java avec les langages de scripting courant et de plus pour le rendre en plus extensible et capable de largement s’étendre.

Basiquement la plateforme n’intègre par défaut qu'un interpreteur Javascript  mais est extensible avec les langages comme perl, python, ou plus connu dans ce contexte Groovy.

Pour accéder a l'API on passe par la classe javax.script.ScriptEngineManager, exemple:


1
2
3
4
5
6
7
8
9
int val1 = 5;
int val2 = 12;
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.getBindings(ScriptContext.ENGINE_SCOPE).put("val1", val1);
engine.getBindings(ScriptContext.ENGINE_SCOPE).put("val2", val2);
Object result = engine.eval(" var sum= function(val1,val2){return val1+val2;};"
    + "sum(val1,val2);");
System.out.println("Résultat : " + result);

Maintenant en dehors de l’intégration possible d’interpréteur de script, globalement les évolutions de la version 6 de Java consiste essentiellement en des mise a jour ou en l'ajout d'API, aucune modification sensible du langage n'est a noter.

Une API pour le compilateur java pour les adeptes des outils de la compilation java dans Java Cette API se trouve dans le package javax.tools. L'idée principale est de permettre la recompile plus facile de code java directement sans avoir a passer par une plateforme intermédiaire (bash, etc...).

Accès Base de données : une mise a jour de JDBC qui passe a la version 4.0. Je ne rentre pas dans le détail, ce sujet pourra faire l'objet d'un autre billet.

API XML et WebServices. Sur ce point Java 6 opère une grosse évolution. Avec la mise a jour de JAXB et de JAX-WS en 2.0 accompagné des annotations qui vont bien, il est plus simple de mettre en place de façon standard un Webservice. A noter l’intégration de StAX comme parseur XML dont le fonctionnement se situe entre DOM et SAX en gardant que les avantages ainsi que XML Digital-Signature API permettant la sécurisation des WebServices. Je ne rentrerai pas la non plus dans le détail de ces API. Ceci pourra faire l'objet d'un futur billet.

Mise a jour AWT et SWING.... bon... ok

L'API Collection a été enrichi avec de nouvelles interfaces sur les files et sur la navigation dans les Map et les Set avec les implémentations en standard qui vont bien.

Coté Réseau et IO, on notera un enrichissement de la classe java.net.NetworkAdress pour fournir plus d'info réseau (masque reseau, adresse Mac...) et également plus de capacité de gestion des droits sur la classe java.io.File.

java.utils.ServiceLoader : Cette classe n'y parait pas mais a mon sens, elle est extrêmement importante car a elle seule elle permet de conjuguer l'injection de dépendance et le processeur d'annotations AT RUNTIME, ce qui permet de rendre l'utilisation des annotations beaucoup plus efficace et surtout utile plutôt que de juste en faire une utilisation de générateur de fichier de configuration. Je reviendrais la dessus car lorsque l'on traitera OSGI on y trouvera beaucoup d’intérêt. Petit avant gout de la chose ici dans cet article.

Voila, cet article est déjà fini, pas que les évolutions du langage java soit peu significative dans cette version mais il s'agit surtout d'une version ou il a ete important de consolider et de mettre a jour l'existant afin de fournir des fonctionnalités stables et pérennes. Apres les changements fournis avec la Version 5 il fallait bien cela!