vendredi 17 décembre 2010

Veille technologique semaine 50

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • A la conférence Devoxx : keynote sur l'avenir de Java par Mark Reinhold (Oracle).
  • Le JCP (Java Community Process) approuve les spécifications du JDK 7 et du JDK 8 : 12 votes pour, trois votes contre.
  • La programmation par aspect dans Spring 3.0 : les intercepteurs.
  • Comment payer la dette technique.
  • Le HTML5 et les cinq fonctionnalités multi-média.
  • Les 12 ans d'UML : bilan.
  • Introduction d'OpenCL : la programmation du processeur graphique (le GPU).


Je vous souhaite également, pour vous et vos proches, de passer de bonnes fêtes et les meilleurs vœux pour la prochaine année 2011.

Bonne lecture.


Devoxx – L'avenir de Java
La keynote de Mark Reinhold, Chief Architect de la plate-forme Java chez Oracle, était particulièrement attendue après une actualité très riche sur le JDK ces derniers mois. L'année dernière, l'annonce d'un nouveau délai pour la sortie de JDK 7, afin de permettre la ré-intégration des closures, avait provoqué la surprise. L'été arrivant, la communauté se rendait alors compte que le planning initial prévoyant un JDK 7 features complete pour juin était déjà dépassé et irréaliste. Quelques mois plus tard, Mark Reinhold annonçait sur son blog un "plan B" : on ne conserverait alors dans JDK 7 que les fonctionnalités déjà implémentées pour repousser celles qui sont encore en cours d'élaboration, telles que les closures ou la modularité, au JDK 8. Plus récemment l'actualité était marquée par l'annonce de nouveaux entrants dans le projet OpenJDK : IBM dans un premier temps, s'étant résigné à mutualiser ses efforts de développements avec Oracle, et Apple qui après l'annonce de l'arrêt du support de Java dans Mac OS X avait décidé de léguer les développements spécifiques à son OS au projet OpenJDK. Dans ce contexte rempli de rebondissements et d'incertitudes, Mark Reinhold a apporté quelques clarifications et une visibilité appréciable sur l'avenir de Java.


JSRs for Java 7 and Java 8 Approved
The results of the recent Java JSRs are in, and all have passed with all but Apache voting consistently against them. Google and Tim Peierls voted
against the Java SE 7 and Java SE 8 JSRs, supporting the ongoing licensing issues and field-of-use restrictions for the TCK.
Project Coin, JSR 334, passed with 13 votes to 1 (and 1 abstention)
Project Lambda, JSR 335, passed with 13 votes to 1 (and 1 abstention)
Java SE 7, JSR 336, passed with 12 votes to 3
Java SE 8, JSR 337, passed with 12 votes to 3


Spring 3.0 AOP Advice
Abbrevation of Spring AOP is Aspect-oriented programming, Action taken by an aspect at a particular join point is known as Spring AOP advice. To say simple, Spring models an advise as an interceptor and maintains a chain of interceptors by adding functionalities before or after the method execution. In this article, the various types of AOP advice in Spring 3.0 is explained in an elegant way. The types are,

1. Before Advice
2. After Returning Advice
3. After Throwing Advice
4. Around Advice


How To Pay Down Technical Debt
What is technical debt? Ward Cunningham coined the term "technical debt" to refer to an obligation that an organization takes on when it decreases the quality of its code base in order to meet short-term goals. Bringing code quality back up invariably costs more to do later on than it would have if quality had been addressed immediately. This extra cost represents the "interest" on the technical debt.


HTML5 in the browser: Canvas, video, audio, and graphics
The five characters HTML5 are now an established buzzword, found everywhere on the Web and often given top billing in slides, feature lists, and other places where terms du jour congregate. Non programmers who must either manage or work with programmers are even beginning to pick up the term. Just two days ago, someone who can't manage a TV remote explained that he was sure his company's Web presence would be much better because they were using HTML5.


The Road Ahead for UML
Ivar Jacobson is founder and CTO of Ivar Jacobson International and co-developer of UML. Steve Cook is a software architect at Microsoft and represents Microsoft at the OMG. More than 12 years have passed since the Unified Modeling Language (UML), became a standard. During these years opinions of UML have varied between delight and distaste. In this article, we discuss the deficiencies of the current UML specification and propose how to make it agile, leaner, smarter, and more flexible -- in short, how to prepare it for the future so that users can be confident that their investments in UML today will increase in value going forward.

At the beginning of the '90s there were 26 published methods on object-orientation, ...


Introduction to OpenCL
Using a GPU for computational workloads is not a new concept. The first
work in this area dates back to academic research in 2003, but it took the
advent of unified shaders in the DX10 generation for GPU computing to be a
plausible future. Around that time, Nvidia and ATI began releasing proprietary
compute APIs for their graphics processors, and a number of companies
were working on tools to leverage GPUs and other alternative architectures.
The landscape back then was incredibly fragmented and almost every option
required a proprietary solution – either software, hardware or both. Some of
the engineers at Apple looked at the situation and decided that GPU
computing had potential – but they wanted a standard API that would let them
write code and run on many different hardware platforms. It was clear that
Microsoft would eventually create one for Windows (ultimately
DirectCompute), but what about Linux, and OS X? Thus an internal project
was born, that would eventually become OpenCL.

vendredi 3 décembre 2010

Veille technologique semaine 48

Pour le bulletin de cette semaine, je vous propose les sujet suivants :
  • Les slides de la conférence sur le Model Driven 2010 sont publiés sur le web,
  • Le cloud computing par Microsoft : c'est le début du model économique SaaS  (Software as a Service) ou PaaS (Plateform as a Service). La "location de logiciel" qui va remplacer le modèle économique "vente de licence" ?,
  • La langage Java utilisé pour le HPC (High-Performance Computing) avec la syntaxe Ateji,
  • La programmation fonctionnelle avec la langage Clojure,
  • L'architecture logicielle et le design : bien comprendre les différences,
  • Un article qui résume très bien les principes et les conséquences de la programmation par aspects (AOP) : c'est a la fois un principe et une technologie. Un article à lire absolument.
  • Une conséquence du principe de la séparations des préoccupations, avec le principe de l'inversion de dépendance qui permet de couper le lien du code fonctionnel vis à vis du code technique. Cet extrait des règles de conceptions avancées, traduit en français, résume au mieux le principe d'inversion de dépendances :
    "il ne faut pas construire l'application sur le socle technique mais il faut construire le socle technique sur l'application".
  • Les type nullable du langage C# : traduction de la cardinalité 0..1 UML pour les attributs (primitifs).
  • Résumé sur la gestion des exceptions en Java.
  • Explication de System.identityHashCode en Java.

Bonne lecture.


Slides de la conférence Model Driven Day : MDDAY 2010

http://www.slideshare.net/MDDAY/presentations

Slides de Steve Cook sur UML : le passé, le présent et le futur.
http://www.slideshare.net/MDDAY/stevecook-uml-mdday2010


Slides de la présentation DCNS
http://www.slideshare.net/MDDAY/dcns-mdday2010


Le Cloud selon Microsoft, retour de TechEd 2010
Le slogan "Cloud Power" était affiché partout dans la conférence TechEd 2010 de Berlin. Pendant la Keynote d'ouverture, Brad Anderson (VP Management & Security) a paraphrasé "the Big Switch" de Nicholas Carr, en utilisant la métaphore de la production électrique. Puis, il a expliqué les XaaS par le menu.


Cloud : Microsoft affiche fièrement 1 million d'utilisateurs pros en France.
Après l'annonce de l'arrivée imminente de son offre SaaS Office 365, Microsoft annonce que plus d'un million de professionnels en France utilisent ses différents services de cloud computing.

Selon la firme de Redmond, 150 000 salariés en entreprise ont fait appel à ses services hébergés en SaaS (Software-as-a-Service) Microsoft Online Services et 600 000 professionnels utilisent la messagerie Hosted Exchange.
Depuis plusieurs mois, l'éditeur américain a pris un véritable virage dans le cloud, multipliant les initiatives, à l'image de sa PaaS (Platform-as-a-Service) Windows Azure, de ses infrastructures IaaS Windows Server Hyper-V et System Center, deux gros systèmes "maison", en passant par le SaaS (Office 635).

Microsoft confirme ainsi que près de 750 clients, grands comptes comme PME, ont déjà adhéré à ses diverses couches cloud, à l'image d'entreprises comme Euronews, le Groupe Marie Claire, Médecins du Monde, les Taxis Bleus, Monoprix, Center Parcs, ou encore des éditeurs de logiciels comme Cegid ou Backelite.

Un portefeuille en pleine croissance que Microsoft compte bien développer en 2011, avec l'arrivée d'Office 365 et le renforcement de ses offres SaaS. Pour distiller ses multiples offres, la firme de Redmond a réussi à tisser un réseau français de 700 partenaires en France, comme Orange Business Services, pour ses Microsoft Online Services, et de 12 000 partenaires dans le monde.


Java for High-Performance Computing :
When presenting Ateji PX to an audience with HPC or simulation background, I often hear definitive opinions of the kind "We'll never consider Java, it's too slow".

This appears to be more a cultural bias than an objective statement referring to actual benchmarks. To better understand the state of Java for highperformance computing, let us browse through three recent publications:
  • High-performance computing in Java: the data processing of Gaia, by Luri & Torra, presented at SciComp XXL, May 2009
  • Java for High Performance Computing: Assessment of Current Research and Practice, by Taboada et.al., presented at PPPJ'09
  • Current State of Java for HPC, by Amedro et.al., Inria Research Report N° 0353, August 2008

Functional Programming with Clojure
Simple Concurrency on the JVM

MOTIVATIONS
It all started with John McCarthy, the year 1958, and a small language named Lisp. Why are we, five decades later, discussing a sudden springing-to-life of incarnations of this programming language predated only by Fortran? It turns out that Lisp never really died. It was merely in hibernation all those years, "pining for the fjords" of the Java Virtual Machine, powerful CPUs, and abundant RAM. That day has arrived. In fact, the multi-core architecture and ever-harder concurrency problems computer science is currently aiming to solve are a perfect fit for a Lisp dialect. Rich Hickey realized this and began work on a language we now know as Clojure (pronounced: \klö-zh.r\).

In just a few short years, the Java Virtual Machine (JVM) has gone from a platform solely running the Java language, to becoming the preferred platform for the execution of hundreds of cutting edge programming languages. Some of these languages, such as Groovy, Scala and Clojure are vying for the community's respect as the most innovative language on the Java Virtual Machine. Let's explore why Clojure is one of those frontrunners and why it deserves a place in the tool belt of any leading edge JVM developer.


Architecture vs. design
Throughout this series, I've been relying on the simplistic yet accurate definition of
architecture in software: "Architecture is the stuff that's hard to change later." When
you look at parts of your project, you can identify architectural elements by asking, "Will it be hard to change this later?" Layers (either physical or logical) are architectural under this definition because it's hard to change (or remove) them later.


Le point sur la programmation par aspects
RÉSUMÉ.
La réutilisation est l'une des principales promesses de la programmation par objets.
Malheureusement, elle n'est pas toujours possible du fait du mélange, lors de l'implémentation des applications, des définitions des services réalisés ("fonctionnalités") avec des propriétés non-fonctionnelles représentant des mécanismes d'exécution spécifiques (distribution, tolérance aux fautes, persistance, . . . ). Afin de pallier ce défaut, le paradigme de la programmation par aspects considère que les services d'une application et ses propriétés non-fonctionnelles correspondent à des aspects qui doivent être découplés les uns des autres. L'application est obtenue par la composition ("assemblage") de ces différents aspects. Nous avons identifié trois approches permettant la mise en oeuvre de la programmation par aspects. Dans le présent article, nous faisons le point sur ces approches ainsi que sur les concepts sous-jacents à la programmation par aspects.


Principe de l'inversion des dépendances
Dans la plupart des applications, les modules de haut niveau (ceux qui portent la logique fonctionnelle de l'application ou les aspects "métier") sont construits directement sur les modules de bas niveau (par exemple les librairies graphiques ou de communication).
Construire les parties "techniques" de l'application sur les parties "fonctionnelles", et non l'inverse.


Understanding C#: Nullable Types
Every C# developer knows how to work with value types like int, double, boolean, char, and DateTime. They're really useful, but they have one flaw: they can't be set to null. Luckily, C# and .NET give you a very useful tool to for this: nullable types. You can use a nullable type any place that you need a variable that can either have a value or be null. This seems like a simple thing, but it turns out to be a highly flexible tool that can help make your programs more robust.


La gestion des exceptions en java
La gestion des exceptions est un élément qui fait souvent défaut au même titre que la gestion des transactions.

Ce billet était à l'origine des notes personnelles qui avaient pour but de me servir de piqure de rappel et je me suis dit qu'un article de blog serait peut être utile à tous. Ce sujet prête souvent à discussions et il faut parfois adapter au cas par cas, néanmoins avoir un cadre de bonnes pratiques peut s'avérer très utile.

Tout d'abord, voici un schéma présentant la hiérarchie des classes « mères » d'exceptions en java.


Java's System.identityHashCode
The java.lang.System class provides many useful general utilities including handles to the standard output stream, the standard input stream, the standard error stream, and the console as well as methods for obtaining the current time in
milliseconds, defined properties, and environmental variables. In this blog post, I
briefly look at the System.identityHashCode(Object) method.