vendredi 7 mars 2008

Veille technologique semaine 10

Le sujet principal d'aujourd'hui est la définition de l'architecture logicielle du 21 siècle définie de façon indépendante des solutions technologiques. On sait s'en rendre indépendant, faut-il encore le faire. Le prochain langage de programmation devra parler le vocabulaire de l'architecture logicielle : composant, services, évènements...
  • Un langage de programmation qui propose le vocabulaire d'architecture logiciel : le mot component devient un mot clé du langage. Il est prouvé que l'augmentation de productivité passe par l'augmentation du niveau d'abstraction. Arrêtons de faire des architectures logicielles centré sur la technologie, mais concentrons nous sur le métier. Il est aberrant, au 21 siècle, d'être obligé de faire la conception logicielle d'un système à partir des solutions techniques retenues pour la distribution de données, la communication remote, la persistance, etc... Le deuxième article, du même auteur, parle de technologie indépendance alias middleware agnostique.
  • Le draft public final du JSR 318 sur les EBJ 3.1 est sortie avec plus complément dont l'asynchronisme sur les services des EJB. L'asynchronisme est donc bien un aspect indépendant de la notion de service (ou d'évènement).
  • Faire des fenêtres transparentes et non rectangulaire avec le dernier update (10) du JDK 6.
  • Une implémentation d'un Operating System (OS) entièrement en C#
  • Une implémentation d'un Operating System (OS) entièrement en Java
  • Le JSR 296 sur le framework pour IHM Swing qui commence à se faire connaître, pour le JDK 7.
  • Duke est invité à Hollywood : Blu-ray Disk Java (BDJ), avec le standard pour le câble (OpenCable Platform : OCAP).

Bonne lecture.

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.

What can be done? As you develop the architecture, evolve a language that allows you to describe systems based on this architecture. Based on my experience in a number of real-world projects, this makes the architecture tangible and provides an unambiguous description of the architectural building blocks as well as the concrete system while still staying away from technology decisions (which then can be made consciously in a separate step).

Getting Started
We started with the notion of a component. At that point the notion of components is defined relatively loosely. It's simply the smallest architecturally relevant building block, a piece of encapsulated application functionality. We also assumed that components can be instantiated, making components the architectural equivalent to classes in OO programming.

Software Architecture
A pattern language for building sustainable software architectures
there is a difference between the functional architecture of a system, and the technical architecture.

Current state of the practice
Software architecture is too much technology driven.
Software architecture often leads to too early (and wrong) technology decisions.

Elaboration: In the first phase, the elaboration, you define a

Technology-Independent Architecture
You have to define a software architecture for a non-trivial system or product line.

How do you define a software architecture that is well-defined, longlived and feasible for use in practice. The architecture has to be reasonable simply and explainable on a beer mat.


  • You want to make sure that the architectural concepts can be communicated to stakeholders and developers
  • Implementation of functional requirements should be as efficient as possible.
  • The architecture must "survive" a long time, longer than the typical hype or technology cycles
  • The architecture might have to evolve with respect to QoS levels such as performance, resource consumption or scalability.

Rationale, Discussion and Consequences
If you use less complicated technology, you can focus more on the structure, responsibilities and collaborations among the parts of your systems. Implementation of functionality becomes more efficient. And you don't have to educate all developers with all the details of the various technologies that you'll eventually use..

There are a couple of simple guidelines that help you come up with a programming model that stands a good chance that it can be mapped to various execution platforms:

  • Always develop against interfaces, not implementations
  • Never create objects yourself, always use factories
  • Use factories to access resources (such as database connections)
  • Separate concerns: make sure a particular artifact does one thing, not five.

A good way to learn more about good PROGRAMMING MODELS and TECHNOLOGY-INDEPENDENT ARCHITECTURE can be found in Eric Evans wonderful book on Domain-Driven Design.

One of the reasons why a technology decision is made early in the project is the "political pressure" to use a certain technology.

Cosmos (C# Open Source Managed Operating System) is an operating system project implemented completely in CIL compliant languages. The team is committed to using C#, however any .NET language is usable.

JNode :
JNode is a free, open source Java technology based OS (Operating System) written fully in Java language (with a very small assembler nano-kernel). This release features over 99 percent java 6 api compatibility, hotswapping, nfs, hfs+, even more openJDK integration, jetty6 and of course bug fixes and improvements.

Sun has posted the early draft review of JSR-318 Enterprise JavaBeans 3.1.
New features in 2.0 include:

  • A simplified Local view that provides Session Bean access without a separate Local Business interface.
  • Packaging and deployment of EJB components directly in a .war without an ejb-jar.
  • A Singleton session bean component that provides easy access to shared state, as well as application startup / shutdown callbacks.
  • Automatically created EJB Timers.
  • Calendar based EJB Timer expressions.
  • Asynchronous, reliable, session bean invocations.
  • The definition of a lightweight subset of Enterprise JavaBeans functionality that can be provided within Java EE Profiles such as the Java EE Web Profile.

Comments are due by March 30.

Translucent and shaped windows in core Java
I first spotted it about a month ago, and today's build 12 of JDK 6.0u10 delivers on the promise - translucent and
shaped windows with core Java classes only!

Présentation de la JSR-296, Swing Application Framework

  • Quel est avant tout la justification d'un framework pour swing ?
  • Swing a-t-il évolué depuis 5 ans ?
  • Y-a-t-il une comparaison avec Eclipse RCP, Spring RCP ou Netbeans Plaform ?
  • Caractéristiques du framework
  • Gestion du cycle de vie
  • Les Ressources
  • Gestion des Actions
  • Enregistrement de l'état

Duke goes to Hollywood
Blu-ray Disc supports Blu-ray Disk Java (BDJ), an advanced content platform based on Java ME technology and largely compatible with the OpenCable Platform (OCAP) standard.

Time Warner Cable won a seat on the JCP's Java EE/SE Executive Committee in last year's elections, and we're looking forward to their contributions in the coming years. Cox Communications, another major player in the TV industry recently led JSR 242: Digital Set Top Box Profile.

Java is everywhere...

Aucun commentaire: