vendredi 15 janvier 2010

Veille technologique semaine 2

Pour le bulletin de cette semaine, je vous propose les articles suivants :
  • les langages les plus populaires en 2009,
  • sortie du JDK 6 update 18 avec une liste importante de correction de bugs et des améliorations de l'outil VisualVM,
  • la colocalisation et l'efficacité des équipes,
  • le livre "Le mythe de l'homme mois" : un "best of" de 35 ans,
  • programmer, c'est aussi communiquer,
  • la conception par contrat : Bertrand Meyer nous rappel les bonnes pratiques pour la définition des interfaces,
    Avez vous des interfaces de services avec des pré et post conditions bien définies et documentés ?
  • Les bonnes raison de mettre les closures dans le JDK 7,
  • Les websocket du HTML 5 : le push devient accessible,
  • Les performances des applications distribuées,
  • Les moteurs de règles : Drools ?
  • SUN propose un composeur visuel pour JavaFX,
  • JavaFX : cela intéresse-t-il le marché ?,
  • Le projet Lombock : réduction du code par les annotations,
  • IntelliJ IDEA est proposé avec une version community (gratuite).

bonne lecture.


Popular Languages of 2009
The TIOBE index for 2009 says that Google's new Go programming language experienced more growth in popularity than any other language in 2009. The growth is quite remarkable given that the language became available late in the year. Is it all just hype? The Google brand certainly carries a lot of power and marketing capability with it. Based on TIOBE's system, Go and Objective-C had the biggest gains in 2009 with Java taking a slight hit, but remaining at the top. TIOBE calculates its index based on search engine hits.

Object-Oriented Languages still have the majority of the index share with 54.6% while Procedural Languages (41.5%) made a 1.4% jump thanks to Go. Statically Typed Languages and Dynamically Typed Languages are about a 60/40 split in favor of Statically Typed.


Java 6 Update 18: Now With Windows 7 Support
Java 6 Update 18 is now available for download. One of the main features of this release is the inclusion of support for Windows 7. Along with an impressive list of bug fixes, the update includes performance improvements, an update to JavaDB and the inclusion of the latest version of the Java profiling tool, VisualVM. This update is bound to be popular, while we wait for the final milestone of JDK 7, expected this September.


Ce que la science nous dit de la colocalisation
Les méthodes agiles recommandent la colocalisation des acteurs (i.e. une localisation physique dans un même bureau) pour une meilleure communication, une meilleure collaboration et globalement une équipe ou un processus projet plus performants.

Même dans le cas d'équipes « colocalisables » dans les faits, on mesure la distance de la coupe aux lèvres lorsque les organisations doivent faire le pas et que les obstacles se dressent, notamment :
  • une remise en cause délicates des frontières organisationnelles dès lors que des acteurs de différents silos sont amenés à partager au quotidien un même espace de travail (ex : MOA/MOE/marketing/intégration/exploitation…);
  • des demandes d'aide pour le moins fastidieuses vis-à-vis des tout puissants « services généraux » ;
  • un impact sur l'ensemble des acteurs projet, au-delà de la population des développeurs, seule astreinte aux nouvelles disciplines comme le pair programming, TDD ou l'intégration continue.

Les multiples réticences à la mise en place d'équipe colocalisées ou le débat au sein de la communauté agile doivent nous inciter à étayer notre discours plus solidement que « c'est une bonne pratique agile qui est indispensable/facultative » ou « la colocalisation/non-colocalisation a bien/mal marché dans nos projets précédents ».


Présentation du livre "The Mythical Man Month"
Pourquoi lire ce livre ?
Premièrement, si vous ne connaissez pas ce livre, même de nom, vous connaissez peut-être la célèbre expression : "ajouter des hommes à un projet en retard, ne fait que le retarder encore plus". Cette idée a donné son titre à cet ouvrage. Et si cette expression ne vous a rien dit, peut-être que celle-ci vous parlera : "Malgré les nouveaux outils, il n'y a pas eu de gain significatif de productivité depuis les années 90.

Dois-je conseiller ce livre à mon chef de projet/manager ?
Oui, ce livre est intéressant pour les chefs de projet et les managers. Certains chapitres ont plus d'intérêts que d'autres. Parmi ceux-ci, les parties documentation, planification et communication fournissent des thèmes récurrents dans les projets. Cet ouvrage permet également d'ouvrir les yeux sur certains sujets.

Par exemple :
En cas de retard sur votre projet, est-ce qu'ajouter une personne me permettra de rattraper ce retard ; Est-ce que je gère un planning qui me permet de gérer les priorités en cas de retard ; Comment je gère ma documentation, comment je la maintiens et comment la partager entre ceux qui l'écrivent et ceux qui la lisent.


Programming is also teaching tour team
Programming has two goals.
  • One goal is to do something, of course: calculate an amortization table, present a list of updated feeds, snipe someone on Ebay, or perhaps smash a human player's army. This goal is focused at a computing environment.
  • The other goal is - or should be - to transfer knowledge between programmers.

Design by Contract
Bertand Meyer, the designer of the Eiffel programming language, was one of the early proponents of the importance of contracts. In "A Conversation with Bertrand Meyer, Part II - Design by Contract"
(http://www.artima.com/intv/contracts.html), he puts it this way, "The main purpose of contracts is to help us build better software by organizing the communication between software components through specifying, as precisely as possible, the mutual obligations and benefits that are involved in those communications."

Taking it somewhat deeper, an effective contract specification provides an unambiguous description of the interface syntax and semantics - what it looks like and how it behaves. The contract defines the operations offered by the interface, the inputs, the outputs, and the effects.

Contracts should exhibit well-known design quality attributes such as
separation of concerns, high-cohesion, loose-coupling, granularity and
degree of element interactions and others
.


For today, let's just emphasize one: the separation of concerns which engenders the ability to organize the development effort around the architecture. Effective contract definition allows individuals or teams to be assigned responsibility for delivery of specific subsystems or components, understanding how that functionality is integrated to the overall system. In other words, contracts help us to divide and conquer.

What's a Contract?
Bertrand Meyer talks with Bill Venners about Design by Contract and the limits of formal languages for expressing contracts.

The main purpose of contracts is to help us build better software by organizing the communication between software components through specifying, as precisely as possible, the mutual obligations and benefits that are involved in those communications. The specifications are called contracts.


Mark Reinhold justifie l'introduction des closures

C'était l'Annonce de cette édition de Devoxx, l'apparition des closures en Java 7. Mark Reinhold revient, sur son blog, sur les raisons à l'origine de cette petite bombe.
Il justifie cette évolution majeure du langage par la nécessité pour Java de tirer partie des nouvelles générations de processeurs, multi-cœurs.
Jusqu'ici, pour exploiter cette puissance, il fallait utiliser des Parallel Array et tout le code inutile nécessaire à leur fonctionnement. Les closures permettent de supprimer ce code, et il est temps de les introduire en Java.
Java doit se concentrer sur deux fonctionnalités clés : la syntaxe littérale, et les fonctions typées. L'arrivée des closures requiert deux autres évolutions de Java : les conversions, et l'extensibilité des méthodes.
Il est temps pour Mark Reinhold d'oublier
les querelles. Sun spécifiera et implémentera un premier jet des closures pour le JDK 7. Cela permettra une expérimentation à grande échelle, et si tout se passe bien, cela conduira à une JSR de modification du langage, qui pourra être incluse dans Java SE 7.
La tâche est immense et Mark Reinhold appelle bien évidement toutes les bonnes volontés à contribuer.

Bien au-delà de la manipulation du multi-threading, les closures pourraient permettre une simplification des APIs courantes. Cette perspective semble essentielle à Mark Reinhold qui ne pouvait attendre le JDK 8 pour une nouvelle tentative, dans 3 à 4 ans…


HTML 5: les WebSockets sont là !
HTML 5 arrive peu à peu dans nos navigateurs et cherche à standardiser certains aspects du Web : vidéo, offline, ….et push serveur.
Les WebSocket standardisent les API JavaScript mises à disposition par le navigateur pour rendre disponible le push.


Performance Considerations in Distributed Applications
Distribution and Communication between applications and services is a central concept in modern application architectures. In order to profit from distribution you have to keep some basic principles in mind – otherwise you can easily run into performance and scalability problems. During development these problems often do not surface. Then suddenly in load testing or production you might then realize that your chosen software architecture does not support the required performance and scalability requirements. In this post we will look at major points to keep in mind when building distributed applications.


Drools et les moteurs de règles
Lorsque l'on entend parler de moteur de règles, on a souvent tendance à y associer le mot « Drools ».
Pourquoi ce réflexe : Par habitude ? Parce que Drools est l'unique solution du marché Open Source ?

Mais avant j'aimerais répondre à plusieurs questions :

  • Qu'est ce qu'un moteur de règles ?
  • Quand en a-t-on besoin ?
  • Pourquoi en a-t-on besoin ?

Ensuite on pourra présenter Drools !

Qu'est ce qu'un moteur de règles, et pourquoi ?


Sun Releases Early Access Version of RAD Tool for JavaFX
Sun is working on two RAD tools for JavaFX - one targeted at web developers and page content authors, and the other aimed more at Java
developers. A preview version of the latter tool, tentatively called "JavaFX Composer" is now available for download from the NetBeans 6.8 update centre.
"We're not even calling this a beta - we're calling it an 'early access' or preview", said Sun's director of Developer Tools Engineering, David Folk, during a conference call. "What this tool is really about is enabling you to develop form-based applications with JavaFX."

The basic idea behind the new JavaFX tool is similar to Project Matisse for Swing, which simplified Swing development by providing a visual editor much like those found in Visual Basic or Delphi. As with Matisse, which became the NetBeans GUI builder when NetBeans 5 shipped, JavaFX Composer generates code as you work and, whilst you can view the generated source code, it frustratingly cannot be modified.


When Will JavaFX Get Real Community Acceptance?
Even though we're two years on from the 1.0 release of JavaFX, 2010 could be the defining year for the technology. With the mobile device space really taking off, JavaFX has to prove that it deserves to be up there with competing technologies. While some say that it is all too little, too late, I think that JavaFX has one key feature that gives it a fighting chance - an application you write for JavaFX mobile can also work on the web or desktop.

Earlier this week, I asked JavaLobby readers what they would develop their mobile applications with. So far, the overwhelming majority, at about 70% say they would use Android. JavaFX comes in second at just 16%. Despite the low number, I don't think all is lost but I wonder what JavaFX has to do to get buy in from the Java community.


Reducing Boilerplate Code with Project Lombok
Introduction
"Boilerplate" is a term used to describe code that is repeated in many parts of an application with little alteration. One of the most frequently voiced criticisms of the Java language is the volume of this type of code that is found in most projects. This problem is frequently a result of design decisions in various libraries, but is exacerbated by limitations in the language itself. Project Lombok aims to reduce the prevalence of some of the worst offenders by replacing them with a simple set of annotations.


IntelliJ IDEA Open Sourced
Starting with the upcoming version 9.0, IntelliJ IDEA will be offered in two editions: Community Edition and Ultimate Edition. The Community Edition focuses on Java SE technologies, Groovy and Scala development. It's free of charge and open-sourced under the Apache 2.0 license. The Ultimate edition with full Java EE technology stack remains our standard commercial offering. See the feature comparison matrix for the differences.


IntelliJ IDEA Editions Comparison

Aucun commentaire: