vendredi 25 septembre 2009

Veille technologique semaine 39

Pour le bulletin de la semaine 39, je vous propose les articles suivants :
  • le standard WebGL qui est en cours d'implémentation dans FireFox.
  • L'historique du HTML : de la version 1 à la version 5.
  • Google qui propose un plugin IE qui apporte HTML 5 à IE.
  • Compte rendu de la soirée du club Java de Paris au sujet des outils relatif à la qualité du logiciel.
  • Toujours Google qui propose son nouveau langage Noop pour la JVM.
  • La modularité en Java : vers le JDK 7.
  • Un article sur les principes de conception avancés : déjà diffusé mais à rediffuser.
  • Pourquoi la conception des API est importante ?
  • La programmation en scala : il faut l'utiliser pour apprendre.
  • Le mot final sur le mot final de Java
  • Quelques principes sur la programmation concurrente en Java.


Bonne lecture


Après WebKit, WebGL monte à bord de Firefox
La version 3.7 de Firefox - encore en développement - contient désormais les ressources nécessaires au fonctionnement de WebGL. Ce standard permettra aux développeurs JavaScript - qui n'est pas le langage le moins répandu - de réaliser des contenus 3D via OpenGL ES 2.0, lequel s'appuie sur les possibilités de calcul de la carte graphique de l'ordinateur. Le tout sans que le navigateur web ait besoin d'un quelconque plug-in spécialisé.

WebGL est également apparu il y a quelques jours dans les versions de développement de WebKit, le moteur de Safari et de Chrome. Un développeur avait montré quelques réalisations sommaires tournant dans le navigateur d'Apple.

Vladimir Vukićević, le développeur chez Mozilla qui a réalisé l'intégration de WebGL
promet de livrer quelques exemples prochainement. Il voit aussi poindre de temporaires problèmes d'interopérabilité alors que chacun intègre webGL dans son navigateur. Mais d'autres questions plus compliquées vont se poser comme celle du fonctionnement de WebGL sur des plateformes où OpenGL est absent en standard. Exemple avec Windows où il faudra probablement s'appuyer sur Direct3D si les librairies OpenGL ne sont pas installées.


Why HTML 5: a web history
Critics have complained that HTML 5 won't be finalized until 2012, and that its completion might be irrelevant anyway because Microsoft is unlikely to ever support the new standard within Internet Explorer. Others wonder if the world really needs any changes to the language underlying the web. In reality however, many features of HTML 5 are already in widespread use. Microsoft has opened up official participation on the HTML 5 standard, indicating serious interest in working with Google, Apple, Mozilla and other companies backing the specification.


Running HTML 5 Inside IE with Google Chrome Frame
Google has just released an Internet Explorer plug-in called Google Chrome Frame that enables Chrome rendering inside IE. That means that any page targeted for Chrome Frame will be rendered using Google's rendering engine, including HTML 5 elements supported by Google, while the page is viewed with Microsoft's Internet Explorer.
Google Chrome Frame is an open source project that prepares the way for Wave. Wave is going to use HTML 5 features, but Wave is not going to be largely adopted if Internet Explorer is not supporting HTML 5. The workaround for Google was to create a plug-in for Internet Explorer that completely bypasses IE's rendering engine. Not only pages load faster in IE that way, but all HTML 5 elements that Google supports work fine in IE.


Google sneaks WebKit HTML 5 support into Internet Explorer
Rather than waiting for Microsoft to implement HTML 5, Google has
released a plugin for Internet Explorer 8 that injects its own WebKit
rendering engine, resulting in a ten fold performance boost for
JavaScript.


Compte-rendu de la soirée Qualité du Logiciel au Paris JUG, le 15 septembre 2009
Début de la nouvelle saison du Paris JUG ce mardi 15 septembre avec une soirée sur la qualité du logiciel. La soirée était divisée en 4 sessions de 30 minutes. Après une présentation de la démarche qualité et des différents types d'outils open-sources, nous avons eu 3 présentations sur Sonar, SonarJ et Squale. Une superbe soirée avec 200 personnes dans une salle comble.


Google lance son langage Noop pour la JVM
Lors du JVM Language Summit de la semaine dernière, Google a présenté
son nouveau langage pour la JVM appelé Noop. LeWiki du projet et sa
présentation permettent de faire le tour des spécificités de ce
langage :

• Syntaxe prévue pour être facilement compréhensible par un développeur Java ou C++
• Pas de types primitifs, pas de classes ou méthodes statiques,
variables non mutables par défaut, pas de syntaxe optionnelle, exceptions uniquement de type unchecked
• Librairie standard s'appuyant sur JodaTime, util.concurrent et Google Collections
• Support natif du concept d'injection de dépendances offert par Guice ou PicoContainer, un type est alors soit newable soitinjectable
• Support natif des tests unitaires qui ont leur structure dédiée sans classes ni méthodes


Les réactions qui ont suivies cette annonce montrent en général un
intérêt couplé à une réserve légitime due à l'état embryonnaire du
projet. Ainsi l'analyse de Dominique de Vito s'inscrit dans ce schéma,
tandis qu'Alexis Moussine-Pouchkine, Sun, explique à 01net qu'il
trouve enrichissant la profusion de nouvelles idées mais que, selon
lui, le langage Java restera malgré tout omniprésent pendant encore
des années.

Reste que là où de nombreux nouveaux langages justifient leur
existence par une syntaxe plus compacte, une nature dynamique ou
encore des concepts élaborés, Noop semble adopter une approche plus
pragmatique et plus proche des besoins quotidiens rencontrés en
informatique de gestion. L'avenir nous dira si les apports de ce
langage sont suffisants pour convaincre des équipes de le préférer à
Java pour leurs développements.



Google travaille sur un nouveau langage
avec pour objectif de gommer les imperfections de java.
Ce nouveau langage aura trois modes d'exécution de fonctionnement : génération de java, interprétation ou compilation.

Pour Alexis Moussine-Pouchkine, architecte Java chez Sun, Noop est une
bonne idée : « Le langage Java n'est pas parfait. La profusion de
langages alternatifs sur la JVM (Groovy, JRuby, Python, Scala, Clojure
et d'autres) en est la meilleure démonstration, et que Noop fonctionne
également au-dessus de la JVM est une excellente chose. Que le
meilleur de ces langages gagne ! En revanche, il ne faut pas tomber
dans l'excès de critique envers Java, qui restera vraisemblablement
par sa lisibilité, par son ubiquité et par son accessibilité au plus
grand nombre, la colonne vertébrale des applications de gestion en
entreprise pendant encore de nombreuses années. »


Google veut moderniser Java avec Noop
Google dévoile un nouveau langage qui reprend le meilleur de Java tout en
introduisant les bonnes pratiques actuelles : injection de dépendance, testabilité...


What is Noop?
Noop (pronounced noh-awp, like the machine instruction) is a new language experiment that attempts to blend the best lessons of languages old and new, while syntactically encouraging what we believe to be good coding practices and discouraging the worst offenses. Noop is initially targeted to run on the Java Virtual Machine. Right now, we are in an early design and development phase. You can't code anything interesting in Noop yet.


Reviewing Noop language from Google,
post-Java but still JVM-based Noop has been recently presented at JVM Language
Summit 2009. Noop development is on-going, the site is here with discussed features. The presentation gives details about development orientation.


Why another language?



Modular Java: What Is It?
Over the last few years, modularity for Java has been an active discussion topic. From the (now defunct) JSR 277 to the recognition of JSR 291 and the ongoing JSR 294, modularity is seen as a necessary step in Java's evolution. Even future JVM-based languages like Scala are considering modularity. This article, the first in a multi-part series on Modular Java, discusses what modularity means, and why you should care.


Principes avancés de conception objet
En matière de développement logiciel, on constate aujourd'hui que la conception reste principalement une affaire de style personnel et d'expérience :

• Les principes de base de l'objet que sont l'encapsulation, l'héritage et le polymorphisme ne suffisent pas à guider la conception au quotidien.
• Les Design Patterns définissent des référentiels de plus haut niveau, mais ils ne forment pas un tout suffisamment cohérent pour guider clairement la construction de designs complets.

Il existe pourtant des principes extrêmement utiles en matière de conception. Ces principes ont été définis par des "hommes de l'art" tels que Bertrand Meyer et Robert C. Martin. Ils ont été présentés par Robert C. Martin dans une série d'articles parus dans C++ Report (accessibles dans la section "Publications / Articles" du site d'Object Mentor). Ce dossier présente à la fois une synthèse et une discussion de ces principes.


API Design Matter
Why changing APIs might become a criminal offense


Programming in Scala
It's time to write some Scala code. Before we start on the in-depth Scala
tutorial, we put in two chapters that will give you the big picture of Scala,
and most importantly, get you writing code. We encourage you to actually
try out all the code examples presented in this chapter and the next as you
go. The best way to start learning Scala is to program in it.


The Final Word On the final Keyword
Some features of the Java language simply cannot be ignored. Consider for example interfaces, used extensively by every Java specification; or try/catch blocks, that form the basis for exception handling. Other features are more obscure – useful, but ignored by the masses. Without looking as far as volatile (probably the most obscure Java keyword), think about final. When was the last time you used final in your code?


Some Java Concurrency Tips
  • Prefer immutable objects/data
  • Hold Locks for as short a time as possible
  • Prefer executors and tasks to threads
  • Prefer Concurrency utilities to wait and notify
  • Producer Consumer Pattern
  • Synchronizers
  • Multithreaded Lazy Initialization is tricky
  • Prefer Normal initialization

Aucun commentaire: