vendredi 3 juillet 2009

Veille technologique semaine 27

Pour le bulletin de la semaine 27, je vous propose les articles suivants :
  • la fondation eclipse publie le résultat d'une enquête sur l'utilisation d'eclipse.
  • les données, les comportements et l'objet : comment modéliser tout ça ?
  • les nouvelles fonctionnalités de C# 4.
  • JMX 2.0 était prévu pour le JDK 7, mais il est reporté pour plus tard.
  • quelques articles au sujet de l'injection de dépendance, avec la proposition du JSR 330 de Google et Spring.
  • présentation de Groovy à JavaOne 2009 : une des nouveautés intéressante est la délégation : @Delegate
  • toujours à JavaOne 2009, les annotations sur les types Java : JSR 308. Le @ReadOnly sera enfin disponible.

Bonne lecture.


Results of the Eclipse Community Survey
The Eclipse Foundation has conducted a survey in order to discover statistical details about its members: the OS used while developing, the primary database or the main deployment application server, and other information like the level of satisfaction using Eclipse.

Methodology
The survey was promoted through eclipse.org, Eclipse Foundation newsgroup, a blog post on PlanetEclipse and a few tweets during April 14 and May 15, 2009. The survey was addressed to English speaking users and it is biased towards Eclipse users, but any user could take the survey. 1,365 respondents completed the survey.


Objets, données, traitements et modélisation
Ah l'objet ! C'est super !
La réunification des données et des traitements, le tout en un. Fini les données d'un côté et les traitements de l'autre, « has been » tout ça, vive l'avènement de l'objet et de la modélisation objet. Moi, Monsieur, je pense Objet, je modélise Objet, je programme Objet, je dors Objet, je mange Objet, je m'habille Objet, je bois Objet, je… Euh, j'y vais un peu fort là !
On constate souvent ce genre de discours, sauf les quelques derniers mots peut être, et cette opposition qui est faite entre l'objet et le légendaire couple données-traitements. On fait d'ailleurs souvent ce raccourci pour définir ce qu'est un objet : « c'est comme une donnée avec les traitements en plus »
Sommes nous vraiment sûrs que cette explication ou cette opposition soient justes ? Maîtrisons-nous réellement la portée de ce raccourci : « c'est comme une donnée avec les traitements en plus » ? La fusion complète des données et des traitements est-elle réelle en objet ?
Essayons donc de voir quelle est la vraie nature de l'Objet et en quoi l'approche objet a apporté de la nouveauté dans nos pratiques d'informaticiens (et ciennes bien entendu !).


New features in C# 4.0
C# 4.0 The major theme for C# 4.0 is dynamic programming. Increasingly, objects are "dynamic" in the sense that their structure and behavior is not captured by a static type, or at least not one that the compiler knows about when compiling your program. Some examples include
  • a. objects from dynamic programming languages, such as Python or Ruby
  • b. COM objects accessed through IDispatch
  • c. ordinary .NET types accessed through reflection
  • d. objects with changing structure, such as HTML DOM objects

While C# remains a statically typed language, we aim to vastly improve the interaction with such objects. A secondary theme is co-evolution with Visual Basic. Going forward we will aim to maintain the individual character of each language, but at the same time important new features should be introduced in both languages at the same time. They should be differentiated more by style and feel than by feature set.


Explore C# 4's New Dynamic Types and Named/Optional Parameters
Leverage these new features in C# 4.0 to interoperate with new dynamic .NET languages, and simplify your code.


Que devient JMX 2 ?

JMX est une API standard Java permettant le monitoring et le management d'applications, elle est définie par la JSR-3 et étendue par la JSR-160 (Remote JMX). Depuis sa création en 1998, l'API a évoluée au fil des maintenance releases de sa JSR, incrémentant au passage sa version depuis 1.0 jusqu'à 1.4. Au départ disponible sous forme de librairie externe, JMX a finalement été intégré au JDK 5.0 puis mis à jour dans le JDK 6.0, fin 2006, pour s'aligner avec sa dernière version.

La prochaine évolution majeure de JMX est la version 2.0, cette fois-ci définie dans une nouvelle JSR, la JSR-255 (JMX 2.0). Actuellement en statut early draft review, il est dors et déjà possible de se rendre compte des chantiers prévus :

  • Des namespaces permettant de préfixer les noms des MBeans afin d'offrir une meilleure scalabilité lors que de très nombreux MBeans sont manipulés.
  • Le cascading permettant de fédérer un ensemble de MBeans situés sur des serveurs différents.
  • Définition de MBeans standards par annotations (@MBean, @ManagedAttribute et @ManagedOperation) et de leur injecter des ressources telles qu'un MBeanServer ou un ObjectName. Ce principe de définition de MBeans par annotations est calqué sur ce que Spring permet actuellement.
  • Un nouveau langage de requête permettant d'accéder facilement à tous les MBeans dont les propriétés se conforment à certains prédicats.
JMX 2.0 était initialement prévue pour être intégrée au prochain JDK, l'API avait fait son apparition au sein de la Javadoc des previews du JDK 7 mais restait absent de sa liste de features. Eamonn McManus a clarifié cette situation en annonçant sur son blog que JMX 2.0 ne serait pas intégré au JDK 7 tel qu'initialement prévu, qu'il n'était pas pour autant annulé mais reporté … au JDK 8. L'officialisation de ce report est une mauvaise nouvelle, car cette nouvelle mouture de JMX serait arrivée à temps pour apporter un renouveau à cette API, qui bien que très puissante, souffre parfois de lourdeurs à l'usage.



Dependency injection to the rescue!
Dependency injection is probably not as widely useful as regular expressions but is pretty pervasive these days in most applications built on Java EE, Spring, or Guice.
Recently, Google (most prominently Bob Lee and Guice) teamed up with pringSource (most prominently Rod Johnson and Spring) to propose a JSR for standardizing dependency injection annotations for Java SE in JSR 330.



JSR 330: Dependency Injection for Java
We propose to maximize reusability, testability and maintainability of Java code by standardizing an extensible dependency injection API.


Google Guice : Injection avancée
Dans le cadre d'un article d'introduction à Guice, nous avions vu une injection de dépendance simple, répondant à un besoin relativement basique.
Dans ce second article, nous allons découvrir des outils d'injection plus évolués, qui devraient nous permettre de réaliser par la suite notre premier exemple 'réel' d'implémentation Guice.


2009 JavaOne: Groovy/JRuby
The 2009 JavaOne Conference [1] included multiple opportunities to learn about and discuss Groovy [2]. Bill Gloff [3] provides a nice summary of the Groovy-related activities [4] and mentions that Groovy won [5] this year's edition of the Script Bowl [6]. In this blog posting, I will be focusing on two Groovy-related presentations presented at 2009 JavaOne: What's New in Groovy 1.6? [7] (TS-4215 [8]) and Comparing Groovy and JRuby [9] (TS-4955 [10]). What's New in Groovy 1.6?

In late 2008, SpringSource acquired G2One [11], bringing key Groovy developers such as Graeme Rocher [12] and Guillaume Laforge [13] into SpringSource [14]. The latter, Guillaume Laforge, presented Groovy at the aforementioned Script Bowl and was the presenter of "What's New in Groovy 1.6?"

Laforge's presentation was not entirely new to me because I had previously read his article What's New in Groovy 1.6 [15]. He mentions in his presentation slides that the examples in the presentation come from the article and suggests reading the article for more detailed coverage of the topics covered in the presentation.


Delegate transformation with Groovy
Java doesn't provide any built-in delegation mechanism, and so far Groovy didn't either. But with the @Delegate transformation, a class field or property can be annotated and become an object to which method calls are delegated. In the following example, an Event class has a date delegate, and the compiler will delegate all of Date's methods invoked on the Event class to the Date delegate. As shown in the latest assert, the Event class has got a before(Date) method, and all of Date's methods.

class Event {
@Delegate Date when
String title, url
}


JavaOne: Pluggable Type Checking
They have implemented a Checker Framework and a bunch of sample checkers for things like:
@NonNull - finds null dereference errors
@Immutable - detects incorrect mutation and side effects
@Interned - incorrect equality tests (== vs .equals())

Aucun commentaire: