vendredi 25 mars 2011

Veille technologique semaine 12

Pour le bulletin de cette semaine, je vous propose les sujet suivants :
  • une mise à jour du tutorial Java est sortie le 17 mars 2011 avec déjà les évolutions du JDK 7
  • Un article au sujet de l'agilité et la contractualisation
  • La loi de Conway : comment une organisation qui construit un système peut finir par le concevoir comme le reflet de sa propre structure.
  • Deux articles sur l'architecture logicielle : un terme qui n'est pas strictement défini.
  • Le produit EHCache qui propose un système de requête sur des objets en Java.
  • Les quatre règles minimum pour écrire du code.
Bonne lecture.


What's and What's Old? The History of  the Tutorial
17 March 2011


Travaillons ensemble à votre contractualisation Agile
L'Agile est aujourd'hui un outil puissant d'amélioration de la qualité des produits et de la satisfaction des acteurs, utilisateurs comme artisans du système d'information. Si la méthode commence à être connue, sa mise en oeuvre peut néanmoins se heurter à des difficultés, notamment sur le volet contractuel.

Ainsi, dans les organisations où les pratiques d'achats reposent sur une définition exhaustive des besoins (i.e. cahier des charges) et une obligation de résultat portant sur un périmètre figé et qui ne peut évoluer qu'à l'aide d'avenants, il est souvent difficile voire impossible de concilier ces pratiques avec les
principes fondamentaux de l'Agile à savoir : autoriser le changement, affiner et spécifier les fonctionnalités au fil de l'avancement du projet pour répondre mieux aux besoins des utilisateurs. Alors que faire ?


The Conway's Law
This concept is known as Conway's Law, named after Mel Conway, who published a paper called "How Do Committees Invent?". Fred Brooks cited Conway's paper in his classic "The Mythical Man Month", and invented the name "Conway's Law". Here's the definition from Conway's own website (which also has the original paper in full):

Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization's communication structure.

ConwaysLaw appears in MythicalManMonth, citing an earlier article by Conway from Datamation.


Conway's Law

Over the years I've heard a number of creative derivations of ConwaysLaw, including
  • The architecture of a system is a copy of the architecture of the organization
  • The structure of a system is determined by the structure of the team.
  • To understand the team, look at the software they're producing. If it's slow and bloated, the team is slow and bloated. If it's lean and quick, the team is lean and quick.
  • More precisely, The structure of a system reflects the .status and power relationships of the people and organizations involved.

Conway's Law and the Impact to Product Development
Think about your product and it’s strengths and weaknesses. Can these strengths and weaknesses be mapped to the strengths and weaknesses of the communication paths in your organization? Component-based teams and human relationships are at the core of this idea.



What is Software Architecture?
It's what software architects do / create / make! :-)
But still . . . . we've asked probably the hardest question in the world of software development.



What is a software architecture?
Architecture is the first of a four-part series on "architecting" in general. The author begins by defining the discipline's key terms and goes on to explore what a well-designed architecture contributes to the environment in which it is deployed.


Ehcache: Distributed Cache or NoSQL Store?
Is Ehcache a NoSQL store? No, I would not characterise it as that, but I have seen it used for some NoSQL use cases. In these situations it compared very well — with higher performance and more flexible consistency than the well-known NoSQL stores. Let me explain.
Ehcache is the de facto open source cache for Java. It is used to boost performance, offload databases and simplify scalability. Backed by the Terracotta Server Array, Ehcache becomes a linearly scalable distributed cache. It is a schema-less, key-value, Java-based distributed cache. It provides flexible
consistency control, data durability, and with the release of Ehcache 2.4, search by key, value and
attribute indexes.


Clean Code: Four Simple Design Rules – Obligatory Read
Posted by theholyjava on February 14, 2011 consider the Clean Code book to be obligatory for every programmer. And if you currently haven't the time to read it all at once then you should read – and take deep into your heart at least the 12th chapter Emergence by Jeff Langr, which introduces Kent Beck's Four Simple Design Rules and explains thoroughly what they mean and why they're so important. The rules, in the order of importance, are:


vendredi 18 mars 2011

Veille technologique semaine 11

Pour le bulletin de cette semaine, je vous propose les sujet suivants :
  • Microsoft propose la version 9 du navigateur Internet Explorer : compatible HTML 5 et performances sont au rendez vous. Pour Windows Vista ou 7 uniquement.
  • Le standard Java Enterprise Edition 7 (JEE7) est ouvert : objectif cloud et HTML5.
  • Un IDE (Intégrated Development Environment) dans un navigateur web : le Cloud IDE
  • JavaFX 2.0 : interview de l'architecte chez Oracle. Version publique pour mi-2011.
  • Une série d'article pour essayer de préciser la différence entre l'analyse et la conception (design) dans le logiciel : il est très important de séparer correctement la phase d'analyse et les concepts correspondants, et la phase de conception et ses concepts. L'industrie du logiciel propose les concepts d'architecture logiciel orienté services (Services Oriented Architecture : SOA) et orienté événements (Event Driven Architecture : EDA). Ces deux styles d'architectures ne sont pas liée à une solution technologique. C'est donc l'analyse des spécifications fonctionnelles qui va permettre de construire l'architecture du logiciel (espace du problème : le quoi) uniquement à l'aide de principe basé sur ces concepts de services et d'événements. La phase d'après, la conception (espace de la solution : le comment) permet d'intégrer les exigences non fonctionnelles (les performances, ...) et les solutions techniques pour la persistance, la distribution de données, les invocations distantes (remote) ... La distribution de données n'est donc pas un concept du niveau de l'analyse mais bien un concept de design, de l'espace des solutions. Il n'y a pas d'architecture orienté distribution de données.
  • IBM propose un article qui résume la complémentarité des architectures orienté services (SOA) et Orienté événements (EDA) et propose de l'appeler ED-SOA : pour Event Driven-Service Oriented Architecture.
  • Un COTS de messageries : ZeroMQ. Interropérable avec une vingtaine de langage de programmation, avec un modèle de programmation requête-réponse (SOA) et publish/subscribe (EDA), différent transport : intra-process, IPC, IP et des performances remarquable (en débit et latence).
  • Un article pour préciser la différence entre la surcharge (overload) et la redéfinition (override). Ces deux concepts sont très souvent confondu.
  • Un exemple de code Java pour observer le système de fichier, avec les nouvelles API du JDK 7.

Bonne lecture


Microsoft IE 9 Released
Microsoft released IE9, its flagship internet browser, at the SxSW conference yesterday. This brings IE into closer alignment with current web browsers, as it introduces some level of HTML5 support and achieves a 95% pass rate on the Acid 3 tests.
The most notable feature of IE9 is its speed. With a background thread for JIT compilation of JavaScript and hardware acceleration, it feels much faster in performance than its predecessors. There are other user interface updates to fit in with Windows 7, including "pinned sites" which give you a quick link from the shortcut bar to a web page.

The addition of HTML5 features such as the HTML History API will enable more user friendly websites/applications to be written without needing to invoke the hashbang syntax which was largely derided when sites like gawker disappeared from Google's caches.


Java EE: Objectif Cloud !
Vous n'avez pu rater la semaine dernière l'annonce de la sortie de la JSR 342! Il s'agit de la spécification de Java EE 7 dont le principal focus se veut être le Cloud.
Cette évolution de la plateforme était attendue. En effet, nombreux sont ceux qui, depuis plusieurs mois, prédisent que l'avenir de Java dépendra de sa faculté à intégrer les paradigmes du Cloud, tels que le « multitenancy » (partage d'une même application entre plusieurs utilisateurs ou organisations clientes) ou encore l'élasticité (mise à disposition automatique de ressources en fonction de la montée ou de la baisse de charge).
Voici un rapide tour d'horizons du contenu de cette JSR.



Oracle's Java EE 7 Plans Include Adding Cloud and HTML5 Support to the Platform
Oracle has filed Java Specification Request (JSR) 342, the umbrella JSR for Java EE 7. The JSR places emphasis on emerging web technologies, cloud computing, and continued ease of use improvements including an overhaul to the JMS API. Elsewhere, JPA is scheduled to receive attention, and Oracle is talking about plans to revive the long dormant JCACHE JSR.
The primary focus for making Java EE more suited to the cloud is on multi-tenancy (having the same program execute in a variety of different environments from a local application server to a private cloud to a public cloud), application versioning, and support for non-relational (NRDBMS) data stores.
 


Java EE 7
Suite à la sortie de Java SE 7 en developper preview, c'est au tour de Java EE 7 de faire parler de lui. Il y a deux semaines, la spécification de la plateforme Java Entreprise Edition dans sa version 7 a été soumise au JCP sous la JSR 342. Bien entendu, cette spécification est une proposition qui devra être votée et implémentée par l'« expert group ». Selon plusieurs sources, JEE 7 devrait voir le jour courant 2012, au troisième ou quatrième trimestre.
Au programme de cette version 7 : du cloud, du cloud et encore du cloud. En effet, cette JSR « umbrella » — c'est-à-dire chapeautant à son tour d'autres JSR — se veut résolument « cloud-friendly ».
Mais JEE 7 couvrira aussi d'autres sujets : le support des derniers standards du Web, la modularité et la facilité de développement.
 
Focus sur le Cloud
Le spec lead de cette JSR voit le cloud comme un prolongement du modèle orienté conteneur (accès au système et aux ressources externes géré par le conteneur) de la plateforme Java Entreprise Edition, où une application peut être déployée sur une machine unique comme sur un cluster de manière distribuée, sans changements radicaux, grâce à la souplesse de la stack.
La plateforme JEE étant déjà bien parée pour des environnements cloud — grâce à son modèle orienté conteneur et à son abstraction d'accès aux ressources — l'objectif de la spécification est d'améliorer l'intégration de la plateforme dans des clouds privés ou publics, afin que les applications y soient exposées « as a service », avec le support de fonctionnalités telles que l'extensibilité horizontale (« horizontal scalability ») ou encore la « multitenancy » (principe d'architecture logicielle où une seule instance d'une application peut servir, de manière individualisée, différents clients avec potentiellement des configurations et des paramétrages personnalisés).
Il s'agit également de tenir compte des problématiques liées au cloud (sécurité, isolation, qualité de service), en définissant par exemple de nouveaux rôles, tel que celui de PaaS (Platform as a Service) administrator ou en mettant à jour le modèle de sécurité de la plateforme en ce sens. Aussi, les applications qui voudront tirer avantage des différentes fonctionnalités spécifiques au modèle PaaS devront-elles obéir à certaines contraintes et fournir un moyen d'être identifiées comme étant conçues pour évoluer dans un environnement cloud.
Bon nombre d'APIs vont être mises à jour pour tenir compte de ces problématiques. Celles notamment qui gèrent des accès aux ressources, comme JPA, JDBC ou encore JMS, devront se rendre compatibles avec les systèmes multitenants. Dès lors, des ressources externes telles qu'une source de données ou une file de messages pourront être marquées comme étant partagées entre plusieurs applications. Les « expert groups » qui gouvernent chaque API seront chargés d'identifier ces besoins et de prendre les mesures adéquates.
 
Les derniers standards du Web
Le Web est aussi à l'honneur pour cette version 7 de la plateforme. D'ailleurs, deux nouvelles APIs, venant étoffer le support des dernières technologies Web dans le vent, sont en discussion :
  • Support du HTML5 et des Web Sockets via l'API Java Web Sockets.
  • Support de JSON (JavaScript Object Notation) via l'API Java JSON.
JEE 7 inclura aussi la version 2.0 de l'API JAX-RS (Java API for RESTful Web Services) définie par la JSR 339. Cette dernière sera rajoutée au profil Web, en plus des mises à jour des APIs déjà présentes au sein de celui-ci.

Modularité
Cette JSR a aussi pour objectif de faciliter la modularité et la gestion de versions, en permettant par exemple à une application d'utiliser une version supérieure d'une API déjà incluse dans la plateforme. Ce travail devra être coordonné avec la JSR à venir sur la modularité dans Java SE afin de rendre les deux plateformes cohérentes.
 
Facilité de développement
Tirant les leçons de certaines API vilipendées pour leur lourdeur ou leur complexité — on pense aux EJB d'avant la version 3.0 — cette version 7 se veut simple, légère, efficace et efficiente. En ce sens, l'API JMS dans sa version 2.0 va être améliorée et l'API CDI (Context and Dependency Injectio), introduite dans JEE 6, se verra doter d'une API pour configurer un injecteur : l'API DI 1.1 (la suite de la JSR 330).
A noter que la JSR 342 propose l'ajout de deux nouvelles JSRs, à savoir :
  • Concurrency Utilities for Java EE (JSR-236) : construite sur l'API java.util.concurrent, cette API offre des facilités pour exécuter des tâches de manière asynchrone.
  • JCache (JSR-107) : cette API a pour objectif de standardiser un système de cache accessible depuis tous les conteneurs en vue de rendre les applications plus « scalables » (extensibles).
En résumé, plusieurs APIs déjà présentes dans JEE seront mises à jour :
  • Java Persistence API (JPA)
  • Java API for RESTful Web Services (JAX-RS)
  • JavaServer Faces (JSF)
  • Servlets
  • Enterprise JavaBeans (EJB)
  • JavaServer Pages
  • Expression Language
  • Java Messaging Service (JMS)
  • Java API for XML-based Web Services (JAX-WS)
  • Contexts and Dependency Injection for Java EE (CDI)
  • Bean Validation
  • Dependency Injection for the Java Platform (JSR-330)
  • Common Annotations (JSR-250)
  • Java Connector Architecture


eXo Releases Cloud IDE
What Is Cloud IDE
Cloud IDE is a full-fledged development environment inside of a browser. Cloud
IDE contains many of the features developers expect such as color-coded syntax,
context sensitivity, auto-complete, multi-file editor with preview panel and
integration with source control systems.



JavaFX 2.0 Will Bring Hardware Accelerated Graphics and Better Licensing Terms to the Platform
At last year's JavaOne conference Oracle announced that it would continue to invest in JavaFX, shipping JavaFX 2.0 this year. At part of this, however, it also announced that it would be dropping support for JavaFX Script, replacing it with a new Java API for creating JavaFX applications. That API can also be used from alternative languages such as JRuby, Clojure, Scala and Groovy.
The beta program for JavaFX 2.0 has started, with Early Access releases open to members of the JavaFX Partner Program. A public beta is planned by the end of the first half of 2011. Participants will have the opportunity to provide feedback through multiple channels, including surveys, participation in focus group sessions, and discussions with key members of the JavaFX product team.

InfoQ spoke to Richard Bair, the architect for client software at Oracle, to find out more about the release and future plans


Object-oriented analysis and design
  • Object-oriented systems
  • Object-oriented analysis
  • Object-oriented design

The Architectures for software engineering
  • 1. Enterprise
  • 2. Functional
  • 3. Software
  • 4. Logical
  • 5. Technical
  • 6. Physical
  • 7. System
  • 8. Deployed

Architectural Principles and Solution Architectures
How I see it...

There is a difference between architectural principles and solution architectures.
Architectural principles are guidance in ambiguous situations toward an ideal.
A solution architecture holds the trade-off.
Deviating from the principle must be motivated, adhere to the principle not. That's what enterprise architecture is about: principles, decisions and solutions.

Architectural principles help in decision-making, solution architectures help in building systems solutions. Architects should recognize this difference. Architectural principles lead to design-to-change, solution architectures lead to design-to-release.
Practice learns that not all architects do make this distinction. And even worse, some architects don't see the necessity to lean on the guiding principles to which you may deviate during the designing of the solution.

If you don't take into account architectural principles that guide you to flexibility in changing the system across versions, and you don't document your design decisions that deviate from them, you may build perfectly working systems for extremely happy users and at the same time create a nightmare when you have to build and release the next version of the system. That may turn to be lethal for businesses in a world with the current increasing pace of change.




Event Driven Architecture and Service Oriented Architecture :
  • (1) the fusion of SOA and EDA into ED-SOA (event-driven, service oriented architecture) is the way of the future,
  • (2) building processes is greatly facilitated by ED-SOAs,
  • (3) conversely ED-SOAs can be constructed as layered architectures using BPM systems.
  • (4) CEP principles must become an integral component of both ED-SOAs and business processes because of the ever increasing quest for control of our business processes, real time autonomous operation, and the need to gather business intelligence from the events flowing through our IT systems.

Event-Driven Architecture and Service-Oriented Architecture
  • What is EDA?
  • EDA and SOA
  • EDA, SOA, and Services
  • EDA and SOA Programming Techniques
  • EDA, SOA, and ESBs
  • Conclusions

ZeroMQ.
un broker qui implémente plusieurs protocoles dont AMQP. On est ici à la limite du sujet tant cette application s'attache moins à son intégration dans une application de gestion classique qu'à construire une bête de course aux performances affichées impressionnantes (13.4 microsecondes de latence end-to-end, 4.1 millions de messages à la seconde).


ZeroMQ
Less is More :
  • The socket library that acts as a concurrency framework.
  • Carries messages across inproc, IPC, TCP, and multicast.
  • Connect N-to-N via fanout, pub-sub, pipeline, request-reply.
  • Fast enough for clustered products and supercomputing.
  • Asynch I/O for scalable multicore message-passing apps.
  • Large and active open source community.
  • 20+ languages including C, C++, Java, .NET, Python.
  • Most OSes including Linux, Windows, OS X.
  • LGPL free software with full commercial support from iMatix.

ZeroMQ
ZeroMQ is a messaging library, which allows you to design a complex communication system without much effort. It has been wrestling with how to effectively describe itself in the recent years. In the beginning it was introduced as 'messaging middleware' later they moved to 'TCP on steroids' and right now it is a 'new layer on the networking stack'.


What is the difference between method overriding and method overloading in Java?



How to watch the file system for changes in Java 7 (JDK 7)
Java 7 uses the underlying file system functionalities to watch the file system for changes. Now, we can watch for events like creation, deletion, modification, and get involved with our own actions. For accomplish this task, we need:

vendredi 11 mars 2011

Veille technologique semaine 10

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Microsoft propose à ses utilisateurs d'Internet Exploreur 6 de passer à une version plus récente.
  • Adobe annonce un outil de conversion du flash en HTML5. Tout n'est pas encore convertible mais cela confirme la tendance vers le HTML5 pour l'IHM web.
  • Le Java Specification Request (JSR 342) relatif à la prochaine version du serveur d'application Java Enterprise Edition 7 est ouvert.
  • Un article sur la manière de faire des Domain Specific Language (DSL) interne au langage Java.
  • Le processus d'accueil des débutants dans le domaine du logiciel, avec une démarche d'amélioration.
  • Un article au sujet des types paramétrés en C++, C# et Java : les génériques
  • L'outil de test FEST adopte les "fluentes interfaces" pour les assertions : faite des phrases pour les humains dans votre code de test.
Bonne lecture.


Microsoft veut mettre fin à IE6
Alors que fut un temps, Microsoft pouvait s'enorgueillir de l'omniprésence de son
navigateur web, voilà qu'aujourd'hui celle-ci fait figure de caillou dans sa chaussure : nombre d'internautes utilisent encore et toujours l'indéboulonnable Internet Explorer 6. Il faut dire que cette version a été la dernière en date pendant pas moins de cinq ans, et on en mesure aujourd'hui encore les conséquences : près de dix ans après sa sortie, d'après NetApplications 12 % des internautes s'entêtent à utiliser ce navigateur, en dépit de la marche du progrès. Il faut bien évidemment y voir un effet Windows XP, que nombre d'entreprises continuent à utiliser, rechignant à faire le saut vers l'inconnu de la mise à jour face à un système éprouvé.


Adobe targets iOS with Wallaby Flash-to-HTML5 converter
HTML5 may one day be the future of rich interactive Web content and advertising,
but at the moment Adobe Flash remains the tool of choice for designers everywhere. That's a problem when exciting new smartphone and tablet platforms don't support Flash. To resolve that difference, Adobe has published a prerelease version of Wallaby: a program that converts Flash files to HTML5, using JavaScript, CSS, and SVG to produce Flash-like graphics that don't need plug-ins.

With Wallaby, Adobe is clearly readying itself for a "post-Flash" era that may be ushered in with the "post-PC" era.


JSR 342: Java Platform, Enterprise Edition 7 (Java EE 7) Specification
This JSR is to develop Java EE 7, the next release of the Java Platform, Enterprise Edition. The main theme for this release is the Cloud. The Java EE platform is already well suited for cloud environments thanks to its container-based model and the abstraction of resource access it entails.
In this release we aim to further enhance the suitability of the Java EE platform for cloudenvironments. As a result, Java EE 7 products will be able to more easily operate on private orpublic clouds and deliver their functionality as a service with support for features such asmultitenancy and elasticity (horizontal scaling). Applications written for Java EE 7 will be better ableto take advantage of the benefits of a cloud environment.

- Cloud -
- Ease of development -
- Web Profile -
- Pruning -
- Modularity -


An Approach to Internal Domain-Specific Languages in Java
A domain-specific language (DSL) is commonly described as a computer language targeted at a particular kind of problem and it is not planned to solve problems outside of its domain. DSLs have been formally studied for many years. Until recently, however, internal DSLs have been written into programs only as a happy accident by programmers simply trying to solve their problems in the most readable and concise way possible. Lately, with the advent of Ruby and other dynamic languages, there has been a growing interest in DSLs amongst programmers. These loosely structured languages offer an approach to DSLs which allow a minimum of grammar and therefore the most direct representation of a particular language.
 
However, discarding the compiler and the ability to use the most powerful modern IDEs such as Eclipse is a definite disadvantage with this approach.
The authors have successfully compromised between the two approaches, and will argue that is quite possible and helpful to approach API design from the DSL orientation in a structured language such as Java. This article describes how it is possible to write domain-specific languages using the Java language and suggests some patterns for constructing them.


Save money from Agile Development
Young developers usually don't learn how to create a high quality and clean code atthe university and thus in spite of all their efforts they sometimes write code of poorquality, which then causes headakes to many other people and makes maintenance and evolution of the software more error-prone, expensive and slow.

The best way to give them this opportunity is to let them work in a pair with an experienced developer and later, when they've already gaind the right mind set, they can be kept on the right track and encouraged towards further development via code reviews.
  • Bad Code Can Kill You
  • Learning Clean Coding via Pair Programming and Code Reviews
  • Selling the Idea to the Management

Generics in C#, Java, and C++
A Conversation with Anders Hejlsberg.


FEST-Assert 1.4: Fluent Interface for Assertions
FEST-Assert is an "assertThat" library that provides a fluent interface for writing assertions. Its main goal is to improve
test code readability and make maintenance of tests easier.

assertThat(newHires).containsOnly("Gandalf", "Arwen", "Gimli");

assertThat(yoda).isInstanceOf(Jedi.class)
        .isEqualTo(foundJedi)
        .isNotEqualTo(foundSith);

vendredi 4 mars 2011

Veille technologique semaine 9

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • La norme Unicode 6.0 a été publiée avec 109 384 caractères normalisé. La version 1 d'Unicode en proposait 28 294.
  • Le standard WebGL (pour le HTML 5) est proposé par le groupe Khronos. Bientôt le WebCL.
  • Oracle pense au Cloud pour le prochain JEE (7 ou 8 ?) du 2013.
  • La liste officielle des évolutions du JDK 7 : l'implémentation publique passe en mode "fonctionnalités figées" d'après le site web du JDK 7. Exemple de ces évolutions du langage Java.
  • Les données non mutables : l'exemple avec le langage Closure.
  • Parmi les principes de conceptions avancées, un sous-ensemble est regroupé sous l'acronyme S.O.L.I.D. Explications
  • WinFroms, WPF (Windows Presentation Framework) ou Silverlight : trois technologiques de Microsoft pour faire des interfaces homme machine.
Bonne lecture.



Unicode 6.0.0 Standard Published
The week before last, the Unicode Consortium which manages standards for Unicode and Locale published the 6.0 version of Unicode to their site. These standards represent the common set of symbols and locales software vendors use to internationalize their solutions. Over time, the Unicode Standard set of characters has grown in size from 28,294 assigned graphic and format characters in Version 1.0, to 109,384 characters in Version 6.0. This release represents the first time the full specification has been published online in its entirety.


WebGL est finalisé et sera suivi par WebCL
Lors de la Game Developer Conference qui se tient en ce moment, le Khronos Group a annoncé la finalisation de WebGL, ce nouveau standard qui permet d'utiliser OpenGL ES 2.0 dans le navigateur par le biais de JavaScript. Il est de plus en plus utilisé pour la conception de jeux en ligne : ils peuvent alors être utilisés sans plug-in, sur ordinateur classique, tablette ou même sur un smartphone. Il permet aussi de réaliser des applications Web plus classiques avec des éléments graphiques complexes : c'est la carte graphique qui alors géré du rendu, une accélération matérielle 3D bien plus efficace qu'un rendu processeur.


Oracle to float cloud-ready Java EE in 2013
The flavor of Java used to build application servers like IBM's WebSphere, Oracle's WebLogic, and Red Hat's JBoss is getting a two-stage retooling designed to float app severs to the cloud.
Oracle is thrashing out a roadmap for the next versions of Java Enterprise Edition (Java EE) that will add new web technologies such as HTML5, WebSockets, and JSON. The roadmap also places a lot of emphasis on REST, according to a source familiar with the matter.
 



Java Programming Language Enhancements in JDK 7
• Binary Literals
• Underscores in Numeric Literals
• Strings in switch Statements
• Type Inference for Generic Instance Creation
• Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
• The try-with-resources Statement
• Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking

Mark Reinhold announced availability of the first JDK 7 developer preview today.
Reason enough for me to give some of the Project Coin features a shot. I won't get into details here, but instead just show some quick examples. Most of them are self-explanatory anyway.


Immutability in Clojure - Part 1, Programming Without Variables
In Clojure, immutability is the default. Once an object or data structure is
created, it cannot be changed. This provides many benefits:



SOLID - OOPS/OOAD Principle
The Object Oriented concepts in all OOPS language follow some common principles. These principles are guidelines for developers and architects which they need to understand as they grow their understanding of the language.

The SOLID principles are the most talked about in the Enterprise Java world. These principles deal with cohesion, coupling, inheritance, abstract types in the Object Oriented Analysis and Design (OOAD)



A Case for WinForms
When DevExpress released their roadmap for 2011, WinForms barely got a mention. As a ten year old technology that is basically abandoned by its creator this isn't too surprising. But what it interesting the amount of negative feedback that generated. A lot of DevExpress's customers just don't see WPF or Silverlight as a viable replacement for their major applications.

Seven years ago Avalon was announced. Now known as WPF and Silverlight, it represented a major evolution in the design and development of graphical user interfaces. Combining the declarative style of HTML programming with WinForm's ability to create custom controls has proven to be very effective. With three major versions of WPF and four of Silverlight now in production, one would not expect the technology to be pretty solid.

Unfortunately there continues to be serious performance concerns, both in terms of processor and memory usage. While very real on their own, these concerns are exaggerated by the steep learning curve. Even minor design flaws have a bad tendency to multiply the amount of resources needed for a given screen.

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.