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.

vendredi 26 novembre 2010

Veille technologique semaine 47

Pour le bulletin de cette semaine, je vous propose les articles suivants :
  • le début de la fin pour IPv4 : il reste moins de 160 millions d'adresse IPv4 disponible (durée prévue de 1 ans d'après penrose.uk6x.com).
  • un résumé des contenus JDK 7 et JDK 8 et leur dates respectives.
  • Des programmes au modèles : l'évolution ou révolution ?
  • Evolve : un outil pour utiliser les JavaBeans comme des composants UML 2.
  • Adobe et le HTML 5 : quelle stratégie ?
  • OSGi : les fondations d'un middleware.
  • Le projet WebM : pour une vidéo sans brevet sur le web.

Bonne lecture.


100 days of IPv4 left
The internet is based upon a networking protocol called IPv4, which is the underlying basis for both TCP (used by HTTP and chat applications) and
UDP (used for video and audio applications). This uses a 4-byte IP address, like 192.168.54.32, to identify both of the end-points in the channel.
(Most humans and many applications use a DNS name instead, which translates www.infoq.com into a numeric IPv4 address like 63.246.7.184.)

Unfortunately, the IPv4 address space is running out, and quickly. According to @ipv4countdown, we have passed the 100 day mark for available
addresses; the total stands at less than 160 million addresses left. To put it in perspective, that's around 9.137.0.0 addresses left. We've burnt
through (or aren't able to allocate) 245.0.0.0 IPv4 addresses, so they're running out fast. The data is shown in a countdown at Hurricane Electric, an
IPv6 provider.


JDK7 & JDK8 arrivent !
Non, nous ne reviendrons pas sur les récentes news autour de OpenJDK et de Oracle/Google/Apache/IBM/Apple etc... car cette fois c'est bon, on sent réellement que Java 7 est sur les rails! En effet, Oracle a profité de Devoxx pour annoncer officiellement les JSRs "umbrella" pour Java 7 et Java 8. Ce sont donc des JSRs qui en regroupent d'autres, déjà existantes et sur lesquelles InfoQ nous faitun petit topo.
Java 7 est défini par la JSR 336, regroupant elle-même:
  • la JSR 203, connue sous le nom de NIO 2 et améliorant la gestion des filesystems et des sockets. On se réfèrera à la description complète sur le blog de Masoud Kalali en 6 parties: 1, 2, 3, 4, 5 et 6.
  • la JSR 292, apportant l'instruction bytecode invokedynamic, très attendue par des langages comme Groovy ou JRuby afin de gagner en performances.
  • la JSR 334, connue en tant que "Project Coin", apporte du sucre syntaxique. Des petits détails pas fondamentaux mais contre lesquels nous pestons souvent en nous demandant "mais pourquoi on ne peut pas faire ca en Java ?!". Avec le JDK 7, on pourra !
Mais d'autres bonus pourraient aussi être inclus nous indique Alex Miller: citons en vrac Unicode 6, des modifications des Locale, JDBC 4.1, des améliorations de Swing...

Pour le JDK 8, spécifié par la JSR 337, les choses commencent aussi à prendre forme avec la vraisemblable inclusion des JSR 308(annotations sur les types), JSR 310 (like API inspirée de Joda-Time) et JSR 335 (le projet Lambda apportant les fameuses closures). Le projet Jigsaw, qui apporte lui la modularité d'une manière plus developer friendly que OSGI, devrait aussi être de la partie.
Cerise sur le gâteau, ces 2 JDKs sont même datés: juillet 2011 pour le JDK 7 et fin 2012 pour le JDK 8.
Pendant ce temps, un
sondage complètement informel a permis de prendre le pouls des Devoxxiens et de leur attentes envers les futurs JDKs. Il semble que beaucoup d'entre nous, dans la communauté, seraient prêts à payer le prix d'une incompatibilité ascendante de Java pour permettre au langage de s'améliorer en réparant certaines de ses erreurs. Devrons nous en passer par là ? En tout cas ce n'est pas pour tout de suite et nous devrons nous contenter t'attendre le Next Big Java Language !


From Programs to Mograms [1]
Changes in Software Engineering

[1] Mogram is a contraction of "model" and "program" suggested by A. Kleppe. A mogram is not always computer-excutable, but it is nevertheless precise and conforms to a given metamodel.



Evolve: Using Components to Improve on Dependency Injection
Evolve is a lightweight tool for creating, wiring up and executing JavaBeans, allowing them to be treated as full components. Developers can use
Evolve to graphically describe JavaBeans and also optionally generate the Java code for the setters and getters. It supports four primary activities:
creating or importing JavaBeans, wiring these up to make more complex components, reusing and evolving them, and executing them. The Evolve
system includes the following parts:
  • Component Model with Connectors
  • Resemblance and Evolution
  • Backbone Interpreter
  • UML2 Wiring Editor


HTML5 vs. Flash: Where does Adobe Stand?
In the last year Adobe seems to be embracing HTML5 and integrating it into its product strategy. During the Adobe developer's conference (MAX),
Lee Brimelow tried to clarify his company's plans for HTML5 and especially regarding competing platforms like Flash and Flex.
Adobe Illustrator, one of the company's flagship products recently got an HTML5 add-on. This add-on provides basic support for HTML5 and CSS3,
extends SVG capability and helps developers design both web and device content:


Is OSGi the Right Foundation for Java Middleware?
The OSGi working group started in 1997 as the JSR 8, mostly focusing on embedded Java with the goal of supporting modular updates to embedded software. OSGi became mainstream after solving the inextricable dependencies of Eclipse plugins. Right about 2005, several approaches converged towards bringing more modularity to Enterprise Java by leveraging assembly mechanisms and well defined dependencies, including Spring and Service Component Architecture while EJBs, slowly faded away. Today most Enterprise Java vendors have rewritten their middleware on an OSGi foundation.


Open video for the web
What is WebM?
WebM project goals :
  • Focus on video for the web
  • Make web video a great user experience
  • Support WebM in all browsers in HTML5 <video>
  • Provide an open choice to the market
  • Collaborate with our developer community
  • Fundamental innovation in all aspects of web video
  • Proliferate WebM widely in hardware
  • Make web video easy

vendredi 19 novembre 2010

Veille technologique semaine 46

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Le Model Driven à la conférence annuelle MDDAY 2010,
  • Un accord entre Apple et Oracle : Apple collabore à OpenJDK et Oracle fournis le JDK pour MacOSX,
  • Oracle et Apache en désaccord au sujet de la licence Java,
  • Le principe du scout appliqué au logiciel : il faut toujours laisser le code plus propre que l'état dans lequel on l'a trouvé,
  • Les erreurs souvent constatés lors de la mise en oeuvre des méthodes agiles,
  • Oracle annonce les spécifications (JSR : Java Specification Request) pour le JDK 7 et le JDK 8, avec un premier planning pour le JDK 7 : fin juillet 2011,
  • Un article sur l'implication des équipes logiciels,
  • Une explication sur le principe "convention over configuration : ou comment réduire le besoin de configurer une application :les applications se basent sur des conventions au lieu de se baser sur des fichiers (ou autre) de configuration,
  • La JVM et sa modularization,
  • Les benchs de la synchronisation en Java : à prendre en compte dans vos applications Java.
Bonne lecture.



Le MDDAY 2010
Conférence annuelle sur le Model Driven : MDDAY 2010 (www.mdday.fr)
le 25 novembre prochain dans les locaux de Microsoft à Paris.

Programme 2010 : accueil à 8H30, fin à 18h00

Journée placée sous le thème de l'agilité

Qui ? Des experts reconnus du domaine, les sociétés organisatrices et leurs clients.
Quoi ? Discussions et conférences sur l'approche « Model-Driven ».
Comment ? Une série de conférences par des experts, clients et éditeurs de logiciels "Model Driven"...


Inscription à MD DAY 2010
Participation gratuite mais sur inscription obligatoire, le nombre de places étant limité.
http://register.mdday.fr/seminaire/viewRegisterForm.do


Java : un accord entre Apple et Oracle
Oracle et Apple viennent de dévoiler un accord relatif à Java. Les deux sociétés travailleront de concert sur le projet OpenJDK pour Mac OS X.

Dixit
le communique de presse : "Apple apportera la plupart des principaux composants, outils et technologies nécessaires à la mise en œuvre de Java SE 7 sur Mac OS X, y compris une machine virtuelle Java HotSpot 32 bits et 64 bits, des bibliothèques de classes, une pile de mise en réseau et les bases d'un nouveau client graphique. Grâce au programme OpenJDK, les développeurs de projets open source pourront accéder à la technologie Java d'Apple et contribuer à son amélioration".

Pour Bertand Serlet, il s'agit de proposer aux utilisateurs de Mac OS X une version à la fois récente, performante et stable de Java sur Mac.

Enfin, si Apple va continuer à distribuer Java SE 6 dans Snow Leopard et Mac OS X Lion, les prochaines versions de Java, à commencer par Java SE 7, seront disponibles auprès d'Oracle.



Oracle and Apple announce OpenJDK Project for Java on Mac OS X
Oracle and Apple on Friday announced a new partnership that will bring the Java SE 7 and future versions of Java for Mac OS X to users directly from Oracle.

With the OpenJDK project for Mac OS X, Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client. OpenJDK will make Apple's Java technology available to open source developers so they can access and contribute to the effort.

"We are excited to welcome Apple as a significant contributor in the growing OpenJDK community," said Hasan Rizvi, Oracle's senior vice president of Development. "The availability of Java on Mac OS X plays a key role in the cross-platform promise of the Java platform. The Java developer community can rest assured that the leading edge Java environment will continue to be available on Mac OS X in the future. Combined with last month's announcement of IBM joining the OpenJDK, the project now has the backing of three of the biggest names in software."

Apple also said that Java SE 6 will continue to be available from Apple for Mac OS X Snow Leopard and the upcoming release of Mac OS X Lion. Java SE 7 and future versions of Java for Mac OS X will be available from Oracle.

"We're delighted to be working with Oracle to insure that there continues to be a great version of Java on the Mac," said Bertrand Serlet, Apple's senior vice president of Software Engineering. "The best way for our users to always have the most up-to-date and secure version of Java will be to get it directly from Oracle."

Java is a general purpose software development platform that is specifically designed to be open and enable application developers to "write once, run anywhere." The Java platform is most widely used in business software, Web and mobile applications.

In October, Apple announced it would
deprecate Java for Mac OS X, meaning the company would no longer issue its own updates for Java. Apple's note said that the Java runtime could be removed altogether from future versions of Mac OS X.

An e-mail claimed to be from Apple CEO Steve Jobs said that his company decided it would no longer develop their own Java for Mac because their updates were always
a version behind the official releases from Oracle and Sun. Jobs allegedly said that the current method "may not be the best way to do it."


Oracle et Apache: de l'eau dans le gaz
Le début de la semaine passée a vu la Fondation Apache émettre un billet qui a fait beaucoup de bruit. Dans celui-ci, elle reproche à Oracle de ne pas respecter les termes du JSPA (pour Java Specification Participation Agreement) et qui, d'après la Fondation, l'autorisent à obtenir un TCK (Test Compatibility Kit) lui permettant de redistribuer Harmony, son JDK, sous la licence Apache. Le problème, qui reste un problème de brevet et de propriété intellectuelle, est ouvert depuis un moment: en 2007 déjà, Apache avait écrit une lettre ouverte à Sun. Les choses n'ont que peu changé depuis. Sauf qu'aujourd'hui, la Fondation menace carrément de quitter le processus du JCP ! Comme l'analyse InfoQ, c'est peut-être la seule arme qui reste à la Fondation Apache. Mais serait-ce vraiment une bonne chose ?
Pour mieux comprendre les termes et enjeux de l'imbroglio dans lequel se sont empêtrées les parties, un excellent document reste
la FAQ publiée à l'époque par Apache pour expliciter sa lettre ouverte à Sun. Oracle vient d'ailleurs de publier sa réponse et… le moins que l'on puisse dire, c'est que la situation semble dans une impasse, chacun restant campé sur ses positions.
Par ailleurs, il faut aussi replacer les choses dans leur contexte actuel:
  • IBM, le plus gros contributeur à Harmony, le JDK d'Apache, a récemment indiqué se rapprocher d'Oracle à travers OpenJDK. Ainsi, il se détache d'Apache qui se retrouve donc isolé.
  • Oracle a par ailleurs attaqué Google sur son implémentation d'Android, basée en grande partie sur ce même Harmony.
  • enfin, le récent regain d'intérêt envers Java SE for embedded devices n'est peut-être pas étranger à tous ces problèmes. Même si le produit « date d'avant Android », Oracle semble vouloir le renforcer. Et la première étape, comme annoncé lors de l'ARM Conference consiste à faire correspondre les numéros de versions et implémentations des versions Java SE classic etembedded. Cette version est-elle appelée à se retrouver rapidement dans les téléphones portables à grande échelle maintenant que Java ME semble dépassé ? Oracle pourrait le souhaiter, car elle n'est pas gratuite !

Always leave the campground cleaner than you found it.
Don't forget to clean up the trash that we've left lying around:
  • duplicated code
  • poorly named classes, methods, and variables
  • huge functions
  • magic numbers
  • inappropriate combinations of differing levels of abstraction
  • tight coupling
  • low cohesion
  • high cyclomatic complexity (otherwise known as "spaghetti code")

and the list goes on...


Common Mistakes in Agile Adoptions
A number of commentators have written about common mistakes and anti-patterns of Agile adoption. They have posted "Top X" lists of things to avoid and mistakes they have seen in Agile implementations across a variety of organisations.
Michael Dubakov of Target Process wrote two blog entries about of the "10 Most Common Mistakes in Agile Adoption" (Part 1 & Part 2). He maintains that "Companies are making the same mistake during agile adoption over and over again."


Oracle Announces JSRs for Java 7 and Java 8
Oracle has announced the umbrella JSRs for Java 7/8, covering a number of the features known from the earlier Plan B. The way JavaSE and JavaEE specifications are defined are by reference to other JSRs, rather than defining new content directly – but often will do so after those referenced JSRs are completed. In this case, many of the referenced JSRs are still works-in-progress, or in the case of modularity, not even known at this stage.


It's Full of JSRs!
The proposed contents for inclusion in Java SE 7 include:
The Java SE 8 JSR is necessarily a bit more sketchy but contains:


Enfin des JSRs pour Java 7 & 8
Les JSRs sont des documents primordiaux du Java Community Process, puisqu'il s'agit des documents de travail qui seront soumis aux votes de la part des membres du-dit JCP.


JDK 7

The feature list has been updated and at this point is not expected to change. The
milestone schedule will be updated soon, but in the meantime here is the highlevel
schedule for the remainder of the release:
  • 2010/12/16 Feature Complete
  • 2011/04/12 Rampdown start: P1-P3 bugs only
  • 2011/04/28 API/interface changes: Showstoppers only
  • 2011/05/11 All targeted bugs addressed
  • First release candidate built
  • 2011/05/18 Bug fixes: Showstoppers only
  • 2011/06/08 Final test cycle starts
  • 2011/07/28 General Availability

Architecture – Etre toujours impliqué
Nous avons vu dans un précédent billet que le rôle de l'architecture pouvait être remis en perspective au travers de la poursuite de trois objectifs : Etre Connecté aux objectifs métier de l'entreprise ; Assurer la Cohésion des solutions ; Accueillir favorablement le Changement. Voici un premier principe à appliquer afin d'atteindre ces objectifs. Il concerne l'architecte et son rôle
et s'intitule « Etre toujours impliqué ».
Le rôle d'un architecte ne se limite pas à un projet ou à une phase d'un projet. Pour être efficace, un architecte doit avoir des perspectives bien plus larges. Un architecte Lean communique en permanence avec toutes les parties prenantes de la DSI (du métier aux opérations). Il joue un rôle actif dans la réalisation des projets. Il s'assure que les leçons apprises sur les projets passés ou en cours sont sues et qu'elles sont appliquées dans tous les projets qui le nécessitent.


Convention over Configuration
"Convention over Configuration" (on trouve parfois une traduction par "convention plutôt que configuration"),
ce design pattern (ou patron de conception, pour faire plaisir aux francophones intransigeant) est un des plus intéréssant de ceux à la mode en ce moment.

Le principe en est très simple :
les applications se basent sur des conventions au lieu de se baser sur des fichiers (ou autre) de configuration.

Plus clairement:
  • Réduire le nombre de fichiers de configuration,
  • Configurer par défaut les applications (donc, sans aucun fichiers, base de données ou autres stockant ces informations de configuration) en se basant sur les standard (les conventions) du milieux,
  • Possibilité d'écraser cette configuration par convention par un fichier de configuration : l'application se configure toute seule en se basant sur des conventions, et si nécessaire, on peut écraser cette configuration par défaut via des informations de configurations dans un fichiers de configuration (ou base de données ou autre).

Modularisation de la JVM
Cette session présente JigSaw, qui continue son lobbying pour imposer à la JVM une modularisation autre que celle proposée par OSGi ...
A quoi ça sert ? A sortir du classpath Hell, à accélérer le lancement de la JVM, à alléger le runtime, à approvisionner automatiquement (comme le font les Linux avec apt ou yuml), et à assurer la prédictibilité de l'environnement d'exécution.
La vérification du classpath à l'installation plutôt qu'au runtime, associé à la construction de profils pour une application (liste des classes effectivement chargées lors du premier lancement) doivent nous apporter un gain significatif de fiabilité et de réactivité.


Java Synchronization (Mutual Exclusion) Benchmark
I've created another benchmark. This time, I've benchmarked the different ways of synchronizing a little code using mutual exclusion on this code.

mercredi 10 novembre 2010

Veille technologique semaine 45


Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • on parle beaucoup du HTTML 5 : un résumé des fonctionnalités de la spécification en cours, avec cette RefCard,
  • Oracle confirme sa proposition d'un service payant d'assistance pour la technologie Java. C'est le même schéma que BEA (avec JRockit) avec un JDK qui reste gratuit, mais des outils de monitoring et de réglage de la JVM payant.
  • Un article au sujet du rôle de l'architecture logicielle et des architectes correspondant.
  • Le club Java de Paris a proposé une soirée au sujet des BRMS (Business Rule Management System) avec deux COTS bien connus : JRules de ILog/IBM et Drools de JBoss.
  • Un article au sujet des deux approches pour être indépendant du socle technique : le Model Driven Architecture (MDA) et la programmation par aspects (AOP). Différences et complémentarités.
  • Le CEP : le Complexe Event Processing est un domain en plein essor avec des COTS. C'est un exemple d'architecture orienté événements (EDA : Event Driven Architecture).
  • La maîtrise du garbage collector : une synthèse des algorithmes et leurs réglages.
  • Les références sur les objets en Java : forte ou faible (strong ou weak) ?
  • Les invocations remote asynchrones avec la plateforme OSGi : c'est un schéma limité au invocation remote (pas d'asynchronisme local) avec une intrusion technique dans l'interface remote : ce n'est pas transparent.
  • Java et la programmation concurrente : les executors et les pools de thread.


Bonne lecture.


ABOUT HTML5
HTML5 is a standard for structuring and presenting content on the Web. It incorporates features such as geolocation, video playback and drag-and-drop. HTML5 allows developers to create rich internet applications without the need for third party APIs and browser plug-ins.
HTML5 is still under specification, and is currently in the Working Draft stage in the W3C, but many aspects of HTML5 are now stable and can be implemented in browsers.
This DZone Refcard highlights the main features in HTML5 and illustrates the JavaScript APIs available to work with those features.


Oracle proposera une JVM Premium
La semaine dernière au QCon, le monde Java a lancé la machine à rumeur. La faute à Adam Messinger, vice président du développement pour l'entité Fusion Middleware d'Oracle, qui a annoncé qu'il y aurait une version Premium (comprendre payante) de la JDK en plus de la version gratuite.
En réalité les plus avertis avaient déjà noté cette information au dernier JavaOne:
Premium offerings such as JRockit Mission Control, JRockit Real Time, Java for Business and Enterprise Support will continue to be made available for an additional charge.
En clair, Oracle a l'intention de vendre une version payante de la JDK qui comprendra, entre autres, les outils JRockit Mission Control (outil de monitoring), Real Time (outil de temps réel) et un support donnant accès par exemple à des corrections sans attendre les versions officielles. L'offre reste encore à définir, entre autre le prix, et des inconnus demeurent sur les différences entre les JDKs.
Par ailleurs Adam Messinger se veut plutôt rassurant sur le maintien d'une version gratuite. L'objectif d'Oracle reste de fusionner Hotspot et JRockit vers OpenJDK.
Néanmoins Stephen Colebourne (membre la fondation Apache et Java Champion) souligne les risques entourant cette annonce:
  • Est-ce que la version gratuite et la version premium sortiront en même temps ?
  • Est-ce que la version gratuite sera supporté sur la même quantité d'OS ?
  • Quels sont précisément les fonctionnalités de la version premium ?
  • Est-ce qu'il s'agira seulement de fonctionnalités pour le management ?
  • Ou s'agira aussi de fonctionnalités sur les performances ?
  • Quel est le marché ciblé ?
Il remarque également que ces craintes seraient levées si la JSR 924, qui spécifie la JVM, pouvait être implémentée librement, en s'abstrayant entre autre des champs d'utilisation (une vieille querelle entre Apache et Sun). Ceci permettrait d'avoir un standard et aux implémentations telle qu'Harmony d'être certifiées.
Depuis la prise en main de Java par Oracle, la communauté, qui est historiquement tournée vers l'Open Source, a quelques sueurs froides et l'annonce récente de monter les prix du support de MySQL n'arrangera rien.


Oracle prédit le futur de Java… ou au moins en parle
En ce moment, nous parlons beaucoup du futur de Java. A l'origine de ce petit séisme communautaire, il y a le rachat de Sun par Oracle il y a un an. Depuis la mi-2010, Oracle montre plutôt des signes encourageants, qu'il faut cependant parfois décrypter, car la communication vers la communauté Java n'est pas encore parfaite.


Architecture Lean – Connexion, Cohésion, Changement
Le rôle de l'architecture et la place des architectes au sein d'une organisation font souvent débat et sont  souvent mal compris. Cette incompréhension est principalement due au fait que la contribution de l'architecture à la réalisation des objectifs métier de l'entreprise n'est pas (ou peu) visible.
Le rôle de l'architecture peut être remis en perspective si on le considère au travers du prisme de trois objectifs clés (les 3 C de l'architecture) :

  • Etre Connecté aux objectifs métier de l'entreprise.
  • Assurer la Cohésion des solutions.
  • Accueillir favorablement le Changement.

Utiliser ces objectifs comme principes fondamentaux d'une « architecture lean » met l'emphase sur ce qui doit être fait sans perdre de vue le pourquoi. Cela permet ainsi de mieux positionner l'architecture au sein d'une organisation.


Business rule management system
From Wikipedia
A BRMS or Business Rule Management System is a software system used to define, deploy, execute, monitor and maintain the variety and complexity of decision logic that is used by operational systems within an organization or enterprise. This logic, also referred to as business rules, includes policies,
requirements, and conditional statements that are used to determine the tactical actions that take place in applications and systems.


JRules


Explore Model Driven Architecture and Aspect-oriented Programming, Birds of a Feather
In recent years, two new trends in software engineering have been established—Aspect Oriented Programming (AOP) was developed to extend and ease programming, and the Model Driven Architecture (MDA) was introduced to take full advantage of the power of modeling. Many people are confused when confronted with both AOP and MDA. This article provides a crash-course on both topics and explains the differences and similarities between the two.


Le CEP, un domaine en expansion
Le domaine du CEP, pour Complex Event Processing ou Traitement d'évènements complexes, est un domaine dont on entend peu parler mais dont l'utilité, une fois que l'on se penche dessus, semble évidente. Rappelons que le CEP est un concept dans lequel des suites d'évènements sont analysées, de façon automatisée, pour en dégager des informations qui ne seraient pas déductibles à partir de chaque événement pris séparément. La corrélation d'une suite d'évènements « simples » permet donc de déduire d'autres informations, plus complexes. Pour être concret, le CEP peut servir à détecter des fraudes bancaires par des suites d'évènements louches survenant sur un compte, ou alors pour détecter des problèmes dans un système suite à la réception, à une fréquence plus élevée que la moyenne, d'un certain type d'évènement.
Toujours est-il que de nombreuses solutions existent, Open Source ou non, pour satisfaire les divers besoins d'analyse. Dans un récent article, Marc Palmer de Streambase qui édite ses propres solutions CEP, revient sur la publication de chiffres semblant indiquer que les CEP ne représentent qu'un petit marché. Et pour contrer ces chiffres, il cite nombre de sociétés utilisatrices de la solution de Streambase. Même si c'est surtout un coup de pub pour sa compagnie, nous pouvons malgré tout réaliser à quel point les CEP sont importants dans le domaine du Capital Market.
Pour aller plus loin et découvrir différentes solutions, citons cet article de Debu Panda (de EJB3 in Action) vu sur ServerSide et dans lequel il évoque la solution de Starview. Mais si vous voulez vraiment être pris par la main pour avoir une première approche du CEP, Michal Bali, auteur de Drools JBoss Rules 5.0« , nous livre un tutorial complet implémentant la détection de fraude dans un système bancaire en utilisant Drools Fusion, solution de JBoss. Ce dernier article est très complet et permettra au lecteur d'avoir une bonne première approche des possibilités de l'outil.


Taming the Java Garbage Collector
Tuning the garbage collection in JVM is one of those things that developers often tend to ignore and overlook. But if done properly, it can save you hundreds of megabytes worth precious memory, without making a significant impact on the
application performance. Also GC tuning becomes an absolute necessity in certain applications due to various QoS requirements such as real-time processing, low response time and high throughput. So today I'm going to discuss a little bit about GC in JVM and how to properly tune up GC for best application performance. My discussion is entirely focused on Java 5 and 6, so if you are using an older JVM you are at the wrong place.
Before we jump into the discussion on GC tuning we need to have a basic understanding on the various concepts associated with GC. So here goes...


Know the JVM Series - When Weaker is Better: Understanding Soft, Weak and Phantom
How many times have we created various object instances, and assign those to reference variables? We all know very well that Java has automatic garbage collection; so we just play around the reference variables, and once those variables are assigned null or falls out of scope, JVM takes care of it. No need to worry about .free' as in C / C++. It's a headache-less approach, which minimizes the risk of introducing memory leaks to our programs, and it works out great day in day out in billions of Java applications running out there 24×7. Kudos to John McCarthy for inventing GC for Lisp, and to all the folks who implemented the concept in Java.

Asynchronous Remote Services
ECF's Remote Services API, which is used to implement OSGi 4.2 remote services, has had the ability for consumers/clients to use asynchronous/non-block remote method calls for at least the last 2 years.

Contents
1 Normal/Synchronous Services
2 Asynchronous Services
2.1 Example
2.1.1 Original Service Interface
2.1.2 Asynchronous Service Interface
2.2 A Second Example
2.2.1 Original Service Interface
2.2.2 Asynchronous Service Interface
3 Future Results
4 Full Example with Source


Java Concurrency – Part 7 : Executors and Thread Pools
Let's start with a new post in the Java concurrency series. This time we'll learn how to start new threads cleanly and to manage thread pools.

vendredi 5 novembre 2010

Veille technologique semaine 44

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Microsoft change de stratégie pour sa technologie Silverlight : elle devient uniquement pour le client lourd (plus pour le Web), et Microsoft confirme son orientation pour le HTML 5 sur le client léger. C'est une annonce majeur pour le soutient du HTML 5.
  • Adobe a fait une démonstration d'un outil de conversion de flash en HTML 5.
  • L'université de l'Illinois propose une version de programmation concurrente du langage Java pour bénéficier d'un comportement d'exécution parallèle déterministe : pour alimenter les processeurs multi-cores : Deterministic Parallel Java (DPJ).
  • Quelques règles de bon sens pour faire des diagrammes UML utilisables.
  • La gestion correcte de la transparence des composants d'IHM Swing : exemple sur le gestion de la propriété opaque.
  • L'interface Iterable du JDK : comment ça marche.
  • Les derniers benchs des langages de programmation : ce sont des mesures de performance qui comparent les mêmes algorithmes de calcul sur des implémentations de différent langages, avec une normalisation à 1 pour le plus rapide. Le C est le plus rapide normalisé à 1, Java 6 en mode steady est à 1,3 plus lent, l'ADA 2005 est 2 fois plus lent, C# est 3,1 fois plus lent, Java en mode interpréteur est 20 fois plus lent, Ruby est 38 fois plus lent et PHP est 58 plus lent. Il faut noter que ces mesures ne mettent pas en oeuvre beaucoups d'objets et ne mesure pas la productivité.

Bonne lecture.


Silverlight, HTML5, and Microsoft's opaque development strategy
For reasons that are not immediately clear to me, it seems that a lot of developers who attended Microsoft's recent PDC event were surprised to hear that the company now sees HTML5 as the way forward for developing rich Internet applications—and not, as they had been expecting, Silverlight. Their surprise surprises me, because past statements by the company had already made this repositioning obvious, though perhaps not explicit.



Silverlight Is for the Client, HTML5 for the Web
After saying about Silverlight that "our strategy has shifted" during PDC 2010, Bob Muglia attempted to clarify what he meant. Steve Ballmer and Tim Heuer also commented on Silverlight, trying to reassure the community on Microsoft's commitment to Silverlight, but also pointing to the fact that HTML5 is the solution for cross-platform development, leaving Silverlight to the client and Windows Phone.


Adobe shows off Flash-to-HTML5 conversion tool
Even though its Flash technology is used as a punching bag by Web standards fans, Adobe has been building tools that embrace HTML5. The company recently released its own HTML5 video player, and Adobe Illustrator and Dreamweaver CS5 now contain a number of new HTML5 export tools.


Parallel Java Programming System Launched by University
A team of researchers at the University of Illinois' Universal Parallel Computing Research Center (UPCRC) has developed a parallel implementation of Java.
With an emerging need for programs that take advantage of today's multicore and parallel systems, the University of Illinois has come up with an effort to deliver a parallel version of the Java language.


Deterministic Parallel Java
University of Illinois at Urbana-Champaign
Project Overview
The broad goal of our project is to provide deterministic-by-default semantics for an object oriented, imperative parallel language, using primarily compile-time checking. "Deterministic" means that the program produces the same visible output for a given input, in all executions. "By default" means that deterministic behavior is guaranteed unless the programmer explicitly requests nondeterminism. This is in contrast to today's shared-memory programming models (e.g., threads and locks), which are inherently non deterministic and can even have undetected data races. Our paper at HotPar 2009 states our research goals in more detail. The other pages of this site provide additional information about the DPJ type system and language.


Better UML diagrams in 5 easy steps
Documenting code can be a time consuming challenge, especially when dealing with unfamiliar spaghetti code.
Diagrams and UML tools can help with this but what appears to be a comprehensive diagram to one person might actually result in more confusion to someone else. It's important to maintain a clear idea of what concepts your diagram is conveying. There are several tricks I've found that make this task significantly easier.
  • Less is more
  • Highlight stumbling blocks
  • Images cannot survive in a vacuum
  • Organization and accessibility are key
  • Maintain your diagrams
  • (BONUS) Multiple versions

Custom Swing Component Development Tip: Not Everything is Transparent
This article explains transparency (opacity) and how to avoid some common pitfalls encountered when developing custom swing comppnents The previous article in this series, titled Insets Matter [1], introduced us to a new Swing developer named Toni and documented his efforts to create a custom swing component named the Orb. The purpose of the Orb is to draw a simple blue circle within the bounds of the component.


Au coeur du JDK : l'interface Iterable
Connaissez-vous l'interface java.lang.Iterable ?
Mais si, vous la connaissez : vous l'utilisez tous les jours, lorsque vous parcourez une Collection. Hé bien, voyons maintenant comment vous pouvez l'utiliser à votre avantage lorsque vous concevez un modèle objet.

Iterable, mode d'emploi



Computer Language Benchmarks Game
How big is the difference between programming languages?

Remember - these measurements are just of the fastest programs for each programming
language implementation, measured on this OS/machine.

vendredi 29 octobre 2010

Veille technologique semaine 43

Pour le bulletin de la semaine 43, je vous propose les sujets suivants :
  • du rifif autour le Java : problème au JCP (Java Community Process) : suite aux grandes manœuvres ? ...
  • Apple ne fournira plus le JDK sur MacOSX. Oracle devrait prendre le relais ?
  • Adobe présente un outil de construction de site web pour le HTML 5 : c'est le début du remplacement de sa technologie AIR (flash + flex) par le HTML5 ?
  • Plus de 50% des vidéos sur internet sont passées au format HTML5.
  • Qui utilise la librairie Swing de Java ? : l'industrie de défense, ....
  • Les technologies du multi-touch : le framework MT4J (Multi-Touch For Java) : explications.
  • L'utilisation des transactions mémoire à la place des verrous (lock) : résultats sur la productivité.
  • Quelle est la différence entre l'architecture logicielle et la conception logicielle : le quoi et le comment ?
  • Les EJB 3.1 : un modèle de composant avec une injection de dépendance.
  • Le pointeur null : une erreur de conception de 1965 qui a coûté, depuis, un milliards de dollars ?
Bonne lecture.



Du rififi au JCP
Doug Lea a annoncé qu'il claquait la porte du comité exécutif du JCP. Spécialiste de programmation concurrentielle, et à ce titre leader de la JSR-166, il est une figure importante du monde Java et sa défection est très symbolique. Il justifie son départ car selon lui le JCP n'est plus crédible dans sa capacité à fournir un standard et des spécifications réellement ouverts.
Ceci rejoint d'autres critiques sur le manque de transparence du JCP. Si l'annonce l'IBM de rejoindre OpenJDK est une bonne nouvelle pour ce projet, ceci laisse sur le carreau la fondation Apache et son projet Harmony, une autre version open source de Java. Or ce projet n'a jamais réussi à être labellisé Java Standard Edition. Pour cela il faut être passé par les TCKs (Test Compatibility Kits) Java qui valident les spécifications du JCP. Mais comme ces TCKs ne sont pas libres, Apache se plaint de ne pas pouvoir valider son projet. Et IBM ayant quitté le navire, il est encore moins sûr qu'un jour ce module devienne libre.
De plus, Dalvik, la JVM d'Android, est justement construite sur un sous ensemble d'Harmony. Avec les attaques en justice d'Oracle contre Google pour des histoires de brevet, voici donc une deuxième ligne de front qui s'ouvre entre les deux géants.
Le mois prochain auront lieu les élections pour choisir les nouveaux membres du comité exécutif du JCP. Cette élection sera vraiment la première depuis l'ère Oracle et compte-tenu des enjeux devrait être déterminante pour l'avenir de Java. A noter que Bob Lee (aka « Crazy » Bob Lee), le charismatique leader de Guice, s'est porté candidat à la succession de Doug Lea pour les indépendants.


Can Oracle Turn Java Around?
A lot has happened in the last week or two in the Java space. Oracle has remained silent throughout, but the silence is deafening. The start of the proceedings kicked off with IBM joining OpenJDK and (effectively) disbanding Harmony. One JVM down, one to go. The Apache Software Foundation board has made their thoughts known since; they thank IBM for their contributions to date and very much hope for Harmony's continued survival with other contributors. This prompted a number of responses across, included Mike Milinkovich at Eclipse, leading to his thoughts on Java 7 adoption as a result. However, he clarified that as it currently stands, the Java 8 proposal needs a re-think on the modularity layer to work better with existing de-facto standards.

Stephen Colebourne has been digging into the JCP and initially suggested that the JCP should be split in two as it has become clear that the Java SE components are controlled solely by Oracle rather than being voted as part of the JCP itself. However, he then claimed that Oracle are stuffing the ballot by bringing on one of their long-term customers, Hologic, onto the JCP board. This is the first time that most in the Java community have heard their name; the other two Oracle nominees are Apache and Red Hat. Up for re-election are Google and Eclipse, amongst others.



Le JDK d'Apple: c'est fini
Alors que nous savions bien qu'il n'était pas question de développer sur l'iOS (IPhone, Ipod, Ipad) en Java, tout allait bien du cotédesktop. Mais Apple a annoncé récemment, par le biais d'une note technique, que « les développeurs ne devraient pas compter sur la présence d'un runtime Java dans les futures versions de MacOS X ». Pour parler concrètement, que fait tout bon développeur lorsqu'il se rend compte qu'une fonction publique de son API n'est pas adaptée alors que certains l'utilisent ? Il la marque @deprecated en espérant s'en débarrasser au plus tôt (mais tout en sachant que ca ne sera pas si facile que ca: il va falloir convaincre tous les utilisateurs d'abandonner les appels à cette fonction). C'est ce qu'Apple vient de faire à notre langage préféré. Le runtime Java risque de ne plus être présent dans les futures version de MacOS (10.7). Rude coup ? Pas complètement… En effet, SoyLatte, le port d'OpenJDK sur Mac semble fonctionnel. Le plus gros problème risque de venir de l'intégration des applications de type client lourd, basées sur Swing/AWT, et pour lesquelles Apple avait optimisé l'intégration à OSX. Et c'est pour cette raison qu'une pétition réclame à Apple de reverser son code actuellement propriétaire à l'OpenJDK. Mais il se murmure qu'Apple aurait utilisé nombre d'appels de méthodes non documentées de l'API Mac OS pour intégrer de façon la plus transparente possible les applications Java dans son OS. Rien n'est donc moins sûr que l'issue de cette pétition. Il risque d'être difficile aux développeurs de l'OpenJDK de pousser l'intégration aussi loin. James Gosling en profite pour rappeler que cette intégration poussée à l'extrême était justement nécessaire car que les applications d'Apple elle-mêmes étaient en Java ! Comme quoi…
Aller, oublions un peu ces problèmes politiques un instant et retournons coder des applications web: elles, au moins, ne nécessitent pas de composants graphiques natifs (bien que l'IDE…) .

 

Adobe Edge : HTML5 pour les nuls
Adobe a présenté récemment un prototype d'outil permettant de réaliser de manière simple et sans réelle connaissance en code des animations en utilisant les technologies HTML5 (et donc pas Flash, la solution maison pour gérer des sites web animés).
Cet assistant à la création de code HTML5 s'appelle Adobe Edge, et des esprits mal intentionnés pourraient y voir le premier pas d'Adobe vers l'abandon, à moyen terme, du Flash…ou plus simplement peut être la volonté de se positionner sur le créneau porteur du HTML5, mis à la mode en grande partie grace à Steve Jobs et son refus d'intégrer Flash sur ses OS mobiles.



HTML5 Video Available on the Web – October Update
Last May, we took a look at how much HTML5 compatible video is out there. 5 months on, we figured now it would be worth taking another look.
HTML5 compatible video available on the web is still experiencing substantial growth & the rate of adoption is picking up.

Some Discoveries We Made
  • 54% of web video is now available for playback in HTML5. Double in 5 months.
  • Flash remains the dominant player within desktop environments.
  • Mobile is driving HTML5 video adoption. HTML5 compatible (H.264 mostly) video is the most common format for mobiles (inc. iPhone, iPad and Android).
  • Publishers & platforms now offer iframe embeds, allowing them to switch players dynamically, depending on the access device.

Is Swing Dead
Periodically the question, "Is Swing Dead", pops up on one of the mailing lists. I usually ignore them because I consider it flame-bait and not worth the time to answer. However, with the recent announcement by Apple that they weren't going to be supporting Java on the Mac, and the resultant furor that it's caused on the mailing lists, I thought I would look at the question again and see if I could give it a serious answer.

To Whom Does Swing Matter?

If Swing died tomorrow, who would miss it? Strangely enough, most of the server-side developers would miss it, because it's the basis for most of the IDEs that people use. Beyond IDEs, where does it get used? I keep a Dice search agent running and invariably the hits I get for "Swing Developer" tend to fall into the following categories:
  • Defense Industry: Real-time telemetry from missiles, aircraft, and UAVs.
  • Health: Clinical telemetry from EKGs, infusion pumps, patient sensors and similar kinds of hospital equipment.
  • Finance: Day-traders, commodity and energy traders, etc.
  • Biotech: medical device, instrumentation and software vendors.
  • Telecommunications companies
  • Geospatial software

Framework MT4J et les technologies tactiles
La technologie Multi-touch n'est pas une technologie nouvelle mais le succès de l'iphone fait que cette technologie rentre dans sa phase d'utilisation à grande échelle. Les équipements multi-touch se multiplient, que ce soit avec les OS mobiles comme Android / Iphone, les ordinateurs tout-en-un sous windows 7 ou les écrans d'ordinateurs supportant le multi-touch et dernièrement avec l'annonce de la sortie de l'ipad de Apple.
La technologie multi-touch peut aussi être appliquée en utilisant le touchpad multi-point des pc portables ou en utilisant une palette graphique wacom multi-point.

Le domaine d'utilisation est assez varié, il va de la conception 3D, au dessin, à la consultation de plans et d'images et pour finir au jeu.



Is Transactional Programming Actually Easier?
This paper offers evidence that transactional programming really is less error-prone than high-performance locking, even if newbie programmers have some trouble understanding transactions. Students subjective evaluation showed that they found transactional memory slightly harder to use than coarse locks, and easier to use than finegrain locks and condition synchronization.



Architecte ou designer ?

Qu'est-ce que l'architecture logicielle ?
L'architecture logicielle est le pont qui relie les exigences et l'implémentation

Qu'est-ce que le design logiciel ?
Le design logiciel est l'action de définir la structure statique et dynamique d'un logiciel.

L'architecte est donc au designer ce que le designer est au développeur. Il offre une vision qui est située un niveau d'abstraction plus haut que celle donnée par le designer.


Enterprise JavaBeans 3.1 with Contexts and Dependency Injection: The Perfect Synergy
Version 3.1 of the Enterprise JavaBeans (EJB) specification greatly simplifies the EJB specification and provides declarative aspects, such as transactions, security, threading, and asynchronous processing. Contexts and Dependency Injection (CDI) provides Dependency Injection (DI) power and flexibility. Both are part of the Java Platform, Enterprise Edition (Java EE) 6 specification and ready to use. This article describes why there is perfect synergy between EJB 3.1 and CDI.


Null pointer
Null Object pattern 
I call it my billion-dollar mistake. It was the invention of the null reference in 1965.