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:

Aucun commentaire: