lundi 28 juin 2010

Veille technologique semaine 25

Pour le bulletin de la semaine 25, je vous propose les sujets suivants :
  • sortie de la version 3.6 d'eclipse : Helio avec des compléments, entre autre, sur les outils Java.
  • Les méthode agiles : comment intégrer le changement, comment accepter le changement pendant le développement. Il ne fait pas résister au changement ou le supprimer, il faut le prendre en compte dans le processus de développement.
  • La modélisation du domaine : les 10 commandements.
  • Le HTML 5 : la nouvelle plate-forme de développement ? Le browser devient une machine virtuelle.
  • Java et le threading : c'est toujours un exercice très difficile. Comment être thread safe ? C'est d'abord une question de définition.
  • Les évolutions du langage Java du JDK 7 : ce qui est déjà implémenté. Il reste plusieurs évolutions à compléter, en particulier l'Automatic Resource Management : comment gérer automatiquement les ressources d'entrée / sortie (déjà présent dans C#.
  • Le logging : c'est toujours d'un usage à préciser.
  • Comment la réduction du nombre de ligne de code augmente la qualité du logiciel :  suppression du code technique inutile.
  • Pour les IHM : le JDK 7 et la décoration des JavaBeans Swing avec le JLayer.

Bonne lecture.


Helios: The Train Has Arrived
The Eclipse Helios release is now available for download. Each year I am amazed how the Eclipse community is release on such a predictable schedule. Congratulations to all that help make it happen.

Helios is the biggest Eclipse release ever! We have over 39 different project teams participating, more than 33 million lines of code, 490 committers, 108 of those committers were individuals and the rest of commiters work for 44 different organizations. The amazing thing is that this is the 7th year in a row the Eclipse platform has been release the last week of June, never missing a schedule release date. What other software organization can make that claim!!



Eclipse 3.6 : Helio Java development tools
Here are descriptions of some of the more interesting or significant changes made to the Java development tools for the 3.6 release of Eclipse. They are grouped into:
  • Java Editor
  • Java Formatter
  • Java Refactorings
  • Java Compiler
  • Java Views and Dialogs
  • JUnit
Justification de l'intérêt des méthodes agiles
On peut définir une méthode agile comme une démarche pour développer du logiciel :
de manière itérative et incrémentale, par des équipes responsabilisées s'appuyant sur un cérémonial documentaire minimal mais pratiquant une collaboration poussée, avec l'objectif de répondre, dans un délai contraint, aux besoins qui peuvent changer des utilisateurs, tout en produisant du logiciel de grande qualité.
  1. Les méthodes agiles, c'est de l'ingénierie du logiciel
  2. L'agilité est un mouvement majeur
  3. L'agilité apporte de la valeur

En résumé
L'agilité est la capacité à répondre au changement, et même à le favoriser, pour mieux s'adapter à l'environnement qui est de plus en plus turbulent : dans notre époque de l'information, l'avantage compétitif vient de la vitesse et de la flexibilité.

How to create a good domain model. Top 10 advices
Domain modeling is the most important part of software design. Having a good model allows developers and business to have a common language, which in turn, makes much simpler the communication of requirements and the maintenance of the application.
Having a good model is synonym of having a low representational gap. Having a low representational gap means that the main concepts and their relationships from the real business model are represented almost identically in the software domain model.
Creating a good domain model is one of the most difficult challenges developers have to face. What follows are some advices to create a good domain model.


HTML5 : la promesse d'un browser qui devient VM
Hier avait lieu une présentation de Peter Lubbers sur HTML5. Une présentation très sympathique qui permettait de repasser en revue les nouveautés d'HTML5, et elles sont nombreuses.

Java theory and practice: Characterizing thread safety
Thread safety is not an all-or-nothing proposition.
Summary: In July our concurrency expert Brian Goetz described the Hashtable and Vector classes as being "conditionally thread-safe." Shouldn't a class either be thread-safe or not? Unfortunately, thread safety is not an all-or-nothing proposition, and it is surprisingly difficult to define. But, as Brian explains in this month's Java theory and practice, it is critically important that you make an effort to classify the thread safety of your classes in their Javadoc.

Project Coin: Small Changes in JDK 7

Implemented Proposals
  • Strings in Switch
  • Improved Type Inference for Generic Instance Creation
  • Binary Literals
  • Underscores in numbers
  • Language support for JSR 292

Yet-To-Be-Implemented Proposals
  • Automatic Resource Management
  • Simplified Varargs Method Invocation
  • Collection Literals
  • Indexing access syntax for Lists and Maps

The Art of Logging
  • Contents
  • Introduction
  • Overview
  • What is logging?
  • A structured approach to logging
  • What should I be logging?

    • The importance of context
    • Logging in a concurrent environment
    • Why not log everything?
    • Not all exceptions are errors
    • Get organised with named loggers
    • Unit test your logging code
    • Conclusions


    Better Software with Less Code
    How to simplify MDD for speeding Java Enterprise Development?

    A notable problem of Java Enterprise Development is its inherent complexity. Either if you use Java EE standard or Spring, your development team will never be as productive as a VisualBasic, PHP, Ruby&Rails, 4GL or even COBOL development team. Complexity of Java Enterprise requires very skilled developers, moreover these developers need to write a lot of code.

    The ideal solution for this problem could be the Model-Driven Development approach. Basically MDD states that just the model part of an application has to be developed, and the rest of the application will be generated from this model. In this way, the developers write less and simpler code, nevertheless a powerful Java Enterprise Application is created.


    Exploring JDK 7, Part 3: Decorating Swing Components with JLayer
    Oracle's release of JDK 7 is expected to occur this coming Fall. This new release will offer a suite of new features for you to learn. In Part 3 of this four-part series, Jeff Friesen focuses on JLayer, a universal decorator for Swing components.


jeudi 17 juin 2010

Veille technologique semaine 24

Je vous propose pour la semaine 24, les sujets suivant :
  • Oracle confirme son engagement sur les technologies Java : JavaFX, Java Real Time ... Il y a 9 millions de développeurs Java, 7 milliards d'équipements Java dont 800 millions de PC.
  • Le processus de développement en cascade (waterfall) versus Agile.
  • Le DOD parle de développement Agile pour ses systèmes Command and Control : la capacité à gérer opérationnellement  le changement ?
  • Sortie de NetBeans 6.9 : composeur JavaFX, intégration OSGi.
  • La délégation en scala.
  • Les transaction mémoire et le projet multiverse : comment augmenter la productivité en délégant aux transactions mémoire les problèmes lié à la gestion des threads.
  • Les nouvelles fonctionnalités du JDK 7 implémenté dans les derniers build Milestone 5. d'Oracle.
  • Sur le chemin des closures du JDK 7 : un exemple par Oracle.
  • Une autre proposition d'évolution du langage Java : les "public defender methods".
  • La délégation en scala.
  • Un Quiz sur la méthode equals() en Java.
Bonne lecture.


Java Hits the Road
Java technology's use from printers and routers to ATMs, large military and
commercial aircraft to deli meat scales and home automation systems, Java's feature set, built-in networking and security, and cross-platform portability power
embedded computing.


Waterfall vs. Agile: Development and Business
We saw in the previous article the main differences between agile and waterfall. In the following articles we are going to take a deeper look by focusing on the four main actors in software development: Development, Business, QA, and Management. This article will start with Development and Business.


The "Command and Control" Military Gets Agile
Agility is a term that is gaining traction in some very unusual places. The military is suddenly taking Agility (big "A") very seriously. The military defines Agility as "the ability to successfully respond to change". The term "command and control" is used so commonly in the military that is abbreviated to "C2" in common usage. There is also a C2 Journal, a journal all about Command and Control. The C2 Journal has had many articles on Agility recently.

Earlier this year, in March, a "Precis" was published by the Department of Defense Command and Control Research Center entitled The Agility Imperative. This document describes Agility as related to security and war. What is striking is the clarity of the language relative to software agility.

Agile C2 ... refers to the capability of a force to adjust to and manage changing operational conditions.


The Best of NetBeans 6.9
Congratulations to the NetBeans developers for their hard, and speedy work! It seems like just yesterday that they were announcing the release of NetBeans 6.8 (6-7 months ago, actually). Now you can get your final release of NetBeans 6.9 today and experience the wonders of OSGi integration and proper JavaFX tooling. Those are just some of the awesome features in the latest release of Oracle's open source development platform. Here is a shortlist of some of the hottest new features for developers in NetBeans 6.9.

Other significant new features:
  • Felix 2.0.3 OSGi support, experimental Equinox support
  • NetBeans Platform-based applications generate installers for most common operating
  • systems
  • Enhanced support for consuming web applications and connecting to databases
  • Improved code formatting
  • Support for Contexts and Dependency Injection (CDI) (JSR-299)
  • Spring Framework 3.0 support
  • JavaFX 1.3 support
  • The Best of NetBeans 6.9 17/06/10 07:00
  • Bundled GlassFish Server Open Source Edition 3.0.1
  • Easy regeneration of JPA entities after database change
  • REST web services support for RCP applications
  • Java Debugger breakpoint grouping, debugger attach parameter history
  • Support for annotation processors in the editor, configurable in the Project Properties
  • New Applet and Web Start (JNLP) support
  • Improved navigation in Stack Trace Analyzer and URLs, Go To Overridden/Implemented
  • Method action
  • Refactoring and find usages for CSS and HTML-like languages
  • Code completion and hyperlinking for id and class selector attributes
  • Refactoring inline CSS styles
  • PHP Zend Framework support
  • New PHP formatter with many formatting rules
  • Ruby on Rails 3.0 support
  • Unit test integration with C/C++ projects
  • Enhanced C/C++ remote development including remote file download and browsing
  • Improved support of makefile targets and Fortran

Multiverse : Software Transactional Memory for Java
Multiverse is a Java based Software Transactional Memory (STM)
implementation that wants to realize the following goals:
1. Seamless integration in the Java language:
2. Language independent:
3. Framework:

Mission statement
1. Reduce complexity of concurrency control
2. Seamless integration in the Java Language.
3. To be integrated in other JVM based languages
4. Production environment quality.
5. Provide a framework for STM experiments.

60 Second guide to Multiverse



Exploring JDK 7, Part 1: New Language Features
Oracle's release of JDK 7 is expected to occur this coming Fall. This new release will offer a suite of new features for you to learn. Part 1 of this four-part series introduces you to three of the new language features: binary literals, switch on string, and underscores in integer literals.

This article begins a four-part series that introduces you to some of these features. Specifically, the article focuses on three of the new language features: binary literals, switch on string, and underscores in integer
literals.


Java 7 : Oracle pushes a first version of closures
2 days ago, Oracle pushed a first version of the closures implementation. We can see the evolving syntax in the test cases they made for the Java compiler. You can see these test cases here.
This revision supports the following features (copied from revision) :
  • Function types syntax
  • Function types subtyping
  • Full support for lambda expression of type 1 and 2
  • Inference of thrown types/return type in a lambda
  • Lambda conversion using rules specified in v0.1.5 draft
  • Support references to 'this' (both explicit and implicit)
  • Translation using method handles

Interface evolution via "public defender" methods
Problem statement
Once published, it is impossible to add methods to an interface without breaking existing implementations. The longer the time since a library has been published, the more likely it is that this restriction will cause grief for its maintainers.
The addition of closures to the Java language in JDK 7 place additional stress on the aging Collection interfaces; to add closures without extending the Collections classes to take better advantage of closures (e.g., methods like forEach, map, filter, reduce, etc) would be seen as anticlimactic by the community.
Static extension methods have been proposed as a means of creating the illusion of adding methods to existing classes and interfaces, but they have significant limitations – for example, they cannot be overridden by classes that implement the interface being extended, so implementations are stuck with the "one size fits all" implementation provided as an extension. In general, static-ness is a source of all sorts of problems in Java, so adding more static mechanisms seems like a step in the wrong direction.


Applying Scala to solving real world problems: Making delegation super easy


Java Quiz #37
Voici un nouveau quiz, pour bien finir le mois de mai avant d'entamer ce beau mois de juin. La  classe ColoredPoint ci-dessous pose un problème assez subtil. Lequel ?