vendredi 19 décembre 2008

Veille technologique semaine 51

Pour cette semaine 51, je vous propose les articles suivants :
  • c'est la saison des prévisions pour 2009 et le JDK 7. Il est reporté début 2010 avec une réduction des évolutions. Certaines ne sont pas encore prêtes.
  • La conférence Devoxx 2008 en Belgique a permis d'avoir des précisons sur le JDK 7.
  • Un résumé, jour par jour, des conférences Devoxx 2008.
  • Un article sur une présentation de Devoxx au sujet des estimations et des engagements dans le développement du logiciel.
  • Ensuite, deux articles au sujets des composants logiciels. Un premier qui explique l'intérêt de la modélisation UML2 et qui propose le concept de composant
  • et un exemple de modèle de composants de l'industrie : SCA (Services Component Architecture) proposé par IBM et actuellement normalisé chez OASIS qui a en charge des spécifications. Une implémentation open sources est proposée par le groupe Apache avec TUSCANY.
  • La société Excelsior qui sort la version 6.4 de son compilateur Java. Cette version propose une gestion de la propriété intellectuelle du code Java avec un maquillage complet du binaire.
  • L'article suivant rappel, pour ceux qui font des IHM avec Swing, que le thread de l'IHM (EDT : Event Dispatcher Thread) est le seul thread autorisé à manipuler un JavaBean Swing. C'est une règle qu'il faut respecter à 100% sinon les disfonctionnement arrive très vite (dead lock, comportement non conforme ou non prévue, ...). Swing n'est pas thread safe, il faut en tenir compte.
  • Sortie de l'update 11 du JDK 6, avec son lot de bugs corrigés.

Bonne lecture.



Year in Review: What to expect in Java SE 7
An overview of features in and out of the next Java specification. The current target for Java SE 7 is early 2010. We can expect a platform JSR to arrive in the first quarter of 2009.
  • Better dependency management
  • Project Jigsaw and the 'module' keyword
  • (More) NIO APIs
  • Tackling the time dimension
  • Parallel processing
  • Better precision through annotations
  • Simplifying Swing
  • Java Management Extensions (JMX) updates
  • Language changes
  • Dynamic-language support
  • Java SE 7 and the future of Java


From Devoxx: JavaFX on show, JDK 7 News !
Closing out a busy week here at Devoxx, the release of JavaFX and JDK 7 news have been the talk of the town !



Java 7 Update from Mark Reinhold at Devoxx
This is a summary of Mark Reinhold's Java 7 update given at Devoxx, with a few comments from myself. Mark described his presentation as a provisional plan and not binding. The changes in Java 7 will come from Sun and others.


Devoxx 2008 : Bien plus que Java. En effet.

Devoxx, comme vous le savez, c'est le nouveau nom donné à Javapolis. Et ce nom permet bien plus de liberté qu'auparavant.

Avant, Javapolis oblige, tout tournait autour de Java.
Maintenant, avec Devoxx, les organisateurs peuvent se permettre d'étendre le spectre. Même si le focus est toujours principalement sur Java.




Devoxx : présentation sur les estimations du temps de dév
Estimation : Prediction is a very difficult task especially about future ones…"
Giovanni demande à l'assistance qui donne des estimations de temps de développement ? la majorité de la salle. Qui se fait négocier par son managment ces temps de développement ? Encore une fois pas mal de monde.

Il explique ensuite la différence entre "Estimation" et "Engagement".
L'estimation est la mesure objective du temps nécessaire pour faire une tâche. Cette estimation n'est donc pas négociable.
L'engagement représente le but à atteindre et donc la promesse. Cette promesse regroupe un niveau de qualité, un certain nombre d'itérations, bref c'est bien la promesse de ce que le client aura. L'estimation c'est le prix à payer.

Faut-il surestimer ou sous-estimer ?
A cette question, Giovanni répond que les développeurs sont trop optimises de 30%. Par sécurité il faut donc mieux ajouter un peu plus à une estimation initiale.
Cependant, l'effet inverse s'appelle la loi de Parkinson : le temps de travail temps à rejoindre le temps donné pour effectuer une tâche. Si tu me donnes 10 jours pour faire cette tâche, je vais tendre à remplir ces 10 jours, c'est humain.
Avoir trop de temps disponible entraine aussi le phénomène de procastination. On tend à remettre à demain des tâches.



Définir une architecture par composants avec UML2
Les limitations de la modélisation / programmation par objet sur la réutilisabilité et l'autonomie, ont renouvelé l'intérêt pour les composants. En effet, réutiliser une classe signifie souvent importer un ensemble de classes liées, mal identifié par l'utilisateur. Hériter d'une classe signifie créer une dépendance forte, qui sera excessivement sensible aux évolutions de la classe héritée. Les points d'utilisation, les modes d'assemblage, l'autonomie des éléments réutilisés, le contrat d'utilisation ne sont pas fournis par la programmation/modélisation objet.

La notion de composant a été un ajout majeur introduit dans le standard UML2. Le composant permet en effet d'isoler des parties de logiciel en unités autonomes, avec des points de connexion bien définis. Les notions de "structure interne" de classe, de port et de part sont des notions nouvellement introduites offrant des mécanismes utiles pour les architectures orientées composant. A travers ces mécanismes, UML2 apporte la modélisation par composant. Ces mécanismes d'assemblage de composants permettent de réaliser le vieux rêve du "lego logiciel", c'est à dire d'assembler des composants qui ne se connaissent pas obligatoirement, pour former un système englobant. Pour ceux qui ont connu l'enfer de l'intégration logicielle, ou pire encore l'intégration logiciel / matériel, ces mécanismes sont très prometteurs.



Introduction à SCA (Service Component Architecture)
SCA (Service Componant Architecture) est un ensemble de spécifications visant à simplifier la création et la composition de services (indépendamment de leur implémentation) dans le cadre d'Architectures Orientées Service (SOA). SCA propose donc un modèle de programmation pour la construction d'applications à base de composants suivant le paradigme SOA. Ce modèle se base notamment sur l'idée qu'un service de niveau N se construit par assemblage / agrégation / orchestration de services de niveau N-1 ou N (Et ce quelque soit la hiérarchisation choisie. Par exemple : Services organisationnels, Services métiers, Services techniques).

A ce titre, SCA fournit deux niveaux de modèle :

  • Un modèle d'implémentation : Construire des composants qui fournissent et utilisent des services
  • Un modèle d'assemblage : Construire une application métier à forte valeur ajoutée en liant entre eux un ensemble de composants.

Ainsi, SCA insiste sur une séparation forte entre l'implémentation des services et leur assemblage.

Le modèle SCA se veut agnostique vis-à-vis :
  • Des technologies d'implémentation des composants de service. Il inclut entre autre les technologies d'implémentation suivantes : Java, C++, BPEL, XQuery ou SQL.
  • Des technologies d'exposition et d'invocation des composants de services (même si WSDL et les interfaces java sont mis en avant).

SCA permet de décrire des services et leur assemblage indépendamment de toutes considérations techniques d'implémentation.


Excelsior JET
Accelerate, protect, and deploy your Java applications.
Excelsior JET is a compliant Java SE 6 technology implementation with an ahead-of-time (AOT) compiler and a deployment toolkit. Use it if you want to:
  • Speed up your Java applications without any source code changes or hardware upgrades
  • Protect your Java code from decompilers without compromising performance
  • Build compact, professional installers for your Java applications without dependency on the JRE

Excelsior JET 6.4 is the first release that introduces features designed specifically for IP protection enhancement.



Swing threading and the event-dispatch thread
The evolution and pitfalls of Swing's single-threaded event model.
To ensure your Swing components are accessed correctly you should always create the entire UI in the event-dispatch thread, as shown here:

Runnable runner = new Runnable() {
public void run() {
// ...create UI here...
}
}

EventQueue.invokeLater(runner);

Moving your initialization code to the event-dispatch thread is the only way to ensure that your Swing GUIs are thread safe. Yes, it will feel awkward at first, but progress usually does.




JavaTM SE 6 Update Release Notes Changes in 1.6.0_11


Aucun commentaire: