vendredi 31 octobre 2008

Veille technologique semaine 44

Pour le bulletin de la semaine 44, je vous propose les articles suivants :
  • une soirée sur Google Web Toolkit (GWT) par le club Java de Paris : le 4 novembre.
  • une conférence gratuite sur l'open sources proposée par Xebia et Skills Matter : le 12 novembre à la Défense.
  • une journée sur le framework Spring à la Défense : le 13 novembre.
  • une présentation sur JEE 6 par SUN le 12 décembre à Paris.
  • La stratégie de Microsoft au sujet du model driven : le modèle devient l'application
  • un article d'IBM au sujet des architectures SOA (Services oriented Architecture) et EDA (Event Driven Architecture) : les deux style d'architectures sont complémentaires : le terme EDSOA (Event Driven Service Oriented Architecture) est proposé par BEA.
  • La programmation concurrente (multi-thread) pour la plate-forme DotNet 4 : le multicore demande au logiciel de prendre en compte cette évolution des architectures des processeurs : pour DotNet 4, cela sera intégré au langage C#.
  • un article sur Java Efficace, deuxième édition, de Joshua Bloch : c'est un livre dont la lecture devrait être obligatoire à tout développeur Java, avec interrogation.
  • un exemple d'utilisation de l'interropérabilité de Java2D et OpenGL (jogl) possible depuis le JDK 6.
  • enfin un exemple de singleton avec les EJB 3.1 : @Singleton, le design pattern est pris en compte par le conteneur EJB.


Bonne lecture.

Rencontres Spring 2008 - 13 novembre - Paris

Le 13 novembre à La Défense auront lieu "les rencontres Spring". Cet événement exceptionnel sera l'occasion de rencontrer les personnes qui sont à l'origine du framework Spring, et de voir quelles sont les grandes orientations du portefeuille de projets Spring dans l'avenir.

En particulier, nous aurons les interventions des personnes suivantes :

· Juergen Hoeller <http://www.springsource.com/people/jhoeller> (SpringSource), co-fondateur et principal développeur du framework Spring, qui parlera de Spring 3.0

· Peter Cooper-Ellis <http://www.springsource.com/management> (SpringSource), senior vice-president of engineering de SpringSource, qui donnera des informations sur la roadmap des produits Spring

· Mark Thomas <http://www.springsource.com/people/mthomas> (SpringSource), principal contributeur au projet Apache Tomcat, qui parlera de l'utilisation de Tomcat en production avec Spring

Les places sont gratuites et obligatoirement en nombre limité! L'événement se passe à Paris-La Défense.


Première Conférence Open Source Exchange!

A l'occasion de l'annonce du partenariat qu'ils ont scellé, Skills Matter & Xebia vous donnent rendez-vous pour ce premier Open Source Exchange à Paris, le 12 novembre 2008. Cet événement gratuit est une occasion unique de partager votre expérience avec des autres experts de l'Open Source. Venez écouter ce qui est nouveau dans le monde de Java EE 6 et GlassFish, eXo Web oS, Hadoop & Groovy.

Cet évènement s'adresse à tout public souhaitant mieux connaître le monde de l'open source. L'évènement est gratuit mais compte tenu du nombre limité de places, il est indispensable de s'inscrire auparavant en remplissant le formulaire suivant.


Journée gratuite "GlassFish et Java" le Vendredi 12 décembre à Paris

chez Sun au 42, avenue d'iéna à Paris.

Sujets traités: GlassFish, Java EE 6, Grizzly Comet, Jersey, OpenMQ, JavaFX, MySQL, OpenSSO, OpenESB, partenaires, retours d'expérience.

Speakers: Roberto Chinnici (spec lead), Richard Bair (tech lead), Paul Sandoz (spec lead), Linda Schneider (tech lead), Jean-François Arcand (tech lead), etc...

Plus de détails et ouverture des inscriptions dans quelques jours, nombre de places (très) limité.



Soirée Google Web Toolkit (04/11/2008)
Mardi 4 novembre 2008, Dans les locaux de l'ISEP




Microsoft's Modeling Strategy
The foundation of Microsoft's vision for their new model-driven service-oriented architecture (SOA) - Oslo project, model driven development would bridge the gap between business analysts and IT, delivering on the SOA promise to align application development with business needs.

Model-driven development is the missing ingredient that the industry has been looking for. Oslo will be the anchor for a new generation of app development that uses model-driven development, but takes it mainstream. Rather than having models being imported and exported and generating code, the model is the application and that breaks down the silos. We're creating a general purpose set of modeling tools, modeling language and repository that can bridge all the various types of models that describe an application and move models to the center of application development. Models then become the app.

[UML is] one of the standards Microsoft needs to support, but it's not the only one. We think of it as one of the important modeling notations, but it's not the only one. Microsoft plans wide support for a range of modeling tools from its own basic Visio diagramming product to UML, but also including other language requirements such as business process modeling notation (BPMN)




Combining Service-Oriented Architecture and Event-Driven Architecture using an Enterprise Service Bus
Service-Oriented Architecture (SOA) and Event-Driven Architecture (EDA) are two different paradigms that address complex integration challenges. How can organizations choose the better approach to meet their needs? Actually they don't have to choose: an Enterprise Service Bus (ESB) allows for the implementation of both the SOA and the EDA concepts.




.NET 4 Feature Focus: Parallel Programming
The Common Language Runtime has always had basic support for parallel programming in the form of locks, threads, and thread pools. With the increasing emphasis on multi-core CPUs, there has been a renewed interest in high-level parallel programming constructs.
The first one announced was Parallel LINQ, also known as PLINQ. Like SQL, parallelization is handled by the language itself without effort by the developer. Simply tack on an AsParallel to the query and everything else just works. Well usually, but just like SQL there are times with additional options need to be specified.



More Effective Java With Google's Joshua Bloch
Joshua Bloch, Google's chief Java architect, is a former Distinguished Engineer at Sun Microsystems, where he led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He holds a Ph.D. in computer science from Carnegie-Mellon University.
Bloch won the prestigious Jolt Award from Software Development Magazine for the first edition of his 2001 book, Effective Java Programming Language Guide, known to many developers as Effective Java, and he is also the coauthor (with Neal Gafter) of the highly regarded book Java Puzzlers.
If there's one book that Java developers repeatedly refer to as their favorite, it's Effective Java.

"Developers tend to reinvent the wheel is the same reason they tend to optimize prematurely: In order to stay sane, most developers have a can-do attitude, and some take it too far. They say to themselves, "Yes, there's a library, but I can do better." Maybe you can, but that doesn't mean you should. Use the standard library unless it's profoundly unsuited to your needs."



Integrating GLPbuffer and Java Graphics2D
This article discusses the incorporation of OpenGL into an ongoing mathematics visualization project, 3D-XplorMath-J. 3DXplorMath is a program to visualize mathematical objects and allow the user to interact with them, created for educational and research purposes. The object is to have a "virtual math museum," organized into "galleries" and "exhibits." The project was begun by Richard S. Palais as a program for Macintosh computers; it was written in the Pascal programming language, with contributions from other mathematicians.

Quick Look at Java 6 and OpenGL
In Java SE 6, JOGL and Java 2D can be used together directly. Java 6 allows Swing objects to now overlay OpenGL rendering. Now rendering of 3D OpenGL graphics can be done directly onto Java 2D graphics, and similarly, Java 2D graphics can be drawn directly onto 3D OpenGL graphics.


EJB 3.1 Singleton Example
As the name implies a javax.ejb.Singleton is a session bean with a guarantee that there is at most one instance in the application. What it gives you that is completely missing in EJB 3.0 and prior versions is the ability to have an EJB that is notified when the application starts and notified when the application stops. So you can do all sorts of things that you previously could only do with a load-on-startup servlet. It also gives you a place to hold data that pertains to the entire application and all users using it, without the need for a static. Additionally, Singleton beans can be invoked by several threads at one time similar to a Servlet.


vendredi 24 octobre 2008

Veille technologique semaine 43


Pour le bulletin de cette semaine 43, je vous propose les sujets suivants :
  • La sortie de Silverlight 2.0 par Microsoft : c'est la première version qui permet d'utiliser un des langages de la plate-forme DotNet (C# par exemple) à la place de JavaScript. Un plug-in eclipse sera disponible.
  • Par réaction, la version 10 de flash est proposé par Abobe : c'est l'une des solutions concurrentes de Silverlight.
  • Sortie du JDK 6 upade 10 : c'est une sortie majeur avec une refonte du JRE qui est maintenant fractionné en plusieurs parties. L'accélération Direct3D est maintenant activé par défaut sur windows.
  • Les Valtech Days 2008 se sont passés sur deux jours : les 21 et 22 octobre dernier. Plus de 300 participants avec 35 sessions pour présenter des technologies, des outils et des processus de développement. Les sessions étaient quatre par quatre, il fallait donc choisir. C'est une moment unique pour avoir un éventail des technologies du moment, avec des retours d'expériences. C'est deux jours qui peuvent vous faire gagner 6 mois à un an en questions ou essais. Prochaine session en 2009.
  • Un résumé des outils de diagnostic du comportement d'une JVM : il faut pouvoir prendre connaissance de ce qui se passe à l'exécution, à l'intérieur d'une JVM.
  • Un exemple de code pour réaliser un exécuter avec un comportement particulier : gestion de la saturation des threads.
  • Quel est l'utilisation des énumérés du JDK 5 : des simples listes de constantes ou plus ? Les énumérés du JDK 5 sont de vraie classes, avec des champs et des opérations. Un énuméré peut implémenter une interface.
  • Dernier exemple de code, en provenance de Joshua Bloch, avec un singleton réalisé par un énuméré. Cela montre que le concept de singleton (une seule instance d'une classe) et le design pattern singleton du Gang Of Four mondialement connu doivent être différencié.

Bonne lecture.


Rich Internet Application (RIA) : Sortie de Microsoft Silverlight 2.0

Microsoft a annoncé cette semaine la sortie de Silverlight 2.

Lors de notre récent contest RIA dans lequel nous avions essayé de dégager les avantages et inconvénients de différents framework RIA, nous annoncions un certain nombre de points négatifs sur la version Silverlight que nous avions utilisée (Silverlight 2 Beta 2). Microsoft comble avec cette release officielle un certain nombre d'entre eux :

  • Microsoft se rapproche du monde Java en proposant un ensemble d'outils permettant le développement Silverlight directement au sein d'Eclipse. Eclipse4SL, de son petit nom, est actuellement disponible en version alpha, la version finale étant prévue pour le printemps 2009. Eclipse4SL contiendra également un éditeur graphique permettant la manipulation et la visualisation du XAML.
  • Microsoft prévoit également d'enrichir son catalogue de contrôles via le Silverlight Control Pack (SCP). Seront disponibles des contrôles du type Accordion, DockPanel, ViewTree ou AutoComplete sous la Microsoft Permissive License (open source).


Un flash Player 10 précipité pour la sortie de Silverlight 2 ?

Adobe a annoncé la semaine dernière la sortie de Flash Player 10 en release sous le nom d'Astro.

Cette nouvelle version comporte des améliorations graphiques et audio :

  • Des nouveaux effets 3D plus fluides et plus performants.
  • Des effets et filtres customisables par le biais de l'outil Pixel Bender.
  • Gestion de traitement de texte avancé avec plus d'éléments typographiques.
Adobe a également pris en compte des demandes d'amélioration de la communauté Flash avec entre autres :
  • plus de contrôles sur le menu contextuel: il est maintenant possible d'ajouter des items en texte riche.
  • la manipulation de grandes images bitmap (jusqu'à 4096 par 4096)
  • sortie de la version Linux en simultanée avec la version Windows, les problèmes spécifiques Ubuntu ont été réglés depuis la bêta,
  • les touches clavier du type Ctrl, Espace… peuvent maintenant être accessibles en plein écran: ce qui peut être pratique pour le développement des jeux Flash.
Vous pouvez retrouver la liste complète des fonctionnalités sur le site d'Adobe.

Comme le signale l'article publié sur le blog de Cedric Champeau, à la sortie du plugin un certain nombre de bugs persistent, la sortie simultanée de Silverlight 2 aurait-elle fait accélérer les choses ?


Programme Valtech Days 2008
Les annonces de nouvelles technologies se succèdent et, parce que votre temps est précieux, nous vous proposons en 2 jours un condensé de notre lecture de l'actualité et notre vision de l'avenir au travers de présentations, retours d'expériences, démonstrations et discussions. Que vous soyez Directeur des Systèmes d'Information, Responsable de Service, Responsable Etudes et Méthodes, Architecte, Chef de Projet, les Valtech Days s'adressent à tous les acteurs du marché : clients, leaders d'opinion, formateurs et consultants experts. En 2007, plus de 300 participants sont venus s'informer et participer à des sessions techniques animées par des experts locaux et internationaux.


Java 6 Update 10 : Quoi de neuf docteur ?

Beaucoup de nouvelles fonctionnalités orientées utilisateur finale pour facilité le déploiement et l'exécution d'applet, parmi lesquelles :

  • L'intégration de Java Quick Starter (JQS)
    • Un service Windows (XP/2000) permet de précharger dans le cache disque de l'OS des fichiers les plus utilisés par la JRE, afin de permettre un démarrage à froid plus rapide.
    • Next Generation Java Plug-in
      • Ce plug-in, pour Internet explorer et Firefox 3, permet notamment de démarrer une applet depuis un fichier JNLP de la même manière qu'une application Java Web Start et d'améliorer la communication entre javascript et java (détection de version, téléchargement de la JRE…).
      • Java Kernel
        • Distribution allégée de la JRE, puis téléchargement à la demande des dépendances selon les applications chargées, pour permettre une réduction du temps de téléchargement et d'exécution initiale de la JVM.
        • Possibilité de mettre à jour une même version majeure de la JRE, pour éviter la multiplication des installations et réduire les téléchargements.
        • Réécriture de l'accélération Direct3D pour la plateforme Microsoft Windows, qui est désormais activée par défaut.
        • Java DB 10.4 est dorénavant inclus dans la JRE.
        • Nouveau Look & Feel Nimbus utilisant des graphiques 2D vectoriels à la place de bitmaps pour les composants permettant de mieux gérer le redimensionnement.

La
liste complète des fonctionnalités sur le site de Sun.

JavaTM SE 6 Update Release Notes


Sun's Danny Coward on the Latest Java Update.

Diagnostic d'une JVM à distance
Développer une application Java, c'est bien. La rendre performante, c'est mieux.
Cependant, qui dit "performance", dit "mesure". En effet, il est nécessaire de pouvoir :
connaître les paramètres de lancement de la JVM, mesurer l'empreinte mémoire et le comportement du Garbage Collector, Cet article va décrire dans une première partie les différents outils permettant de collecter ces informations en local. La seconde partie se concentre sur les moyens pour obtenir ces mêmes informations à distance.

Creating a NotifyingBlockingThreadPoolExecutor
A Thread Pool is a useful tool for performing a collection of tasks in parallel. This becomes more and more relevant as CPUs introduce multi-core architectures that can benefit from parallelizing our programs. Java 5 introduced this framework as part of the new concurrency support, with the ThreadPoolExecutor class and other assisting classes. The ThreadPoolExecutor framework is powerful yet flexible enough, allowing user-specific configurations and providing relevant hooks and saturation strategies to deal with a full queue. To best follow this article, you may find it useful to open the ThreadPoolExecutor Java API in a parallel tab.


Enumérations - Utilisation avancée
Avant l'arrivée des énumérations, deux principaux choix s'offraient à vous pour effectuer des
énumérations : les constantes et les classes de type N-gleton. C'était au développeur de choisir,
selon le contexte, quelle solution semblait la plus adaptée à son problème.

Au premier abord, il est tentant de comparer les énumérations java avec ceux des autres
langages. Elles sont bien plus puissantes que dans la plupart des autres langages. Là où C / C++ ou C# se contentent de traiter les énumérations comme une suite de nombres entiers, les enum Java se comportent comme de vraies classes. On peut tout à fait les comparer au N-gleton que nous venons de développer dans l'exemple précédent possédant un certain nombre de propriétés implicites.


Singleton in Java - the proper way
Update after some comments: this post is not a discussion whether to use Singleton or not. It's not a discussion on why Singleton might be an anti-pattern. It's just an example on alternative implementation of Singleton in Java. Just that.



vendredi 17 octobre 2008

Veille technologique semaine 42

Pour le bulletin de cette semaine, je vous propose les sujet suivants :

  • La NASA a publié un retour d'expérience sur la gestion d'une équipe de développement logiciel.
  • Microsoft confirme son ralliement à l'OMG au sujet d'UML 2. On va vers la complémentarité d'UML et des Domain Specific Languages (DSL). Bientôt dans VisualStudio : UML 2 aura peut-être ainsi plus d'audience.
  • Présentation de la plate-forme OSGi par le club d'utilisateur Java de PARIS (JUG PARIS). Cette plate-forme est géré par l'organisation OGSi Alliance créée en 1999. Son principal atout est la gestion dynamique de bundles avec la version des dépendances. Le modèle actuel de composant est très décevant. Une évolution est en cours avec la RFC
    124 "A Component Model for OSGi" qui est en fait le modèle Spring DM (Dynamic Module). Une partie de OSGi devrait être intégré au JDK 7 avec les JSR 291 : Dynamic Component Support, JSR 294 : Modularity Support for Java SE ou JSR 277 : Java Module System (?).


  • Une article sur une évolution du langage Java prévue pour le JDK 7 au sujet des closures : ajout de littéraux pour référencer un membre : un champs, une opération ou un constructeur d'une classe. Le JDK1.3 a ajouté le littéral "YourClass.class" équivalent à "Class.forName("YourClass")". Il est donc proposé d'ajouter "YourClass#YourField", "YourClass#yourMethod()", "YourClass#()". C'est donc un moyen typé, vérifié par le compilateur, pour référencer des membres d'une classe à la place des chaines de caractères non vérifié pas le compilateur : "YourClass.class.getField("YourField")", "YourClass.class.getMethod("yourMethod")" ou "YourClass.class.getConstructor(Class,... parameterTypes)".
  • Un article qui propose une synthèse au sujet de la configuration par annotation Java (@) par rapport aux fichier XML. L'article suivant montre un exemple avec la version 2.5 de Spring qui propose les annotations suivantes : @Repository, @Service, @Controller, @Component. Alors, fichiers XML ou annotation ?


Bonne lecture.


Leçons de management par la NASA :

Jerry Madden, un ancien employé du Goddard Space Flight Center de la
NASA, a collecté "100 leçons" apprises auprès des managers qu'il a
cotoyés.

Marios Alexandrou en a extrait les leçons qui collent le plus avec son expérience des projets web Parmi les plus marquantes :

  • Une réunion de travail devrait durer 5 minutes minimum (moins elle est inutile) et 1 heure maximum (plus c'est un marathon). Au-delà de 6 personnes, elle devrait être réservée au transfert d'information.
  • Ne demandez jamais à vos chefs de prendre une décision que vous pouvez prendre vous-même, sauf si un document vous l'interdit.
  • Ne supposez jamais que quelqu'un a fait quelque chose, demandez lui. Même le plus évident peut être oublié, surtout en période de stress.
  • La documentation ne remplace pas la connaissance. Les documents restent des images statiques dans le temps et sont rapidement dépassés.
  • Les projets nécessitent un travail d'équipe pour réussir. Rappelez- vous que la plupart des équipes ont un coach et non un boss, mais le coach doit parfois arbitrer certaines parties.
  • Si un chef de projet est l'homme le plus intelligent de l'équipe, c'est qu'il a fait un mauvais travail de recrutement.
  • Les principes de gestion sont toujours les mêmes. Seuls les outils changent. Vous devez toujours trouver les bonnes personnes pour faire le travail et rester à l'écart pour qu'ils puissent le faire.

Le coach doit s'appuyer sur une équipe de personnes motivées, intelligentes, et responsables qui n'attendent pas d'ordre d'un patron. Leur collaboration est essentielle à la réussite du projet.


Microsoft rejoint l'OMG :

Microsoft a publié un communiqué de presse par lequel elle annonce rejoint l'OMG ou Objet Management Group, consortium dont le rôle est de travailler à l'évolution des standards de programmation objet. En l'occurrence c'est UML qui semble plus particulièrement motiver Microsoft à cette occasion. Ainsi l'intégration de UML 2.1.1 est annoncée dans les prochaines versions de Visual Studio (nome de code Rosario).

Microsoft's UML roundtrip routed through Oslo.

Previously, Microsoft had been noncommittal and was promoting the idea of Domain Specific Languages (DSLs) (http://martinfowler.com/articles/languageWorkbench.html) as a replacement for UML.

Our take is that Microsoft is pursuing a dual-pronged strategy: so-called D will be a higher level modeling language that would be its own "better" answer to BPMN (http://www.bpmn.org/), which would be targeted at business analysts, while UML is for developers working on how to represent business processes in software programmatically.


Présentation d'OSGI au Paris JUG
Le Paris JUG (Java Users Group) nous a proposé une présentation d'OSGI ce mois-ci, organisée par Xebia. Après une présentation sur l'histoire d'OSGI, nous avonsvu les différents champs d'applications, avec en point de mire la question posée sur le blog de xebia : "est-ce vraiment une plus value pour les développements ?"

Prochaine présentation le 4 novembre 2008 : Google Web Toolkit (GWT) :
http://parisjug.org/xwiki/bin/view/Meeting/20081104
Avis aux amateurs.


First-class methods: Java-style closures
In Java, the method is the principal construct where application logic resides. At present, a method can only exist within a class and cannot be manipulated or referenced in any simple manner. Other languages permit a block of application logic to be referenced outside of a class, and this is often referred to as a function or a closure. We propose to change the language to support the referencing and definition of methods as first-class objects. This provides much of the power of functions / closures but in a style familiar to Java developers. We further propose to enable the referencing of other class members - constructors and fields - as first-class citizens. This is a natural extension to First-class Methods.

Configuration en Annotations Java ou en XML ?
L'arrivée de Guice dans le monde des frameworks de dependency injection a entraîné pas mal de questionnements. Je n'échappe pas à la règle !

Google a adopté dans Guice la configuration tout en Java : tout ce fait à base d'annotations et de l'API. De fait, il n'y a plus de fichier de configuration XML.

C'est encore un des reproches que l'on entend sur Spring : on déporte beaucoup de choses dans un fichier XML qui ne compile pas et pour lequel on n'est pas assisté.

Dans le même ordre d'idée, Les nouvelles annotations créées avec JPA (Java Persistence API) changent aussi notre façon de configurer Hibernate. Avant, on configurait tout dans le bon vieux hibernate.cfg.xml, maintenant on a la possibilité de le faire avec les annotations.

Maintenant que nous avons le choix : quelle solution doit-on préférer ? Java ou XML ?


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 ?

Les nouveautés Spring 2.5
Spring introduit plusieurs nouveautés concernant sa configuration, toutes les évolutions visant à la simplifier (ou à améliorer l'existant) :

  • Ajout de nouvelles balises basées sur les possibilités d'extension
    de schéma de Spring (Exemple : L'ajout des namespaces jms, context ou
    l'amélioration des namespaces jee, aop)
  • La création de JavaConfig
  • Le support des annotations Java 5, déjà amorcé dans Spring 2.0

Dans cet article, nous nous concentrerons sur les possibilités de configuration avec les annotations mais sans éviter un ou deux écarts.

vendredi 10 octobre 2008

Veille technologique semaine 41

Je vous propose, pour le bulletin de cette semaine 41, les articles suivants :
  • sortie de la version 2.0 de mono qui est l'implémentation open source de la plate-forme DotNet. Cette version complète l'implémentation du langage C# 3.0 avec, en particulier, le langage de requête LINQ.

  • mise à jour du langage Groovy avec un complément qui est à remarquer : des concepts de design patterns sont intégré au langage? Groovy est un langage à typage dynamique, dans la même catégorie de Ruby, Python, etc qui est standard de la plate-forme Java (JSR 241). Ce langage propose une syntaxe proche de celle de Java. La plate-forme d'exécution est la JVM standard ce qui permet aux objets groovy d'interropérer avec les objets Java et inversement. En fait, la JVM ne sait pas que c'est des objets Groovy ou Java, ce sont des objets JVM. La conséquence est de cette unification est de pouvoir bénéficier dans un langage de tout ce qui a été développé dans un autre : la persistance, la réplication, les IHM, etc... Groovy a intégré les méta-données avec la version 1.3 avec la syntaxe des annotation Java : @. Les design patterns proposés sont : le singleton (@Singleton), la non mutabilité (@Immutable), la délégation (@Delegate), l'instanciation paresseuse (@Lazy). Le mixin (ajout de méthodes à une classe à l'exécution) est proposé avec @Mixin. A voir dans les exemples de code.

  • Dans cette série sur l'interopérabilité entre objets issus de langage différents dans le même runtime, l'implémentation JRuby du langage Ruby sur la JVM permet d'utiliser la librairie d'interface graphique Swing en code Ruby. IBM propose un article au sujet de Ruby sur le poste dureautique.

  • Un article très pointu sur les algorithmes de garbage collector, qui ont encore des possibilités de progrès et qui peuvent donner des meilleurs comportement pour l'application et terme de déterminisme ou de performance. C'est un sujet d'étude qui occupe encore les laboratoires de SUN, IBM et BEA (Oracle) et qui est basé sur des statistiques du comportement des applications objets.

  • Enfin un article au sujet de l'outil VisualVM, qui permet de visualiser l'exécution de la JVM sous forme graphique. C'est en fait le plug-in "profiler" de NetBeans qui a été rendu autonome. Cet outil est en standard dans le JDK 6 depuis l'update 7. Il propose par défaut : affichage de l'occupation mémoire, charge CPU par thread, navigation dans les objets (le tas), le nombre d'objets et la taille totale par classe, mesure de temps d'exécution des méthodes... C'est un outil incontournable pour tout développement sur la JVM. J'ai à disposition la documentation complète sous forme d'un PDF.

Bonne lecture.


Mono 2.0 Released
Mono 2.0 is a portable and open source implementation of the .NET framework for Unix, Windows, MacOS and other operating systems.

Mono 2.0 has been released. Though still behind Microsoft's .NET in some areas, in others it has leaped ahead. For those seeking to write crossplatform applications, the first list of features in the release notes is the Microsoft-compatible APIs.

  • ADO.NET 2.0 API for accessing databases.
  • ASP.NET 2.0 API for developing Web-based applications.
  • Windows.Forms 2.0 API to create desktop applications.
  • System.XML 2.0: An API to manipulate XML documents.
  • System.Core: Provides support for the Language Integrated Query (LINQ).
  • System.Xml.Linq: Provides a LINQ provider for XML.
  • System.Drawing 2.0 API: A portable graphics rendering API.

For cross-platform graphics, Mono also offers Mono.Cairo, a binding to the Cairo Graphics library.
"Currently supported output targets include the X Window System, Quartz, Win32, image buffers, PostScript, PDF, and SVG file output. Experimental backends include OpenGL (through glitz), XCB, BeOS, OS/2, and DirectFB."


Mono 2.0 Release Notes

Mono 2.0 is a major milestone in the Mono project, and it supports the following features:

Groovy 1.5.7 and 1.6-beta2 released
@Singleton to transform a class into a singleton
@Immutable to forbid changes to an instance once it's been created
@Delegate transparently implement the delegation pattern
@Lazy for lazily initializing properties
@Category / @Mixin helps mixin category methods at compile-time
@Newify allows to omit using the 'new' keyword for creating instances, simply doing Integer(5) will create an instance, and also gives you the ability to use a Ruby-esque syntax with Integer.new(5)


Cross-platform development with JRuby and Swing
Ruby for the desktop
In addition to building Web and console applications with Ruby, you can write complex GUI desktop applications that run unmodified on multiple platforms. Thanks to JRuby, a robust alternative to the traditional C implementation of Ruby, Ruby GUI toolkits can use UI tools available to the Java™ platform. This article introduces Monkeybars, a library that uses JRuby and Swing for building applications, and takes you through an example application.

Ruby is currently best known as a programming language for building Web applications, primarily with the Ruby on Rails framework. However, the language is more than capable for developing graphical desktop applications as well. In this article, you'll learn more about using Ruby for the desktop, and you'll work through a detailed example that uses Monkeybars - an open source library based on Swing and JRuby - to create a GUI desktop application.


Ghost in the Java virtual machine
In the decades of research of garbage collection in academia, researchers
made an interesting observation about memory allocation. This came to be
formulated in the weak generational hypothesis. It simply states that most
objects die young. In other words, the vast majority of memory is only needed
for a very short amount of time. For object oriented languages, including Java,
the correlation is even stronger; as much as 98% of object life cycles are short
lived.


VisualVM: Profiling Applications
VisualVM presents data for local and remote applications in a tab specific for that application. You can have multiple application tabs open. Each application tab contains sub-tabs that display different types of information about the application.


vendredi 3 octobre 2008

Veille technologique semaine 40

Pour le bulletin de veille technologique de cette semaine, je vous propose les articles suivants :
  • un article sur la technologie Blue Ray qui a retenu la plate-forme Java comme technologie pour réaliser de l'interaction pour les disques de vidéo en haute définition.

  • un article sur les apports d'UML 2 (par Philippe Desfray) : ne pas utiliser UML comme un autre moyen de saisir du code, mais comme un moyen de lever le niveau d'abstraction pour augmenter la productivité, et de pouvoir formaliser la décomposition sous forme de composants en ayant la garantie sur leur assemblage (maîtrise des interfaces).

  • une interview de Anders Hejlsberg qui a conçu le langage C# de la plate-forme DotNet chez Microsoft. La version C# 3.0 apporte le langage de requête LINQ, la version 4 apportera la programmation concurrente (multi-threadé). Il serait temps que Java copie ces technologies majeur de C#.

  • un projet de SUN qui réalise une machine virtuelle Java entièrement écrite en Java : Maxine. C'est la deuxième réalisation (après celle expérimentale d'IBM) de machine écrite dans le langage quelle exécute. Ce choix présente une grande avancée par rapport aux machine virtuelle Java actuelle qui sont écrite en C++. Cela démontre la possibilité d'utilisation de la plate-forme Java depuis le JavaCard jusqu'au serveur en passant par le téléphone mobile (Androïd), le poste bureautique et maintenant vers les couches basses en direction de l'OS.

  • la migration de JUnit 3.8 vers JUnit 4.4 : que des avantages, et que des annotations.


Bonne lecture.


Que nous apporte Réellement UML2 ?
par Philippe Desfray

Page 5 :

Certains utilisent UML comme un langage de programmation visuelle,
qui augmente directement la productivité des développeurs. S'il y a peu de plus value
à représenter une classe comme un rectangle au lieu de déclarer "class MaClasse {…}",
certaines constructions abstraites n'ayant pas de correspondance directe en code apportent effectivement un facteur de génération(4) supérieur à 10.

(4) nombre de lignes de code produites/nombre de constructions de modèle effectuées


Les classes structurées et les notions de port et part permettent de modéliser des composants logiciels, qui .... ... Cette capacité est précieuse, car elle permet de réutiliser des composants, de formaliser les parties à développer et leurs modalités d'assemblage, c'est à dire qu'elle permet une sous-traitance renforcée du développement logiciel, avec une capacité de maîtrise de l'intégration garantie.

Page 6 :

L'atelier Objecteering, dans sa nouvelle version 6 produira des "makefiles" pour C++, puis des declarations "Ant ou Maven" pour Java, à partir d'un modèle abstrait des artifacts.


Blu-ray Disc Application Development with Java ME, Part 1: Creating Your First Application
Java technology is a critical part of the new high-definition video standard, the Blu-ray Disc standard. In this two-part series, we're going to cover several aspects of using the Java language to create applications for your Blu-ray disc player, which includes the very popular PlayStation 3 gaming console.


The A-Z of Programming Languages: C#
Microsoft's Anders Hejlsberg reveals the history behind one of the most common programming languages, C#, and what the future holds for C#4.0.

Primarily, we wanted to build a unified and modern development platform for multiple programming languages and application models . We also wanted to introduce modern concepts, such as object orientation, type safety, garbage collection and structured exception handling directly into the platform. These factors were, at the time, the motivators for .NET. There was also a competitive angle with Sun and Java etc. Now, to move on to C#, in a nutshell our aim was to create a first class modern language on this platform that would appeal to the curly braces crowd: the C++ programmers of the world at the time, and competitively, the Java programmers.


The VM is written in the same language it executes

  • Multi-Language Potential
  • Vertical Role Progression
  • Low Level Programming Support


Migrating from JUnit 3 to JUnit 4: Nothing but Good News
TODO: Migrate the JUnit 3.8.1 tests to 4.4...
There are a lot of JUnit 3 tests out there. The emphasis on unit testing and test driven development has resulted in developers creating a significant corpus of JUnit tests using the JUnit 3 test framework. The migration of these unit tests to JUnit 4, though, has been fairly slow. Some of the reason for this is the less than rapid move from JDK 1.4.x to Java 5 (or later).