vendredi 22 mai 2009

Veille technologique semaine 21

Pour le bulletin de la semaine 21, je vous propose les articles suivants :
  • La conception des API est un exercice difficile, qui doit être fait avec un certains nombres de règles.
  • JavaFX : technologie controversé ? Quel avenir ?
  • Un exemple d'utilisation de Java pour les applications interactives pour la TV
  • La sortie d'Androide 1.5 : la plate-forme de Google pour les téléphones portables ou autres PDA.
  • Un article sur le model driven : force et limitation ?
  • Un article sur Clojure, un langage qui aide la programmation concurrente. Une bonne inspiration pour Java.
  • Un compilateur pour le langage D pour la plate-forme DotNet. Le langage D est une proposition d'évolution du C++ (sans compatibilité).
  • La programmation par contacts bientôt en natif dans DotNet (C#).
  • Le projet Axum de Microsoft pour la programmation concurrente (parallel programming ) prise en charge par le langage C#.
  • La JVM et la gestion de la mémoire native.
  • Le look and feel Numbus, par défaut pour le JDK 7 ?
  • Un article au sujet des annotations de Spring 2.5 : comment simplifier l'utilisation de la configuration des objets.
Bonne lecture.


Concevoir des APIs efficaces

John De Goes vient de publier une série de deux articles (première partie et deuxième partie et troisième partie) portant sur les bonnes pratiques de conception d'APIs. Il s'appuie sur un exemple d'API de configuration pour illustrer son propos. Les points qu'il met particulièrement en avant sont :

  • Il est important de sélectionner le niveau d'abstraction approprié et d'assurer l'uniformité de celui-ci sur l'ensemble de l'API, ainsi que de définir et respecter une responsabilité pour chaque classe. Ceci concerne la granularité des méthodes, le type d'objets manipulés en entrée et en sortie, ainsi que la présence et le type d'exception éventuellement renvoyée.
  • N'offrir qu'une seule possibilité pour chaque besoin, afin d'éviter la confusion chez l'utilisateur de cette API.
  • S'appuyer sur les possibilités offertes par le langage pour empêcher certaines mauvaises utilisations d'une API.
  • L'API doit être la plus intuitive possible afin de minimiser autant que possible le besoin pour l'utilisateur d'avoir à se plonger dans une documentation.
Certaines de ces idées sont déjà partagées par de nombreux développeurs, mais comme c'est souvent le cas dans l'énonciation de bonnes pratiques ou de pattern, tout l'intérêt réside ici dans la formalisation apportée par l'auteur.

Les lecteurs intéressés par cette problématique pourront se tourner vers le livre de Jaroslav Tulach, Practical API Design, qui apporte l'intéressant retour d'expérience d'un architecte de NetBeans, ou encore How to Design a Good API and Why it Matters par Joshua Bloch (auteur de Effective Java).


JavaFX : informations et controverses

Depuis plusieurs mois, nous vous rapportons les différentes informations et controverses à propos de JavaFX. Cette technologie RIA, développée par Sun, et introduite en décembre 2008 fait beaucoup parler d'elle car personne ne sait dire aujourd'hui ce qu'il adviendra de JavaFX dans les mois et années à venir.

Les propos particulièrement négatifs dont JavaFX a été victime à ses débuts se font moins nombreux, non pas parce que cette technologie a convaincu, mais parce qu'elle n'est plus au centre des débats. En fait, ceci est bénéfique puisque cela permet d'observer plus sereinement les différents exemples postés régulièrement par la communauté JavaFX naissante. Il ressort de ce tour d'horizon que les capacités actuelles de JavaFX ne prêtent pas à critique : les fonctionnalités de graphisme et d'animations qui sont offertes semblent satisfaire de nombreux développeurs. Le problème porte principalement sur les manques et les promesses non tenues à ce jour :

  • la portabilité de JavaFX sur plusieurs environnements (_desktop_, web, mobile, et TV, le fameux 'All the screens of your life') n'est pas assuré puisque le déploiement est impossible sur mobile, faute de device compatible. Le fonctionnement sur téléviseur est lui toujours prévu dans une version ultérieure.
  • les composants graphiques de haut niveau sont absents. Il s'agit pourtant d'un élément indispensable pour le développement d'applications RIA.
Joshua Marinacci, un des meneurs de JavaFX chez Sun, a été interviewé par Scott Hanselman dans un podcast. Il annonce que la démonstration de JavaFX sur TV pourrait être faite lors de JavaOne 2009, en juin. Il reconnaît par ailleurs le marketing excessif entourant cette technologie.

Outre ces réflexions d'ordre technique, le rachat de Sun par Oracle constitue une autre source de débats. Personne ne sait quelle décision Oracle prendra quant à JavaFX : soutenir ce projet qui nécessite encore un investissement lourd pour prétendre réellement concurrencer les autres acteurs RIA ou abandonner ce marché. Les différentes opinions sur ce sujet sont présentées et argumentées dans le dernier podcast des Cast Codeurs.


Creating Interactive TV Applications With the Tru2way Platform and OCAP

This article introduces the concept of interactive TV, provides an overview of Tru2way technology, and shows you how to get started with Tru2way application development.

Contents

  • Introducing the Tru2way Platform
  • Comparing OCAP and BD-J API
  • Understanding the Concepts of Interactive TV
  • Creating Your First Tru2way Application: Selecting a Service
  • How to Get Started
  • Summary

Android 1.5 Platform Highlights
The Android 1.5 platform introduces many new features for users and developers.
The list below provides an overview of the changes :
  • User Interface Refinements
  • Performance Improvements
  • New Features
  • New APIs and Manifest Elements

Model Driven Development Misperceptions and Challenges
After many years, it still seems that the level of adoption of MDD is not what would be expected. There are a number of inhibiting factors that limit the usage of MDD, such as the lack of awareness of practical MDD success stories, doubts on how it can be used on a daily basis, lack of funding model for up-front investment, or lack of focus for strategic initiatives.


Clojure: Challenge your Java assumptions
Clojure is a dynamic functional language for the JVM, recently released in version 1.0. Clojure offers a new set of programming techniques for robust code and rapid development. In particular, it has new solutions for multicore computing. Whether you make the shift to Clojure or stick to Java, learning about this new language will challenge your assumptions about the best way to design software.


Language D for the .NET platform.
D is a multi-paradigm language: it has object orientation support, it allows functional and template meta programming and even includes untamed features such as a goto keyword and inline assembly. I heard Walter Bright (the father of D) describing it as a language invented by a compiler implementer (not a language designer). That may be true, and indeed some of the most successful software projects came out of their authors' need to scratch an itch. However, Walter' s description may undersell D, because he definitely designed it with users in mind and not just with what syntax would make parsing easier to implement.


Details on Using Code Contracts
InfoQ informed on the availability of Code Contracts for .NET. This time we want to offer more details on using Code Contracts, an important addition to .NET.


Axum, Microsoft's Approach to Parallelism
Axum, previously known as Maestro, is a Microsoft incubation language project meant to provide a parallel programming model for .NET through isolation, actors and message passing. The language borrows many concepts from Erlang but with a C#-like syntax.
Axum is an imperative language with a C#-like syntax. While it is aware of objects, classes cannot be defined, because the language is domain and actor- oriented instead of being object-oriented. Axum is not a general purpose language being targeted at solving concurrency tasks and is built upon Concurrency and Coordination Runtime (CCR) from Microsoft Robotics. The idea is to make calls to Axum code from other .NET languages when parallelism is necessary.


La mémoire native en Java

Andrew Hall a publié deux articles très intéressants portant sur la gestion de la mémoire native dans la JVM, c'est-à-dire la mémoire consommée par la machine virtuelle mais ne faisant pas partie de la Java Heap et n'étant donc pas gérée par le garbage collector. Les systèmes d'exploitation couverts par ces articles sont Windows, Linux et AIX.

Après avoir fait un rappel sur la gestion de la mémoire par les systèmes d'exploitation, l'auteur explique en détail les différents composants Java susceptibles de consommer de la mémoire native non gérée au sein de la Heap Java. En font partie le bytecode des classes chargées par les classloaders, la mémoire allouée par le code JNI natif, les direct buffers NIO et les stacksde chaque thread. Le problème est que la mémoire totale adressable par un processus 32 bits est de 2 à 4 Go selon les cas. Des crashs de la JVM, dus à un manque de mémoire, peuvent donc parfois intervenir alors que la Java Heap n'est pas pleine.

Les solutions à cette problématique sont passées en revue, parmi lesquelles figurent : réduire la mémoire totale utilisée par la JVM en réduisant la taille de la Java Heap (via -Xmx), réduire l'utilisation de mémoire native non gérée par la Java Heap, repousser la taille limite de la mémoire adressable par le processus de la JVM en passant par exemple à un OS et une JVM 64 bits.

Au-delà des informations fournies par ces deux articles, les lecteurs intéressés par ce sujet pourront étudier le très complet, bien qu'ancien, livre de Bill Venners, 'Inside the Java Virtual Machine', partiellement disponible en ligne.


Activating Nimbus Look and Feel
There are three ways to activate the Nimbus Look and Feel.


Simplifiez votre configuration Spring 2.5 avec les annotations
Spring 2.5 est sorti depuis le 19 novembre 2007 comme nous l'annoncions, il y a quelques temps, dans notre revue de presse. Vous avez comme moi sagement mis à jour vos poms Maven2 vers la dernière release de Spring (normalement et la plupart du temps compatible avec les versions 2.0.x).
Mais avez-vous vraiment profité des nouveautés de cette version en terme de configuration ?

Aucun commentaire: