vendredi 25 février 2011

Veille technologique semaine 8

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Intel annonce la sortie d'une nouvelle technologie de connexion de périphérique très haute vitesse (10Gbits/s) : THUNDERBOLT
  • Oracle propose la première version béta du JDK 7 avec l'outil NetBeans 7. Uniquement pour public avertis, sur le chemin de la sortie du JDK 7 pour mi-2011.
  • Confirmation que JavaFX 2.0 est la prochaine toolkit de Java qui sera intégré au JDK 8, et que la toolkit actuelle de Java, Swing, devrait passer en maintenance.
  • Quelques info sur JavaFX 2.0.
  • Sortie de la version 2.4 de EHCache qui propose un moyen de faire des requêtes sous une forme typé : par des API (en non pas des chaine de caractères).
  • Un résumé des Tech Day 2011 de Microsoft qui se sont passé à Paris.
  • Comment concilier l'agilité et les contrats entre clients et fournisseurs. Une analyse de Valtech.
  • Une définition de wikipédia sur la complexité essentiel et la complexité accidentelle : une traduction française de ces deux termes serait : il ne faut pas confondre complexité et complication. La complexité est lié au problème à résoudre : il faut la maitriser. La complication est apporté par la solution pour résoudre la problème. Il ne faut pas que la complication devienne supérieure au problème à résoudre : c'est un anti-pattern. Je veut passer un booléen entre deux machines, via le réseau, c'est un problème simple, la solution doit rester simple.
  • La sérialisation haute performance en Java.
  • La programmation concurrente et le fork/join du JDK 7
Bonne lecture.



THUNDERBOLT TECHNOLOGY
The Fastest Connection To Your PC Experience

From the company with the fastest processors comes the fastest way to get information in and out of your PC and peripheral devices. At 10 Gbps, Thunderbolt technology gives you great responsiveness with highspeed data and display transfers in each direction—at the same time. With a single cable, connecting a PC to multiple devices is simple, making it easy to get and see what you want, when you want it. Thunderbolt technology gives you incredible flexibility; high performance expansion is just a cable away for new and novel uses, now and in the future. With the 10 Gbps performance of Thunderbolt products you can Transfer a full-length HD movie in less than 30 seconds Backup 1 year of continuous MP3 playback in just over 10 minutes.


Chez Oracle: Netbeans 7, Java FX 2…
Attention, cette info est réservée à un public averti. Aux aventuriers du code. A ceux qui aiment prendre des risques avec leurs sources en utilisant un IDE encore en bêta. En effet, la bêta 2 de Netbeans 7 vient de sortir. Et elle sait nous mettre l'eau à la bouche ! On ne sera pas surpris d'apprendre que le support des produits Oracle comme WebLogic ou la base de donnée a été amélioré, mais c'est surtout le support de Java 7 qui nous fait saliver: découvrez les possibilités de refactoring dans les release notes.

Toujours concernant Netbeans, certains d'entre nous avaient été déçus de l'annonce de l'arrêt du développement du plugin Ruby. Rassurez-vous, la newsletter hebdomadaire de Netbeans annonce que
Tom Enebo et la communauté comptent continuer à le développer. C'est une bonne nouvelle pour les amateurs de multilinguisme.
Pour continuer sur Oracle, Gerbrand van Dieijen, notre collègue Xebian néerlandais, nous livre quelques informations glanées lors d'un JUG. Les voici:
  • comme prévu, le langage de script JavaFX est bien abandonné. Java FX 2 sera une librairie jar.
  • il sera possible de mixer Swing et JavaFX2…
  • … mais Swing est en mode maintenance. Comprendre « ne plus attendre d'innovations de ce coté ». Aie…
Faut-il s'attendre à ce que Java FX2 soit en fait Swing 2 ? Nous verrons mais en attendant, contrairement à d'autres, nous avons du mal à nous enthousiasmer pour un simple composant TableView qui était absent de la librairie jusqu'ici (bien que gérer correctement une table soit beaucoup plus dur qu'il n'y parait !).


JavaFX 2.0
Roger gave an overview of the new JavaFX 2.0, the road-map and the planned features. The software seems to be developed in an agile manner: the dead line is fixed, as is policy at Oracle (not meeting a dead line means exit for the responsible executive), but the final set of features is not. The preview is available now for a limited audience, in May the first public beta will be released and in November the final will be available.


Ehcache Search
La nouvelle version Ehcache 2.4 est sortie la semaine dernière, elle apporte une nouvelle fonctionnalité importante, Search, qui améliore les mécanismes de recherche. Elle offre entre autre une API fluent (Désignation chainée en français ?) qu'on retrouve souvent dans les API de recherche de ce type. Voici un exemple:

Results results =
 cache.createQuery().includeKeys().addCriteria(age.eq(32).and(gender.eq("male"))).execute();
Nous voici donc avec un nouveau query language, EQL, qui rassemble toutes les fonctionnalités classiques de requêtage: les critères ( eq , lt, like, ilike, between…), les tris descendant/ascendant et les agrégateurs ( min , max, avg, sum,count…). Par contre il n'y a pas de possibilités de jointure.
 
Deux approches ont été utilisées selon qu'on soit en mode standalone ou distribué. En standalone la recherche se fait simplement en parcourant l'ensemble des éléments. Même si il y a beaucoup d'éléments le fait d'être en local permet d'avoir un temps de réponse très bon (d'après Ehcache, 1 million d'entrée en moins d'une seconde environ). Par contre le mode distribué, qui ne sera disponible qu'avec la future release Terracota 3.5, s'appuie sur des indexes et est par conséquent beaucoup plus rapide sur des tailles de cache de plusieurs giga voire téra octets. Dans ce mode on peut doubler le volume en gardant quasiment le même temps de réponse si on ajoute tout simplement un cache. A noter que la mise à jour des indexes est asynchrone.
 
Sans être révolutionnaire voici une nouvelle fonctionnalité assez utile pour un outil déjà appréciable par sa simplicité.



Tech days 2011 : le bilan
Voici deux semaines se tenaient les Microsoft Tech Days à Paris, et OCTO y était. Voilà un comtpe rendu des séances auxquelles nous avons assisté, garanti sans langue de bois. Merci à Sofian, Maxence et Vincent pour leurs retours.


La contractualisation agile, une affaire de bon sens !
Inspiré des méthodes agiles, le contrat agile construit un climat de confiance
entre clients et prestataires de développement ou d'intégration. Il repose sur
la collaboration, la transparence et l'adaptation.


Essential complexity and Accidental complexity
Essential complexity refers to a situation where the problem to solve is complexe.

Accidental complexity is complexity that arises in computer programs or their development process
which is cause by the chosen solution to solve the problem.

While essential complexity is inherent and must be mastered, accidental complexity is caused by the approach chosen to solve the problem and must be reduced.

While accidental complexity is to be minimized in any good architecture, design, and implementation, excessive accidental complexity is an example of an anti-pattern.

Java Best Practices – High performance Serialization

Serialization is the process of converting an object into a stream of bytes. That stream can then be sent through a socket, stored to a file and/or database or simply manipulated as is. With this article we do not intend to present an in depth description of the serialization mechanism, there are numerous articles out there that provide this kind of information. What will be discussed here is our proposition for utilizing serialization in order to achieve high performance results.

Java Fork/Join for Parallel Programming

Parallel computing or parallelization is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ("in parallel"). In essence, if a CPU intensive problem can be divided in smaller, independent tasks, then those tasks can be assigned to different processors.

vendredi 18 février 2011

Veille technologique semaine 7

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Le consortium W3C propose un planning pour le HTML5.
  • Après l'annonce de Nokia d'utiliser Windows Phone 7 comme plateforme pour ses smartphones, l'avenir de la librairie graphique Qt, que possède Nokia, est en question.
  • Une réflexion sur les grandes manœuvres dans le monde des smartphones et tablettes.
  • Un état des lieux au sujet du format H264 pour le HTML5.
  • La sortie de la première version (en early acces) de JavaFX 2.0 avec la roadmap : la version complète est prévue pour mi-2011. Oracle démontre son engagement sur cette technologique. C'est une technologie importante pour le client (IHM) Java.
  • Comment définir un contact avec un client qui tient compte de l'agilité.
  • Un article sur la configuration Spring sous forme de code Java.
  • Les performances (théorique) des différentes collections Java.
Bonne lecture.



HTML5, fin prêt en 2014
Alors que le W3C a entrepris les premiers travaux sur le HTML5 en 2007, en reprenant à son compte l'initiative du WHATWG, le standard devrait être finalisé en 2014.

Le calendrier est d'ores et déjà tracé : la première version "dernier appel" sortira en mai prochain, celle-ci contiendra l'intégralité des fonctionnalités finales. Une deuxième version "dernier appel" sera proposée d'ici la fin 2011, tenant compte des remarques faites sur la première. Au deuxième semestre 2012, viendra l'heure des retours des développeurs de navigateurs, donnant lieu à des milliers de tests.

Le W3C escompte que cette phase (qui inclura une version "Candidate recommendation" et au moins deux navigateurs capables d'obtenir des résultats similaires en partant du même code) s'étendra jusqu'au premier trimestre 2014. S'en suivra une période de six semaines pour les derniers tests, suivi par la mise au point de la promotion du nouveau standard, qui devrait donc être finalisé durant le second semestre 2014. Il restera aux développeurs de navigateurs d'implémenter ces fonctions et de toutes les supporter pleinement, sans compter les éditeurs de sites internet.


Qt en sursis ?
Qt est une bibliothèque logicielle libre en C++ (devenue propriété de Nokia) qui fournit un certain nombre de fonctionnalités d'ordinaire dévolues à l'OS (interface graphique, gestion réseau, accès aux données, etc), afin de permettre un déploiement multi plate-forme rapide (Windows, Linux, Mac OS X, etc), par le biais d'une simple compilation. Elle est utilisée par des logiciels tels que Mathematica, Google Earth, ou encore Photoshop Elements.

Avec la mise en retrait de Symbian au profit de Windows Phone 7, de nombreux membres de la communauté se sont inquiétés de l'avenir de Qt chez Nokia. Aron Kozak indique sur
le blog dédié à Qt que la bibliothèque a encore un peu d'avenir. Qt continuera d'exister sur Symbian, MeeGo et sur les plateformes "non-mobiles". En résumé : pas de Qt sur Windows Phone 7, ce qui risque d'avoir un impact non négligeable sur la pertinence de la librairie en tant que sésame universel, et qui décevra ceux qui se sont investis dessus avec le mobile en ligne de mire. Il faudra également réécrire les logiciels qui en tirent parti pour les faire fonctionner sur Windows Phone 7.

Les grandes manoeuvres dans le monde des smartphones et tablettes
Cette année, et pour la première fois de l'histoire, il se sera vendu plus de smartphones que d'ordinateurs. Le phénomène, s'il reste largement centré sur les pays riches et développés, n'est sans doute pas près de s'arrêter. Pas étonnant, dès lors, que les principaux acteurs mondiaux fourbissent leurs armes et affinent leurs stratégies. Avec les récentes annonces de Palm et de Nokia, un paysage concurrentiel redessiné se profile.


H.264 Update
Since Google Chrome dropped H264 support from the HTML video tag, Microsoft stepped up to provide a plugin that adds H264 support back, for the Windows version of Chrome at least. Microsoft has previously provided support for Firefox, though notes that JavaScript code which uses browser detection may result in the site refusing to serve H.264 to that browser agent. Since Microsoft pays for an H.264 license for Windows, use of the technology on that operating system is fully licensed.


JavaFX 2010-2011 Roadmap
Oracle is committed to making JavaFX the premier environment for rich client applications. Built on the Java platform, JavaFX provides an ideal solution for creating expressive applications and modern user experiences. The main focus areas for the next release of the product include Java APIs for JavaFX, a new high performance graphics engine, support for media playback, the ability to embed HTML content within a JavaFX application, UI controls, and improved deployment.

JavaFX 2.0 Proposed Features :
  • Port JavaFX Script APIs to Java
  • JavaFX Binding APIs
  • Sequence, Observable List, and Observable Map APIs
  • Multithreading Improvements
  • Hardware Accelerated Graphics
  • High Performance Animated Transitions
  • Media Features
  • Web Features
  • Controls Features
  • ...

HELLO JAVAFX 2! - BACK TO JAVA

In contrary to JavaFX 1.X, JavaFX 2 is pure Java.


Contracting for Agile Software Projects
As a customer or supplier of software services at the beginning of a Software Development Project, you know that there is too much at stake to work with just a verbal agreement. Although the Agile Manifesto values customer collaboration above contracts, contracts are necessary when working with external suppliers. A contract is really just a set of written playing rules. The right rules increase the chance of success for both parties. The wrong rules make cooperation difficult and hinder progress. Which contract forms are best for agile software development projects?


How to Write a Lean and Agile Contract


Spring 3.1 M1: Introducing @Profile
Introduction
In my earlier post announcing Spring 3.1 M1, I discussed the new bean definition profiles feature as applied when using Spring <beans/> XML to configure the container. Today we'll introduce the new @Profile annotation and see how this same feature can be applied when using @Configuration classes instead of XML. Along the way we'll cover some best practices for designing @Configuration classes.


Java Collection Performance
Le temps de [ ] est révolu ; celui de<> est venu. La liste a remplacé le tableau et type ses éléments — comme son prédécesseur — depuis java 1.5. Mais est-elle efficace ? À quel prix s'entoure-t-on d'un de ses cadets, LinkedList, HashSet, TreeMap ? La JavaDoc détaille leurs complexités, pourtant aucun site ni ouvrage semblent n'en faire l'écho. Quelques indices glanés dans « Java in a Nutshell » quelques autres dans « Java Generics and Collections » pas beaucoup plus sur la toile à ma connaissance. Les Collections, utilisées si généreusement, seraient méconnues ? Petite revue des troupes.

vendredi 11 février 2011

Veille technologique semaine 6


Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Microsoft a commencé une réorganisation qui montre plus d'ingénieurs à des postes de responsables. Microsoft a compris qu'il faut connaitre le logiciel de l'intérieur pour mieux concrétiser une vision.
  • La fin des bloc IPV4 en janvier 2010, avec la fin des adresses IPV4 pour septembre prochain. Google et d'autres propose le 8 juin 2011 comme le IPV6 day pour vérifier votre connectivité IPV6 (si vous ne l'avez pas fait avant).
  • Sortie de la première release candidate du navigateur Internet Exploreur 9 de Microsoft avec des performances JavaScript et graphique accélérées ainsi qu'une compatibilité HTML5.
  • Un article sur le Web sémantique : c'est encore la quête du Graal ?
  • Une histoire d'architecture logicielle comme un langage de programmation : pourquoi les langages de programmation ne parle pas encore le vocabulaire de l'architecture logicielle ? Peut-t-on compléter les langages de programmation et leur ajouter les concept de l'architecture logicielle ? Peut-on élever le niveau d'abstraction des langage de programmation ?
  • Le mouvement Software Craftsmanship propose de re-valoriser le développement du logiciel et propose des exigences de qualités de conceptions logicielles en plus des fonctionnalités. Il ne faut pas confondre "le savoir" (la formation) et "le savoir faire" (l'expérience). On oublis trop souvent que le logiciel a besoin des deux.
  • Revue publique du Java Specification Request 292 : Supporting Dynamically Typed Languages on the Java Platform. C'est une évolution importante de la JVM qui permet aux langages à typage dynamique (Groovy, JRuby, Jython, ...) d'être plus performant dans une JVM. C'est la première fois qu'une fonctionnalité de la JVM ne sera pas utilisé par le compilateur du langage Java. C'est la confirmation de l'ouverture de la machine virtuelle java vers d'autres langages que Java.
  • Un morceau de code Java pour expliquer l'utilisation de la double accolade {{ }}.

Bonne lecture.

Microsoft mettrait plus d'ingénieurs aux commandes
Steve Ballmer prépare une réorganisation au sommet de Microsoft qui verrait l'arrivée de responsables de groupes ayant une formation technique ou un profil d'ingénieur.

"Vous voyez une équipe d'ingénieurs prendre de l'ascendant, car Steve se rend compte que pour concrétiser une vision vous devez réellement comprendre comment on développe du logiciel" observe un analyste.

Cette orientation aiderait Microsoft à mieux répondre à ces concurrents ...


Final IPv4 Blocks Allocated
Les dernièrs blocs d'adresses IPv4 ont été distribuées en janvier par l'Icann, l'organisme mondial en charge des noms de domaines et des adresses IP. Les derniers cinq blocs d'adresses encore disponibles de 16 millions d'adresses IPv4 chacun ont été transmis aux registres Internet régionaux.

Une fois que ces adresses auront été attribuées, il n'y aura plus d'
adresses IPv4 en réserve. Les spécialistes fixent à septembre 2011 prochain l'épuisement effectif de l'IPv4. Le stock d'origine était de 4,3 milliards d'adresses (32 bits).


Internet Explorer 9 Release Candidate
After tens of millions of downloads of last year's beta, Microsoft has shipped the release candidate of Internet Explorer 9. The latest iteration of Microsoft's new browser boasts a few new features, a refined user interface, better
performance, and improved standards compliance.
Perhaps as a testament to the success of its platform preview program and beta release, the changes are, for the most part, quite subtle. The platform previews have allowed Web developers to track the progress of the browser's core
rendering engine, and to submit bugs and feedback to the company; thus, when the beta was released, there were few surprises in the browser's treatment of webpages.
The new user interface was the big surprise of the beta: taking a leaf from Chrome's book, Internet Explorer 9's user interface is a pared down, minimal affair, designed to be much less intrusive and to put the focus squarely on websites
rather than the browser itself.


The Semantic Web
Introduction
Ever since the dot-com days of the late 1990s and early 2000s when it was first realized that the internet could be a source of massive revenue we have been awash in waves of recurrent hype and marketing. Often the hype turns out to be just that, as seen most dramatically in the bursting of the dot-com bubble. However, there are times when a new idea takes root and spawns an important new technology and/or business, and sometimes even opens up an entirely new market.

In technical fields where everyone is much too smart to be fooled by the sort of internet hype affecting the population at large we have learned to disguise our technological marketing shenanigans in clever ways so that we can more easily digest them and enjoy the exhilaration of being swept into the hype ourselves. Arguably, one good example of this is the use of the terms "Web x.0", i.e. Web 1.0, Web 2.0, etc. The "Web x.0" terms are an attempt to describe the phases of evolution of the internet; a thing that has taken on a life of its own and a thing that is evolving in directions that we are hard-pressed to predict.


Architecture as Language: A story
Architecture is typically either a very non-tangible, conceptual aspect of a software system that can primarily be found in Word documents, or it is entirely driven by technology ("we use an XML architecture"). Both are bad: the former makes it hard to work with, and the latter hides architectural concepts behind technology hype.

The first part of this paper illustrates the idea using a real-world story.
The second part summarizes the key points of the approach.


Software Craftsmanship : en pratique
Le software Craftsmanship est un mouvement récent qui met en exergue l'expérience des pratiques de développement des programmeurs. Ce mouvement de pensée est l'une des réponses à la tendance à l'externalisation systématique des développements banalisant le métier de développeur pour le reléguer au rôle de simple producteur de ligne de code.

Il prône, entre autre, le fait qu'il ne suffit pas que le logiciel fonctionne, il faut également qu'il soit correctement écrit. L'accent est notamment mis sur la fiabilité et la facilité de maintenance.

Est-il nécessaire de rappeler que le coût d'écriture d'un logiciel pour sa version initiale n'est qu'un pourcentage (50%) de son coût total ? Il est néanmoins facile de prendre ce concept à la lettre et de raffiner chaque fonction à la perfection. Le danger de la surconception / développement est bien présent.

C'est là que l'expérience entre en jeu, comment faire un logiciel qui fonctionne, bien écrit et qui n'est pas un chef d'oeuvre à la Sagrada Família (non achevée à ce jour) : en utilisant des développeurs expérimentés, capables de prendre les bonnes décisions, bien entrainés via différentes techniques et aptes à résoudre un maximum de problématiques.


JSR 292 formal Public Review
If all goes well, there will be a sixty-day formal Public Review of the specification of JSR 292. I expect this to start in about ten days.
For almost two years, I have been keeping an updated preview of the specification here. This is simply a spin of the Javadoc derived from the current patch set in the Da Vinci Machine Project. I have also frozen a copy of this preview, as of the Public Review.


Java Double Brace Initialization
Double brace initialization is a combination of two separate process in java. There are two { braces involved in it. If you see two consecutive curly braces { in java code, it is an usage of double brace initialization.