Sun Tech Days : Day 2 / Java 6, WS, EE 5

Deuxième journée, ou plutot première car en fait la journée d’hier était « spéciale Tchéquie » du fait que le team NetBeans soit tchèque en majorité (ce qui explique aussi qu’hier les confs étaient en tchéque et aujourd’hui en angalis).

Petit CR:

Java 6 :
Java SE 6 « Mustang » pour décembre, SE 7 « Dolphin » pour 2008
Quoit de neuf à part l’optimisation de Swing ?
– Compiler API : on a maintenant une API pour la compilation, fini tools.jar bienvenue au package javax.compiler.* et la classe Compiler
– DiskSpace : nouvelles méthodes pour File : getFreeSpace() et getTotalSpace() (pour un dir)
– javac : il est possible maintenant d’écrire -cp ../lib/* (c’est pas trop tôt) fini les classpath qui n’en finisse pas
– WebServices : ajoute des APIS JAX-WS 2.0 et JAXB 2.0, avec les annotations pour les services Web
– script : package javax.script intégrant Rhino (Mozilla) mais on peut utiliser n’importe quel un autre langage de script en utilisant le system des plugin
– GUI : java.awt.Desktop pour lancer le browser par défaut, le mail client par defaut, ou encore appeler la panneau de recherche de fichier ou d’impression. La gestion des TrayItem avec SystemTray et TrayIcon

GUI Makeover :
Demo des capacités de Swing en terme de personnalisation d’interface, sur un exemple de chat client

que l’on transforme au look iChat d’Apple. On peut intégrer des effets 3D (reflexion,…), à noter la StackLayout qui permet de retrouver un principe de layer pour superposer des couches graphiques. On voit dans cette démo le réel avantage de Swing sur SWT, la modification des composants existants n’est pas simple mais possible en utilisant les méthodes de type setXXXUI() qui permettent de personnaliser tous les composants.
A noter aussi la notion de « drop mode » (INSERT, …) dans l’API DnD (nouveauté v6), l’utilisation des AlphaComposite et des gradients pour les effets 3D.
Par ailleurs on retrouve comme avec Eclipse : le spashScreen et le preload de classes et d’images.

JAX-WS & WSIT :
JAX-WS, c’est l’API d’abstraction des services Web, ça inclue les annotations (@WebService et @WebMethod). C’est indépendant du protocole, du transport et de l’encoding. En gros avec cette API on peut faire avec le même code du RESTful ou du SOAP sur HTTP. L’API sera inclue dans Java6 et EE 5.

WSIT (prononcez whiz-it) pour Web Services Interoperability Technology (projet Tango), c’est en gros tous ce que le développeur a pas à s’intéresser, regroupé en une appellation et un ensemble d’API et d’implémentations. Ca regroupe les fameuses WS-I spécifications, et comme le disait trés justement Didier, tous ça c’est l’affaire des éditeurs qui doivent se mettre d’accord entre eux et assurer l’intéropérabilité.
Ce qu’il faut retenir c’est que c’est basé sur WS-I BP 1.1 (et compatible avec la version 1.0).
Objectifs WSIT : optimisation, securité, « reliability » (on dira fiailité en français), atomic transaction (même API que pour les EJB), policy (pour la configuration)
L’objectif de WSIT est l’interoperabilité avec WCF (Windows Communication Framework), Sun et Microsoft travaillent ensemble pour que leurs API respectives soient bel et bien intéropérables. Aujourd’hui 95% des tests d’interopérabilité sont OK.
http://wsit.dev.java.net/

Pour créer un services Web 2 approches possibles :
– via le WSDL
– via un POJO en utilisant les annotations.

A noter le wsimport tool qui permet de générer un service Web

EJB 3.0 :
Franchement j’ai rien appris, EJB 3.0 c’est Hibernate avec des annotations.
Je suis pas resté pour JPA (Java Persistence API) fallait que j’y aille, j’ai raté aussi le discours sur Java en opensource et les licences associées.