vendredi 22 janvier 2010

Veille technologique semaine 3

Pour le bulletin de cette semaine, je vous propose les sujet suivants :
  • la fin de SUN confirmé par le père de Java : James Gosling,
  • l'histoire d'un projet : toute ressemblance est fortuite ...,
  • une présentation des Solid State Drive : SSD. Il y a un garbage collecteur !,
  • suite sur le model driven et la programmation par aspect :
  • Le HTML 5 et la video : l'offensive de YouTube, Vimeo, ...,
  • 2010 : l'année de la modularité : dm Server, OSGi, ...,
  • Le framework DataNucleus passe en version 2 : intègre les standards de persistance JDO, JPA sur plusieurs base de données. C'est le framework retenu par Google pour Google App Engine,
  • Le deuxième article sur l'injection de dépendance du standard JEE 6,
  • La sortie du JDK 6 update 18 : correction de bugs et performance améliorée (le garbage collector G1 (Garbage first) en particulier).
Bonne lecture.


So long, old friend...


C'est l'histoire d'un projet…
C'est l'histoire d'un projet, pas plus complexe que d'autres, pas plus simple non plus : une
application qui s'interface avec une base de données et 2 systèmes tiers. Du classique du point
de vue technique et architecture, du standard également du point de vue management : il faut
tout faire pour hier et il y a beaucoup à faire…bref, « ca va être chaud! » comme disent souvent
les développeurs mais personne ne le crie trop fort.

Alors on « staffe », on monte à 40 personnes, on spécialise les gens, on contractualise entre les
équipes. Les équipes s'organisent en pools, répondant à certaines demandes puis redispatchant d'autres demandes à d'autres pools. Un flux de demandes s'organise, certains pools chauffent et deviennent le « goulot d'étranglement », un stock se crée en amont alors que les équipes en aval attendent…Dès lors et pour ces pools en surchauffe, l'important devient l'urgent, il faut choisir parmi l'urgent pour répondre à l'immédiat, switcher de tâches en permanence et au final, la chaine globale ralentit.

En complément, les reportings commencent à virer au rouge dans les premiers niveaux de management. Mais au fur et à mesure de l'escalade de ces mêmes reportings dans la hiérarchie, ces derniers virent au vert tant et si bien qu'en « haut » : tout va bien. Absence de priorisation ou le « il faut tout faire » Pression du management ou la culture de la peur. A quelques semaines de la mise en production et alors que l'organisation en place chauffe, décision est prise de rajouter de la main d'oeuvre « everything fails all the time ». Pourquoi ne pas jouer avec et arrêter de l'ignorer ?


Comprendre les Solid State Drive
Depuis quelques années, les SSD font beaucoup parler d'eux. En effet, ces supports de stockage a base de mémoire flash sont très prometteurs, car ils permettent en théorie de se débarrasser de l'un des plus gros défauts des disques durs : les latences induites par le déplacement des têtes de lecture et la rotation du disque, qui sont de l'ordre de la dizaine de ms. A notre échelle, cela peut paraitre peu, mais à l'échelle d'un ordinateur dont le processeur fonctionne à plusieurs GHz, une attente de 10ms représente plusieurs millions de cycles d'horloge.
  • La mémoire flash
  • MLC, SLC
  • Secteurs, pages, blocs...
  • Wear-leveling
  • TRIM
  • Garbage collector
  • Contrôleurs: les forces en présence
  • Contrôleurs: qui utilise quoi ?
  • Conseils d'utilisation
  • Éviter les écritures inutiles
  • Ne pas défragmenter
  • Que faire du fichier swap ?
  • Surveillez les évolutions des systèmes d'exploitation
  • Journal ou pas?
  • Utiliser un système de fichier pour flash ?
  • Conclusion

The Role of Aspect-Oriented Programming in OMG's Model-Driven Architecture
A fundamental challenge of software development is bridging the vision of an application
to its realization. In practical terms, if we capture the vision in use cases and
requirements, without the distractions of implementation details, how then do we
generate conforming implementations on real platforms, while accounting for platform
idiosyncrasies, limitations, and other constraints? Despite years of research, this
generation process remains difficult. Fortunately, there are emerging technologies that
bring software generation closer to reality.

Model-Driven Development is one approach to this challenge, where the problem domain
is modeled at a high level of abstraction and the implementation is derived from these
models. The Object Management Group (OMG) has articulated a particular vision of
MDD called Model-Driven Architecture. MDA will include standards for modeling
problem domain specifications and mapping techniques for generating implementations
from them.

However, the challenge for MDA and other MDD variants is to define all these standards
and to make them work on real projects. This article describes how a new methodology,
Aspect-Oriented programming (AOP), helps make this possible.
What Is MDA?
  • The Challenge for MDA
  • Aspect-Oriented Programming (AOP)
  • How AOP Helps MDA
  • Aspect-Oriented MDA
  • Conclusions

YouTube se lance dans le HTML 5


YouTube vient de lancer la version beta de son service en HTML 5. Concrètement, il suffit d'activer l'option sur cette page pour voir le format Flash disparaître de votre navigateur. Le format choisi par YouTube est le H.264, ce qui limite la chose aux navigateurs tels que Chrome et Safari (quoi qu'il soit également possible d'y accéder avec Internet Explorer pour peu que ses utilisateurs aient choisi d'installer le plugin Chrome Frame).

La nouvelle est de taille car elle apporte un soutien de poids au codec H.264, alors que le W3C est perclus de querelles intestines quant au standard à adopter. Dailymotion pour sa part propose une version HTML 5 qui propose tant le H.264 que l'Ogg Theora, préféré par Mozilla Firefox.

Une fois la fonction activée dans YouTube, toutes les vidéos s'afficheront sans Flash, du moins celles qui sont disponibles au format H.264, sans avoir à modifier l'adresse URL, la bascule est donc transparente (à noter cependant que l'option peut ne pas être disponible suivant les autres options que vous avez pu activer dans le "testtube"). Sur Dailymotion en revanche il faut précéder l'adresse d'une vidéo du TLD "openvideo" pour avoir sa version HTML 5.

Cependant, cette version HTML 5 n'est pas exempte de défauts : il est impossible de basculer la lecture en plein écran, les annotations ne sont plus visibles, pas plus d'ailleurs que les publicités (ce que vous considérerez comme un avantage ou un inconvénient selon que vous êtes simple visiteur ou que vous cherchez à monétiser vos vidéos).

D'autre part, à l'inverse de Flash, le HTML 5 ne permet pas d'empêcher d'intégrer une vidéo dans un autre lecteur que celui de YouTube, un problème que la plupart des diffuseurs ont soulevé auprès du groupe de travail dédié au futur standard du web. Ainsi, il est possible à un concurrent de YouTube de diffuser les vidéos hébergées sur ses serveurs et de les afficher dans son interface maison comme si de rien n'était…

Bref, il reste encore beaucoup à faire pour que le HTML 5 soit une alternative viable pour tous les acteurs, mais on peut malgré tout commencer à en profiter dès maintenant.


Vimeo se lance (aussi) dans le HTML 5

C'est la fête à Flash depuis 24h, après YouTube c'est au tour de Vimeo, l'un de ses concurrents, d'annoncer également un accès à ses vidéos selon la norme HTML 5. Vimeo n'a pas la surface du service de Google (et il est en partie payant pour l'hébergement) mais il a su gagner ses galons au fil du temps par la qualité de ses encodages, il fut l'un des premiers par exemple à se mettre à la HD. 90% des films uploadés en 2009 sont lisibles en HTML 5. Sur la totalité du fond, 35% nécessite encore Flash.

La bascule d'une vidéo Flash vers son équivalent HTML 5 se fait par un lien en bas à droite de chaque clip. Pour le moment ça ne fonctionne que sur le site de Vimeo, et pas encore pour les vidéos intégrées dans des pages externes. Pas de lecture plein écran non plus.

Pour les avantages, on retrouve les même que chez YouTube : temps de chargement plus rapide, possibilité d'avancer dans la vidéo sans attendre que la section désirée soit déjà en cache et normalement une meilleure fluidité de lecture avec une pression relâchée sur les processeurs. Il faut toutefois souligner que cette prestation est encore en bêta.


Google fights Flash, adds HTML5 support for YouTube videos
Google this week added support for HTML5 playback of videos in its own Chrome browser as well as Safari from Apple. The new feature allows users to watch video without the longstanding Internet standard: Adobe Flash.

YouTube's HTML5 support is offered through a beta opt-in program and is currently only available with browsers that support both HTML5 and H.264 video encoding.

This limits the beta to Google's Chrome and Apple's Safari browsers. Microsoft's Internet Explorer is also supported if Google's Chrome Frame is installed.

The HTML5 player fully replaces the Flash player for most videos on the site, but some limitations do exist. Videos with advertisements are currently not supported, and will play instead in the Flash player. Fullscreen playback is also not yet supported.

YouTube refers to the opt-in as "an experiment" and welcomes feedback from the community on its HTML5 integration.

HTML5 allows video to be rendered natively inside the browser, as opposed to Flash which requires a browser plug-in to be installed.

Flash is still not supported on Apple's iPhone. Major sites that use Flash for video on the web, including YouTube, CBS Mobile, and the BBC, now push standard H.264 video to the iPhone directly.

Beginning Thursday, video site Vimeo also will begin to support HTML5 playback. Playback using the HTML 5 standard is available on the same browsers that YouTube supports: Chrome, Safari, and IE with Chrome Frame.


YouTube announces HTML5 demo, but not for FireFox 3.6
YouTube have announced a beta of HTML5 support. These are broadcasting videos in H.264 format for browsers that understand HTML5's tag. The choice of H.264 is perhaps unsurprising, since that's what Apple's iPhone supports natively (and indeed, is how the YouTube mobile application is rendered). This means that other browsers that don't support H.264 won't be able to render content. The initial supported list includes Safari 4+, Google Chrome and the Chrome Frame plugin for Internet Explorer. Although FireFox 3.6 was released today with HTML5 support, it only supports the open-source OGG video format.


Bundle.update: The Year of Modularity
A lot seems to have happened since the last Bundle.udpate, despite the usual vacation slowdown that happens at this time of year.


DataNucleus AccessPlatform 2.0 Released
DataNucleus AccessPlatform 2.0.0 has just been released. AccessPlatform provides access to a range of datastores for Java applications using JDO/JPA API's. It is fully compliant with JDO1, JDO2, JDO2.1, JDO2.2, JPA1, as well as providing complete JDO2.3 support, and the majority of JPA2. It currently supports persistence to RDBMS, db4o, NeoDatis, LDAP, XML, Excel, ODF, JSON, Amazon S3, HBase (HADOOP), as well as Google AppEngine BigTable.

AccessPlatform additionally allows configuration of classes to be persisted using JDO annotations/XML/API or JPA annotations/XML providing access to both JDO and JPA persistence APIs regardless of which configuration method was chosen, offering flexibility not seen in any other persistence tool. Querying of the supported datastores can be performed using JDOQL, JPQL or SQL (dependent on the datastore). By making use of standardised APIs, the process of swapping persistence from one datastore to another is a simple URL change when specifying the datastore. AccessPlatform is made up of a series of OSGi compliant jars, and can be utilised in J2SE, J2EE, or OSGi container environments. By using OSGi together with Eclipse extension-points, DataNucleus is highly extensible so if you wanted to provide support for your own datastore then this would be a relatively simple procedure. DataNucleus Access Platform is licensed under the flexible Apache 2 license.

DataNucleus Access Platform 2.0 provides the following over and above what DataNucleus 1.x provides :-
  • Significantly reworked internal API's to aid easier support for other datastores, and datastore features in the future
  • Support for persistence to Amazon S3
  • Support for persistence to HBase (HADOOP)
  • Support for persistence to Oracle Timesten
  • Support for persistence of JodaTime fields
  • Support for auto-generation of primary key classes during enhancement
  • Change default for non-transactional read/write to true for JDO
  • Support atomic non-transactional write persist/delete operations
  • Level 2 Cache is now enabled by default (soft)
  • Split query cache into 3 components : generic compilation, datastore compilation and query results. Added API for managing caching of query results (using JDO or JPA).
  • Cache : Support for pinning/unpinning of query results with Memcache/javax.cache
  • Support for JDO 2.3 Query cancel, and datastore read/write timeout
  • Support for explicit JPA extended persistence context
  • Support for JPA2 metamodel API
  • Support for bean validation with JPA2
  • Support for various new JPA2 JPQL keywords
  • Support for JPA2 1-N FK bidirectional relations
  • Support for JPA2 1-N collection/map of non-persistable objects.
  • Support for JPA2 TypedQuery
  • Support for update/delete-by-query for RDBMS (JPQL)
  • Rewritten RDBMS JPQL implementation building on generic query compiler. This is now the default JPQL implementation for RDBMS, and can be used with the query caching mechanism.
  • Rewritten RDBMS JDOQL implementation building on generic query compiler. This is not currently the default JDOQL implementation but is available to be used, and can be used with the query caching mechanism.
  • LDAP : Support for persistence of recursive object graph to hierarchical structure
  • Add support for PMF/EMF singleton pattern, via persistence property
  • Spatial : Many fixes to handling of JTS types.
Many bug fixes, and minor feature additions.

Documentation is available to view online (HTML) or available to download (HTML/PDF).
Limited free support for AccessPlatform is provided by way of our forum. Commercial support and consulting is also provided.


This is the second part of a multi-article series.
Dependency Injection in Java EE 6 - Part 2


This series of articles introduces Contexts and Dependency Injection for Java EE (CDI), a key part of the Java EE 6 platform. Standardized via JSR 299, CDI is the de-facto API for comprehensive nextgeneration type-safe dependency injection as well as robust context management for Java EE. Led by Gavin King, JSR 299 aims to synthesize the best-of-breed features from solutions like Seam, Guice and Spring while adding many useful innovations of its own.


Sun Releases Java 6 Update 18 With Significant Performance Improvements and Windows 7 Support
Sun have released Java 6 update 18 with a strong emphasis on performance improvements, including a new version of Hotspot (16.0), start-up improvements and run-time improvements for UI applications. The release also includes support for Ubuntu 8.04, Red Hat Enterprise Linux 5.3 and Windows 7, along with an impressive 357 bug fixes.


Performance Improvements
• Java Hotspot VM 16.0
6u18 includes version 16.0 of the Java HotSpot Virtual Machine.
Contributing to increased performance in this release are several
enhancements in Java HotSpot VM 16.0. These include:

• Improved NUMA-aware allocation
• Extensions to compressed object pointers

• Garbage collection improvements
• Updated Client JVM heap configuration


In the Client JVM, the default Java heap configuration has been modified to improve the performance of today's rich client applications. Initial and maximum heap sizes are larger and settings related to generational garbage collection are better tuned.

• The default maximum heap size is half of the physical memory up to a physical memory size of 192 megabytes and otherwise one fourth of the physical memory up to a physical memory size of 1 gigabyte.


For example, if your machine has 128 megabytes of physical memory, then the maximum heap size is 64 megabytes, and greater than or equal to 1 gigabyte of physical memory results in a maximum heap size of 256 megabytes.


• The maximum heap size is not actually used by the JVM unless your program creates enough objects to require it. A much smaller amount, termed the initial heap size, is allocated during JVM initialization. This amount is at least 8 megabytes and otherwise 1/64 of physical memory up to a physical memory size of 1 gigabyte.


• The maximum amount of space allocated to the young generation is one third of the total heap size.
• The updated heap configuration ergonomics apply to all collectors except Concurrent Mark-Sweep (CMS). CMS heap configuration ergonomics remain the same.
• Server JVM heap configuration ergonomics are now the same as the Client, except that the default maximum heap size for 32-bit JVMs is 1 gigabyte, corresponding to a physical memory size of 4 gigabytes, and for 64-bit JVMs is 32 gigabytes, corresponding to a physical memory size of 128 gigabytes.

• Work stealing termination
• Work queue overflow processing

• Bit set processing on 64-bit Linux
• Class loading optimizations for faster startup (see Bug Fixes section)

• Code generation improvements
• New intrinsics using SSE 4.2

• New intrinsics for Integer/Long bit operations - leading/trailing zeros, bit count
• Unsigned byte and integer loads
• Integer load shortening
• Elision of needless conversions between integer primitive types
• Optimization of common string concatenation patterns

• Garbage First (G1) garbage collector
• Improved reliability and performance
• Available as "early access" software. Usage of G1 in production settings without a Java SE for Business support contract is not recommended.

For more information about G1, see the G1 technology page.

In addition to performance enhancements, HotSpot VM 16.0 offers improved reliability and serviceability.

• Serviceability enhancements
• New options to request a heap dump or class histogram before or after a full GC
• New tool to decode LogCompilation output

• Extensive reliability improvements (see Bug Fixes section)

Note that Escape analysis-based optimization (-XX:+DoEscapeAnalysis) is disabled in 6u18. This option will be restored in a future Java SE 6 update.


Aucun commentaire: