Thématiques principales

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!

Aucun commentaire:

Enregistrer un commentaire