vendredi 8 février 2008

Veille technologique semaine 6

Pour cette semaine, je vous propose :
  • le démarrage d'un projet européen sur un framework Java temps réel : Jeopard. EADS participe.
  • une analyse sur C# 3.5 qui prend l'avantage par rapport à Java avec le langage de requête intégré LINQ
  • la différence entre la notion d'injection de dépendance et la notion de composant logiciel.
  • le projet JoSQL qui propose des requêtes SQL sur des collections d'objets Java : c'est un exemple de séparation des préoccupations de persistance et de quêtes. Les systèmes de gestion de base de données (SGBD) ont toujours mélanger les deux.
  • SUN annonce un concourt avec une prime de $175 000 pour récompenser la meilleur contribution aux projets open sources Java. Clôture des propositions début mars 2008. Préparer vos cahiers ?
  • James Gosling précise qu'il est pour les closures. Cela a toujours été prévu, mais pas fait pour des raisons de temps.
  • un articles sur les différents algorithmes de garbage collectors : c'est un sujet en évolution et amélioration permanente. Des réductions des perturbations de l'application par le garbage collector sont encore prévue pour le JDK 7.

Bonne lecture.

Open Group to Develop New framework for Java Real Time with Jeopard
Jason Stamper in an article reported that Open Group would be partnered with a consortium of European real-time technology developers, industrial manufacturers, and research organizations to develop a new framework for Java-based real-time applications on modern parallel processor systems.

Supported by the European Commission, the Java Environment for Parallel Real-time Development, Jeopard, project is investing over USD 4.9m in an advanced framework for real-time Java running on multicore and parallel systems.

Jeopard consortium includes four universities and research institutes including University of York, Vienna University of Technology, FZI, and the Technical University of Cluj-Napoca. It also includes three industrial manufacturers including EADS, RadioLabs, and SkySoft, and two embedded systems technology suppliers including aicas and Sysgo.

The project will actively contribute to standards required for the development of portable software in the domain, such as the Real-Time Specification for Java (RTSJ). The Jeopard project will develop a platform-independent software development interface for real-time multicore systems. The interface will be based on existing technologies, including the Real-Time Specification for Java and Safety-Critical Java.

Does .NET With LINQ Beat Java?
There is a question some developers are asking: Has LINQ given Microsoft's latest .NET Framework an edge over Java? Industry experts say "yes," but with some caveats.

Microsoft shipped Language Integrated Query as part of the .NET Framework 3.5 in November. LINQ was originally one of many research projects that the company has under way. LINQ integrates query concepts directly into .NET programming languages using a syntax that is similar to SQL, to simplify the querying of data, objects and XML.

Dependency Injection: New Ground or Solid Footing?
McVeigh is an academic that is working on Architecture Description Languages (ADLs) as part of his Ph.D.

McVeigh provides this definition of a software component:

A component is a unit of software that can be instantiated, and is insulated from its environment by explicitly indicating which services (via interfaces) are provided and required.

A Java or .Net class is not a component per se. A class can describe what it provides by means of its interfaces, but it does not declare exactly what it depends on to run.

A major feature of ADL's is the fact that the connectors are explicit. It's not just loose wire, but a cable with an HDMI connector on the end. The explicit nature of the connectors provide ADLs with interesting architecutal features, including improved testability and improved architecural tooling.

In certain ADL's the connectors can be more functional. They can act like components in their own right, by performing extra functions like filtering or error handling.

  • A major feature of ADL's is the fact that the connectors are explicit.
  • Another major differentiator between ADLs and current DI technology is the notion of a Composite Component.

Finally, McVeigh laments the disconnect between academic and industry in software development. Academics aren't interested in the industry's trodden ground and academic work is inaccessible to industry, and may be considered not worthy of production. Yet it's apparent both could gain by a closer relationship.

What is a software component?
Leaf and Composite Components
Composition is a powerful way to hide complexity.

Spring is slightly unusual in this respect. A Spring bean must be associated with a class, so technically speaking it does not offer composite components, at least not in the way that most ADLs would understand them.

Explicit Connectors
A (Biased and Imperial College-Centric) History of ADLs
It may surprise readers to know that the second version of the Unified Modeling Language (UML) contains a perfectly workable ADL somewhere inside the tangled mess of concepts.

Why not just use an ADL?
Given the extensive research and history behind ADLs, why can't we just use these for our production systems? Well, you couldn't even if you wanted to! At least not unless you work in certain closed commercial environments, or are prepared to deal with academic prototypes. ADLs simply didn't catch on in mainstream software engineering. They were perhaps "before their time", and got swept away in the OO-mania of the period. It also didn't help that they weren't promoted outside of the academic community.

The future of Dependency Injection?

What is JoSQL?
There are many Java applications where the use of SQL statements to perform searching/ordering/grouping and selecting of values from Java Objects would be very valuable. However often times the use of a fully-featured SQL database (free or otherwise) is either inappropriate and/or costly.

It would still be useful to be able to perform SQL like queries on Java Objects however, JoSQL is designed to "fill the gap". JoSQL uses SQL to perform operations on objects that are useful to Java programmers and as such diverges from "normal" RDBMS SQL in some areas, you have been warned!

OpenJDK Community Innovators' Challenge
Do you have a great idea for the OpenJDK Community? The OpenJDK Community and Sun Microsystems, Inc. are pleased to announce the OpenJDK Community Innovators' Challenge, a contest with up to $175,000 in awards, intended to encourage and reward developers working together in solving key problems, initiating new innovative projects that promote new uses for the code, developing curricula and training, and porting the OpenJDK code base to new platforms.

James Gosling: on the Java Road
Closures were left out of Java initially more because of time pressures than anything else.

In the early days of Java the lack of closures was pretty painful, and so inner classes were born: an uncomfortable compromise that attempted to avoid a number of hard issues.

The Closures Controversy

Closures Questions with Joshua Bloch at JavaPolis'07

Garbage Collectors
blog de Jon Masamitsu au sujet des garbages collector des différents JDK.