vendredi 27 mars 2009

Veille technologique semaine 13


Pour le bulletin de cette semaine, après l'actualité, je vous propose un spécial JDK 7 avec les articles suivants :
  • La perte de savoir faire des entreprises : c'est un constat de plus en plus répandu. Cela touche également le logiciel.
  • La sortie de silverlight 3 par Microsoft pour la réalisation d'application internet riche (au sens de l'expérience utilisateur) : RIA (Rich Internet Application). le 3D, le multimédia et le mode déconnecté sont ajoutés.
  • Différent articles au sujet du prochain JDK numéroté 7 : prévu pour le premier trimestre 2010. La liste des fonctionnalités n'est pas encore fixées, et la liste est longue. Il est possible de faire des propositions sur les évolution du langage Java, jusqu'à fin mars .
  • Swing et JavaFX, c'est quoi l'avenir sur le poste bureautique ?


Bonne lecture.


La prolétarisation dans les sociétés informatiques
Par prolétarisation, j'entends le processus qui conduit à la perte de connaissance critique et de savoir-faire.

Au début de la phase d'industrialisation, le prolétaire est celui qui a vu son savoir-faire passer dans la machine. En conséquence de quoi on ne l'a plus payé pour son savoir faire mais pour sa simple force de travail qui ne le distinguait dès lors plus d'un autre travailleur, et donc pouvait être mis en concurrence permanente.

C'est quelque chose que l'on peut constater : dans tout marché, dans la mesure où il s'industrialise, il y a une prolétarisation non seulement des utilisateurs et des consommateurs mais également de ceux qui font partie de la chaîne de conception et d'ingénierie. Aujourd'hui un garagiste ne répare plus les voitures : il branche une machine à diagnostic et vous indique le module à changer si son appareillage ne peut faire la réparation en réinitialisant le module incriminé.

Or ne peut pas être architecte (que ce soit de l'architecture réseau, applicative ou même de l'architecture des données) en étant incapable de porter un regard critique. Cela passe nécessairement par la capacité à discuter et à émettre des avis critiques, ce que ne sont pas capables de faire les experts techniques maîtrisant les solution d'un seul éditeur de logiciel.



RIA : Sortie de Silverlight 3 en Beta et d'Internet Explorer 8

Vnunet.fr consacre un article à la sortie de la version beta de Silverlight 3. Microsoft a dévoilé cette nouvelle version à l'occasion de l'évènement Mix 09. Celle-ci est aussi disponible pour mac.
Pour faire court, cette nouvelle version apporte les fonctionnalités suivantes :

  • de nouvelles fonctions 3D (animation et graphisme)
  • support des vidéos haute définition et plein écran
  • et le mode déconnecté.
Microsoft a également profité de Mix 09 pour présenter Internet Explorer 8. Présenté comme plus rapide, facile et fiable par Microsoft, IE8 a amélioré son système d'onglets évitant la perte de tous les onglets en cas de plantage.
Cependant, certaines controverses demeurent et les standards ne sont toujours pas aussi bien respectés que ses concurrents : il n'obtient que 21 / 100 à l'Acid Test 3 contre 71 pour Firefox 3 et 100 / 100 pour Safari 4.0. En outre, IE8 représente également, pour les développeurs web, la nécessité de tester et valider le comportement de leurs applications web sur trois moutures d'IE, les versions 6 et 7 étant toujours largement répandues.


OpenGL 3.1 Released Plus New Audio Standard
Nine months ago the Khronos Group released the specification to OpenGL 3.0. OpenGL 3.0 brought version 1.30 of the GL Shading Language, the introduction of Vertex Array
Objects, texture arrays, more flexible framebuffer objects, and a number of other graphical features. What OpenGL 3.0 didn't bring was a major API revision that many developers had expected, and it was also arrived many months late. Today though, Khronos has announced OpenGL 3.1.


Spécial JDK 7 :

Year in Review: What to expect in Java SE 7

An overview of features in and out of the next Java specification

  • Better dependency management
  • Project Jigsaw and the 'module' keyword
  • (More) NIO APIs
  • Tackling the time dimension
  • Parallel processing
  • Better precision through annotations
  • Simplifying Swing
  • Java Management Extensions (JMX) updates
  • Language changes
  • Dynamic-language support
  • Java SE 7 and the future of Java

Java 7

This page lists the proposed features in Java 7 and information about them. At this point, no Java 7 JSR has been created (although Danny Coward apparently is working on it). So, consider this a list of possible features and libraries, not the actual future contents of Java 7.


JDK 7 Schedule : 1Q 20010
The primary goal of this Project is to produce an open-source implementation of the next major revision of the Java SE Platform.


JDK 7 Features
This is the list of features being developed by Sun, and others, for JDK 7. When the Java SE 7 Platform JSR is submitted then these features will be proposed therein, except for those listed as either VM-level or implementation specific.


Presentation: Evolving the Java Platform

The current status of the JVM regarding languages running on top of it and the need to evolve in order to support dynamic languages.
In this presentation recorded at QCon London 2008, Ola Bini talks about the current status of the JVM regarding languages running on top of it and the need to evolve in order to support dynamic languages.


What will be in Java SE 7 (subject to change) Posted on 20 Mar 2009



New Features in Java 7.0 - Part 1
This article discusses the new features that are available in Java 7.0. Java 7.0 comes with bunch of new features – language level changes as well as API level changes and this article concentrates on the new API features such as Cache API, New Date and Time API and New IO 2 as well as the language level changes in the form of Super packages. The readers are assumed that they are more familiar with the Java 5.0 language level changes such as Generics and Annotations. This article covers few of the new features in Java 7.0 and the remaining set of new features will be covered in the next article. It is likely that the APIs may undergo changes before the formal release of Java 7.0 happens.

The following new features will be discussed in detail in this article.
  • Cache API
  • Date and Time API
  • New IO2
  • Super Packages

Introduction to Java Module System in Java 7.0

This article explains the new Java Module System that will be included in the Java 7.0 release. Modules are new to the java language and they provide a standard for developing and deploying applications. The article will explain the various sub components that are available as part of the Java Module System's architecture. The various sections discussed in the article will provide in-depth details about the module definition, the metadata associated with the module, the versioning system and the repositories for storing and retrieving the module definitions.

The architecture of Java Module System consists of three main components:
  • Java Module
  • Versioning System
  • Repository

Java on the Desktop, the past, the present and the future - interview with Richard Bair

In this interview Richard Bair answers my questions on Swing, SwingX, JavaFX and Java on the desktop in general, saving some of the announcements for the next week's Devoxx conference. We wanted to do this interview immediately after my thoughts on the state of core Swing, but the JavaFX release has postponed it up until now.

vendredi 20 mars 2009

Veille technologique semaine 12


L'actualité du monde logiciel ne s'arrête pas, je vous propose les sujets suivants :
  • IBM est en discussion pour racheter SUN pour 6,5 milliards de dollars.
  • Un livre qui vient de sortir, écrit par Robert Cecil Martin, traduit en français "coder proprement" dont la lecture est obligatoire. C'est un expert reconnu par la communauté qui propose des bonnes pratiques qui ont données des résultats.
  • un article sur le Domain Driven Design : comment séparer correctement les préoccupations avec un tissage de code réalisé par une technologie de programmation par aspects (AOP) dont les points de coupures sont réalisés par des annotations (@).
  • C#4 propose des API pour exprimer le principe de la programmation par contrat : les préconditions, les post conditions et les invariants sont disponible à l'aide d'une librairie. Exemple : string GetDescription(int x){ Contract.Requires(x>0); Contract.Ensures(Contract.Result<string>() != null);
  • Les nouveaux langages qui s'execute dans une JVM canditat à l'entrée dans les entreprises : c'est une évolution des JVM qui deviennent multi-langages (comme DotNet).
  • le nouveau garbage collector prévu pour le JDK 7 : Garbage First, donne de très bon résultat et SUN l'intègre dans le JDK 6 update 14 actuellement en beta. C'est un garbage collector qui est capable de réduire le temps de latence à quelques millisecondes au lieu de quelques dizaines de milliseconde actuellement.
Bonne lecture.


IBM en discussion pour racheter Sun

IBM serait intéressé par racheter Sun, c'est ce qu'affirme le Wall Street Journal citant des sources proches de ces sociétés. Des discussions seraient en cours mais rien ne garantit qu'elles aboutissent. Toutefois, dans le cas contraire, l'annonce pourrait se faire dès cette semaine.

IBM serait prêt à mettre 6,5 milliards de dollars sur la table (4,9 milliards d'euros) pour acquérir la totalité de Sun. Et de renforcer ainsi sa position face à HP. Sun aurait précedemment abordé HP et Dell pour se faire racheter affirme le quotidien économique. Sun a affiché des pertes de 209 millions de dollars sur son second trimestre fiscal.



Nettoyez votre code et devenez plus performant !
Si un code sale peut fonctionner, il peut également compromettre la pérennité d'une entreprise de développement de logiciels. Chaque année, du temps et des ressources sont gaspillés à cause d'un code mal écrit. Toutefois, ce n'est pas une fatalité.

Grâce à cet ouvrage, vous apprendrez à rédiger du bon code, ainsi qu'à le nettoyer "à la volée", et vous obtiendrez des applications plus robustes, plus évolutives et donc plus durables. Concret et pédagogique, ce manuel se base sur les bonnes pratiques d'une équipe de développeurs aguerris réunie autour de Robert C. Martin, expert logiciel reconnu. Il vous inculquera les valeurs d'un artisan du logiciel et fera de vous un meilleur programmeur.

Coder proprement est décomposé en trois parties. La première décrit les principes, les motifs et les pratiques employés dans l'écriture d'un code propre. La deuxième est constituée de plusieurs études de cas à la complexité croissante. Chacune d'elles est un exercice de nettoyage : vous partirez d'un exemple de code présentant certains problèmes, et l'auteur vous expliquera comment en obtenir une version
saine et performante. La troisième partie, enfin, sera votre récompense. Son unique chapitre contient une liste d'indicateurs éprouvés par l'auteur qui vous seront précieux pour repérer efficacement les défauts de votre code.

Après avoir lu ce livre, vous saurez
• faire la différence entre du bon et du mauvais code ;
• écrire du bon code et transformer le mauvais code en bon code ;
choisir des noms, des fonctions, des objets et des classes appropriés ;
• mettre en forme le code pour une lisibilité maximale ;
implémenter le traitement des erreurs sans perturber la logique du code ;
• mener des tests unitaires et pratiquer le développement piloté par les tests.

Véritable manuel du savoir-faire en développement agile, cet ouvrage est un outil indispensable à tout développeur, ingénieur logiciel, chef de projet, responsable d'équipe ou analyste des systèmes dont l'objectif est de produire un meilleur code.

Au sommaire
• Code propre
• Noms significatifs
• Fonctions
• Commentaires
• Mise en forme
• Objets et structures de données
• Gestion des erreurs
• Limites
• Tests unitaires
• Classes
• Systèmes
• Émergences
• Concurrence
• Améliorations successives
• Au coeur de JUnit
• Remaniement de SerialDate
• Indicateurs et heuristiques
• Annexe A : Concurrence II
• Annexe B : org.jfree.date.SerialDate
• Annexe C : Références des heuristiques


Domain-Driven Pointcut Design
  • What is a pointcut language?
  • The problems with using signature patterns in pointcuts
  • Metadata to the rescue?
  • Metadata and Ubiquitous Languages
  • Bringing it all together: Domain-Driven Pointcut Design

Adopting New JVM Languages in the Enterprise

I'll limit my discussion to these representative (and best known) alternative languages for the JVM.
  1. JRuby – Ruby running on the JVM.
  2. Scala – A hybrid object-oriented and functional language that runs on .NET as well as the JVM. (Disclaimer: I'm co-writing a book on Scala for O'Reilly.)
  3. Clojure – A Lisp dialect.

I picked these languages because they seem to be the most likely candidates for most enterprises considering a new JVM language, although some of the languages listed below could make that claim. There are other deserving languages besides these three, but I don't have the time to do them justice. Hopefully, you can generalize the subsequent discussion for these other languages.


.NET 4 Feature Focus: Code Contracts
Last year we started talking about Spec#, a language based on C# that supports design by contract. Design by contract builds on top of concepts like static typing, where certain actions cannot be performed unless it can be verified at compile time. Contracts usually take the form of pre- and post conditions such as a parameter or return value never being null or only containing a certain range of values.
Rather than force developers to learn a whole new language such as Spec#, Microsoft is working on a language-agnostic library that can beleveraged by any .NET language. In some ways contracts look like assertions, but they are very different under the covers. Contracts are supported by a combination of static code analysis, which can be both inside and outside the compiler, as well as by testing frameworks. They are also executable, meaning they behave like assertions when running a debug build.


New garbage collector G1 available in JDK7 / OpenJDK
Garbage collection forms a big part of languages like Java that support memory management. This post by Jeremy Manson discusses the new garbage collector that will form part of JDK 7, and which is already available in the latest OpenJDK drop.