vendredi 5 juin 2009

Veille technologique semaine 23

Je vous propose, pour le bulletin de cette semaine, les articles suivants :
  • JavaOne 2009 qui c'est passé cette semaine : résumé des 5 jours.
  • l'annonce de java applications store par SUN : du même genre que App Store pour l'iPhone.
  • Google confirme que sa plateforme logiciel est le web, avec les session de Google I/O ou ils ont présentés l'application de collaboration Google Wave.
  • Le club Java de Paris présente mardi 9 juin, Java avancé.
  • La sortie de JavaFX 1.2 qui commence à être utilisable, avec des démonstrations convaincantes.
  • JavaFX c'est quoi ? Petit résumé pour utilisateur.
  • Le JDK et la modularité : intégration d'une partie des concepts de OSGi avec comme conséquence la suppression du classpath !
  • La sortie du JDK 6 update 14 qui propose : le garbage collector First avec des qualités de déterminisme intéressant, la compression de pointeur, et des amélioration de l'escape analysis. A suivre de très près.
  • Les problèmes nouveaux du logiciel qui doit prendre en compte la programmation concurrente pour bénéficier de l'augmentation de la puissance des CPU.
Bonne lecture.


JavaOne 2009
Towards the end of the Day 1 morning keynote at JavaOne 2009, Scott McNealy called Oracle CEO Larry Ellison up on stage to address the $7.4 billion dollar question -- what will be the future of Java? Java's forthcoming 'leader' assured an uncertain audience that Oracle would continue its investment in the Java platform. With a resounding applause, the next chapter of Java unfolded.


Java One 2009
Java One 2009 Day 0
Java One 2009 Day 1
Java One 2009 Day 2
Java One 2009 Day 3
Java One 2009 Day 4


Sun announces store.java.com
As a part of the opening general session of JavaOne on Tuesday, Scott McNealy and James Gosling unveiled the Java Store, at store.java.com. The purpose of the Java Store is to give developers who are building Java applications that they care about on their own time the opportunity to make money from them. The motto of this announcement was to "turn a labor of love into a day job."

Right now, the store is in beta, and while developers can post applications to the store (with a not-announced approval process), there is no ability to pay for those applications today. Gosling said that they have explored several possible mechanisms for payment, but want feedback from the community on the best approach.

This sounds like a great opportunity to get new Java applications to the world at large, and may represent a way for Java developers to eventually see some financial return for the investments they are making in specific projects.



Google I/O 2009
Google I/O 2009 s'est tenu la semaine dernière à San Francisco. Il s'agit d'une des conférence destinées aux développeurs utilisateurs des applications et des API de Google.
Dans cet article, je vais donc revenir sur les annonces et points marquants de ces deux jours de conférences.
D'autre part, les vidéos des keynotes sont disponibles, vous pouvez consulter celle du premier jour (html5, android, web components …) ou celle du second jour (google wave).
Google I/O 2009, voici ce que j'en ai retenu :
Le futur du Web, avec les premières démonstrations émoustillantes HTML 5.
Google Wave, le prochain outil de communication et collaboration made in Google.
La réconciliation de Google avec GWT et la sortie de GWT Query.
Le futur d'Android, avec l'annonce de la branche Android 2.0 : Donut.
Java sur Google App Engine en GA.
Google Web Elements, comment intégrer les services Google dans vos pages web.
Les macros dans Google Document, avec Google Apps Script.
Arrivée des extensions dans Chrome.


Google Wave
Google Wave is three things: a tool, a platform and a protocol. The architecture has at its heart the Operational Transformation (OT), a theoretical framework meant to support concurrency control.
First of all, a definition is needed. Google Wave is: a new communication and collaboration platform based on hosted XML documents (called waves) supporting concurrent modifications and lowlatency updates.


Is Google Wave Going to Have an Impact on RIA/Silverlight?
The recently announced Google Wave platform which is promoting HTML 5 is believed by some to have a major impact on RIA, including Silverlight, while others consider that Wave is actually a competitor for Microsoft's SharePoint and Exchange rather than RIA. It's poll time.
The HTML 5 specification contains some long demanded features that will probably make inroads into RIA space, specifically Flash, Silverlight and Java FX. Actually, RIA platforms were invented because HTML was providing too little desktop-like experience. This is going to change. HTML 5 is not yet standardized, but elements of it are already introduced in Firefox, Chrome, Safari and Opera. Microsoft promised they will support HTML 5 too. Some of the new features to be introduced in HTML 5 and web API proposals from W3C and WHATWG are: canvas, video, geolocation and web workers.


Google Pushes the Web Platform with Chrome 2.0 and Wave
Google has announced two more tools that will help in its mission "to organize the world's information and make it universally accessible and useful". One of them is version 2.0 of its Chrome browser which aims to facilitate demanding client-side applications and the other one is Wave, a new environment for communication and collaboration on the Web. On September 1st, 2008, Google announced its new open source browser, Google Chrome. The introduction of a new web browser by Google, a major player in the web by anyone's standards, resulted back then in a flurry of attention, analysis and soothsaying. Since then Google has been collecting feedback and feature requests some of have made it into the Beta version that we first released in March. In version 2.0 that was announced a few days ago, Google reports to have fixed over 300 bugs, while adding several improvements:


Java User Group Paris
Soirée Java Avancé (09 / 06 / 2009)
19h30 à 19h55 : Typage et généricité dans Java
20h00 à 20h25 : Les annotations
21h05 à 21h30 : l'API Java Concurrent


JavaFX 1.2 est arrivé
En accord avec le planning annoncé dès décembre dernier lors de
Devoxx, une nouvelle version de JavaFX vient d'être mise à disposition. Les apports sont nombreux et comblent certains manques de la version 1.1. Le site de JavaFX propose un tour d'horizon très complet des nouveautés et Stephen Chin en présente un résumé accompagné d'un guide de migration. On retiendra : Ajout de widgets propres à JavaFX, skinnables et disponibles sur toute les plate-formes. Il n'est donc plus nécessaire de faire appel à des composants Swing (qui étaient inaccessibles sur mobile). L'ensemble des composants simples sont disponibles (bouton, checkbox, …), par contre la ListView est le seul composant de haut niveau à être fourni, pas detable, ni de tree.
Ajout de composants dédiés à la création de graphiques de type Area, Bar, Bubble, Line, Pie, Scatter et X/Y.
Ajout de nouveaux layouts en supplément des VBox et HBox déjà disponibles.
Support de Linux et Solaris.
La compatibilité des binaires générés par JavaFX n'est pas assurée entre cette nouvelle version 1.2 et ses prédécesseurs. Il sera donc nécessaire de recompiler les applications pour assurer la migration.

Le nouveau JavaFX sera donc sorti dans les temps pour être le sujet de nombreuses présentations et annonces lors de JavaOne qui débute aujourd'hui même à San Fransisco. Comme nous vous en parlions il y a quelques semaines, le support des TVs pourrait y faire l'objet d'une démonstration.


Getting Started with JavaFX
JavaFX is an exciting new platform for building Rich Internet Applications with graphics, animation, and media. It is built on Java technology, so it is interoperable with existing Java libraries, and is designed to be portable across different embedded devices including mobile phones and set-top boxes. This Refcard will help you get started programming with JavaFX Script and also serve as a convenient reference once you have mastered the language.


JavaOne: Jigsaw and Java Modularity
I started off the morning at a pair of Java modularity talks by Mark Reinhold on Jigsaw and from Alex Buckley on JSR 294. Mark's talk was apparently a dup of the technical general session yesterday but I missed that so that was actually good for me. Project Jigsaw aims to provide a module system for the JDK itself (also open for external users). This system provides the means for packaging and deploying applications based on modules. I found it somewhat hard to separate in this talk which parts were Jigsaw and which parts were defined by JSR 294 but Alex's subsequent talk helped further break that down.


Sun's released the the Java Development Kit 6 update 14.
"This release is Windows 7 support-ready and includes support for Internet Explorer 8, Windows Server 2008 SP2, and Windows Vista SP2. New features include the G1 garbage collector, plus performance and security enhancements."

Java HotSpot VM 14.0

6u14 includes version 14.0 of the Java HotSpot Virtual Machine, which provides improved reliability, serviceability and performance.

Contributing to increased performance in this release are numerous enhancements to HotSpot's optimizing compiler, more efficient SoftReference processing and improvements to Parallel Compacting garbage collection. Optionally available are two new features - escape analysis and compressed object pointers. A preliminary version of the new Garbage First (G1) garbage collector is also included.

• Optimization Using Escape Analysis

• Compressed Object Pointers

• Garbage First (G1) Garbage Collector


Improvement TreeMap Iteration

Java VisualVM Updates

6u14 contains the following updates to Java VisualVM:

  • CPU usage and GC activity graph in the Monitor tab
  • Table view in the Threads tab
  • Command line options: --openpid, --openjmx, --openfile
  • Compare Memory Snapshots action in the context menu
  • Copy To Clipboard / Save To File buttons in the About dialog
  • Monitoring IBM JVM via JMX connection
  • Based on NetBeans Platform 6.5 and NetBeans Profiler 6.5
  • Faster computation of references, and improved readability of path to GC root in HeapWalker
  • Improved integration of the Visual GC tool

La programmation concurrente :
Les processeurs en ont en effet terminé avec la progression verticale : au lieu d'augmenter la puissance brute des processeurs, on augmente leur nombre. On obtient ainsi, du moins potentiellement, un bien meilleur rapport puissance/consommation. Le problème c'est qu'il faut désormais bâtir les logiciels très différemment pour en tirer parti. Ainsi, il faut couper les tâches en petits morceaux afin de les faire exécuter simultanément par les différents processeurs et leurs multiples cores. L'opération n'est résolument pas aisée, et nécessite une refonte de l'architecture des logiciels.

Ne nous leurrons pas : le parallélisme n'est qu'un pis aller. S'il permet de mieux tirer parti de nos multicores, toutes les opérations ne s'y plient pas pour autant, et nécessiteront une refonte des logiciels, alors qu'une augmentation de la puissance brute des processeurs était directement exploitable sans rien changer du côté logiciel. On voit déjà bien peu d'applications qui tirent parti des biprocesseurs. Les choses ne vont pas aller en s'arrangeant, car la multiplication des processeurs n'ira qu'en augmentant. Imaginez le casse-tête quand nous aurons pas moins de 32 processeurs dans nos machines!

Pourtant, l'industrie informatique a une longue expérience du multiprocessing, dans le champ d'application des serveurs notamment. Mais il y a un univers entre une application pour plusieurs utilisateurs et plusieurs applications pour un seul utilisateur, caractéristique essentielle qui différencie l'environnement serveur de celui que nous côtoyons quotidiennement. En effet, les applications serveur se prêtent par nature au parallélisme, chaque utilisateur étant susceptible de lancer une tâche qui s'exécute simultanément aux autres. Après tout, plusieurs processeurs dans une seule machine, c'est un peu comme si vous utilisiez plusieurs ordinateurs simultanément, et encore, ça n'en a pas tous les avantages, puisqu'on conserve une seule allocation mémoire vive, et la plupart du temps un seul disque dur, qui font figure de goulot d'étranglement en entrée et en sortie des processeurs. Les logiciels qui fonctionnent se contentent, la plupart du temps, d'utiliser de la mémoire et quelques cycles processeur ici ou là lorsqu'elles sont en tâche de fond : ça n'est pas tous les jours qu'on lance plusieurs opérations simultanément. Le parallélisme sur l'ordinateur personnel s'attache donc à découper les opérations monolithiques en petits morceaux à exécuter concomitamment. Seulement voilà, nombre de ces opérations sont séquentielles, chaque résultat dépend d'une opération précédente.

Il est d'ailleurs assez ironique de constater que, en regard de cette mise en parallèle des tâches avec les multiprocesseurs, une autre poussée va dans le sens radicalement opposé avec les GPGPU. Quand l'un s'attache à découper les opérations pour les répartir sur plusieurs processeurs, l'autre les unifie pour les traiter en une seule passe. C'est sans doute ce qui permet de mieux appréhender la différence fondamentale entre un CPU et un GPU. L'un dispose d'une multitude de portes étroites, quand l'autre n'en propose qu'une seule, mais béante. Jerry Harris, responsable scientifique au sein de l'équipe de développement de Photoshop, l'explique en termes imagés dans cette interview : le multiprocessing, c'est comme si on travaillait avec un troupeau d'ânes : on peut se débrouiller avec deux, mais à partir de quatre ou cinq, ça devient invivable, car ils n'en font qu'à leur tête. Alors qu'un GPU se comporte plus comme un banc de poissons ou une volée d'oiseaux : plus il y en a, et mieux ça se passe.

Les GPU sont entièrement voués à traiter de larges amas de données de manière très véloce. Mais cette approche n'est pas exempte d'inconvénients. Il faut déjà que les données et les opérations s'y prêtent, ce qui n'est pas le cas de toutes. Mais même dans ce cas, les GPU étaient jusqu'ici conçus pour être autonomes : une fois qu'on leur a envoyé les données et la nature des opérations à effectuer dessus, on ne s'en préoccupe plus, le GPU les garde dans son coin, par exemple pour afficher une texture à l'écran, sans repasser par la case processeur. L'utilisation d'un GPU comme coprocesseur implique qu'on récupère le résultat pour en faire autre chose, et comme le GPU peut appliquer une seule et même opération sur un lot hétérogène de données, on est susceptible de n'en demander qu'une partie à un instant T. Or, cette opération fait figure de goulot d'étranglement, la récupération de données étant plus lente que le calcul !

On le sait depuis longtemps, le micro-processeur à base de silicium arrive en bout de course. On réduit la résolution de gravure d'année en année, vaille que vaille, mais viendra un moment où on ne pourra pas aller au-delà. La frontière ultime et indépassable, c'est la taille de l'atome. Alors que les nanotechnologies font parler d'elles dans d'autres industries, voilà bien longtemps que, d'une certaine manière, l'informatique en est une représentante de taille. Il faudra, tôt ou tard, changer de paradigme, ce qui représentera une révolution à bien des égards. S'il y a différentes pistes de recherche qui sont très prometteuses (processeur optique, processeur quantique, supraconductivité…), elles sont pour l'heure bien loin d'être mises en application et pour certaines font plus figure de science-fiction. D'ici là il faudra bien composer avec les moyens dont nous disposons.

Aucun commentaire: