vendredi 26 février 2010

Veille technologique semaine 8

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • les journées Microsoft Techdays 2010 : présentation des nouveautés,
  • Visual Studio 2010 met la barre très haute : Microsoft à écouté les remarques de ses utilisateurs,
  • les 10 raisons (de la part de Microsoft) pour lesquelles HTML 5 ne remplacera pas Silverlight,
  • interview de Mark Reinhold au sujet du JDK 7, les objectifs sur la JVM,
  • sortie d'un COTS de transaction mémoire : Multiverse STM, c'est une solution qui implémente les propriétés ACID, et qui gère le thread safe à la place du développeur. Un projet à suive de près.
  • Les technologies du cloud computing ont besoin d'un service de notification : une API d'événement.
  • des articles au sujet de la réunion des architectures SOA et EDA : ED-SOA.
  • Java Enterprise Edition 6 avec les EJB 3.1 : un très bon exemple qui illustre le principe qu'il vaut mieux avoir une convention plutôt qu'une configuration (convention over configuration).
  • Les règles de compatibilité ascendante en Java : compatibilité au niveau code, binaire et exécution. Ce sont des règles écrite par IBM et proposées sur le site d'eclipse.

Bonne lecture.


Microsoft Techdays 2010 (1/3)
Les Techdays sont l'occasion pour Microsoft de présenter chaque année à ses utilisateurs, du plus geek au plus boss, sa gamme de produits, d'outils sous forme de présentations, d'ateliers ou de retour d'expérience. Difficile de couvrir complètement cet événement tant l'offre de sessions est pléthorique, nous vous proposons donc, à travers une série de posts, sur les sessions que nous avions choisi et de partager avec vous notre ressenti. Ce premier post revient plus particulièrement sur le lancement des nouveaux frameworks.


VS 2010 met la barre très haute
Cette semaine, Microsoft a rendu disponible la tant attendue Release Candidate de VS 2010. Pour avoir testé la béta 2, je faisais partie de ceux qui étaient en faveur d'une révision générale des performances. Après avoir testé intensivement cette nouvelle mouture, je crois qu'on peut le dire haut et fort : Microsoft a écouté la communauté. Cette RC est un vrai bijou.


Top 10 Reasons why HTML 5 is not ready to replace Silverlight
Note: I know this topic is controversial, so I want to preface that this article is meant to be a conversation. If you don't agree with something or I have information incorrect, please add a comment or e-mail me. As the HTML 5 spec evolves, I will update this article. HTML 5 is the next update to the HTML standard that powers the web. There are many new exciting features being added like the the canvas element, local offline storage, drag and drop and video playback support. HTML needed to evolve and added these features in order to stay relevant as the de facto markup language that can provide a rich web experience.


OTN Tech Cast LIVE: Justin Kestelyn Interviews Mark Reinhold

Yesterday, in a live Tech Cast event on the Oracle Technology Network (OTN), Justin Kestelyn interviewed Mark Reinhold. The interview is currently available in full bandwidth, and it will be available in Brightcove and audio-only versions within the next few days. [Note: a lower bandwidth edition is now available athttps://channelsun.sun.com/media/show/15028.] If you are familiar with Mark's work, you'll not be surprised to find that Java 7 was the central topic of conversation.

Attendance at the live event peaked at about 80 people. The interview occupied about 30 minutes, and included a question and answer period where Mark addressed questions from the audience that were submitted via Facebook or Twitter.

Mark cited four primary objectives for Java 7:
1. Modularity - make Java scalable downward, for customizable use on small devices; this will also address the "jar hell" problem once and for all
2. Multilingual support
3. Make Java a more productive language, through improvements like Project Coin, the new diamond operator, strings and switch, and JSR-203 (NIO.2)
4. Performance improvements - Hotspot and JRockit VM development, parallel array, closures (which will make implementation of parallel array structures much more convenient)

In response to a question from Justin, Mark said that upcoming Milestone 6 release will likely include the diamond operator and strings and switches, and subsequent near-term milestone releases will include a new Python-like syntax for initializers and elements from Project Jigsaw (modularity).

After a brief discussion of the history of the closures debate, the floor was opened to questions.

Visit the oracletechnologynetworklive page at LiveStream to watch the interview [or at https://channelsun.sun.com/media/show/15028 if you prefer a lower-bandwidth view].



Multiverse STM 0.4 released
Multiverse is an Open Source (Apache 2 License) Software Transactional Memory implementation for the Java platform that has been under development for the last 18 months. One of the big goals for the 0.4 release was to move from a cool project to a really usable product.

Although traditional lock based concurrency control is very powerful (the internals of Multiverse rely on it), it also is very complex and error prone. The idea of (Software) Transactional Memory is to rely on transactions to prevent isolation problems and I see STM's as filling the gap between traditional lock based concurrency and traditional databases.

features:
* optional readonly transactions
* optional read tracking
* blocking primitives like the retry/orelse for creating blocking data-structures likes stacks or queues.
* optional field level granularity
* optional writeskew prevention
* compensating and deferred task execution
* nested transactions
* basic Scala integration
* commit barriers to realise lightweight 2 phase commits.
* transactional data-structures (List, BlockingQueue, BlockingDeque)
* transactional executor
* transactional references and primitives

The goals for the 0.5 release (expected in 8 to 12 weeks):
* commuting operations (needed for better scaling data structures)
* more transactional data-structures (tree e.g.)
* non blocking transactions; similar to non blocking io where one thread can execute more than 1 transaction.
* compile-time bytecode transformation (so no need for a javaagent)
* lots of performance improvements

Long term goals:
* many more performance improvements
* transparent persistence
* distributed transactions and distributed transactional objects.
* JEE integration (JTA/JPA etc)
* entering the eXtreme Transaction Processing arena
* contention Management
* seamless Scala & Groovy integration

Check out the site for more information:
http://multiverse.codehaus.org


The Need for an Event-based API in the Cloud
Events/alerts/notifications have been a central concept in IT management at least since the first SNMP trap was emitted, and probably even long before that. And yet they are curiously absent from all the Cloud management APIs/protocols.


Event-Driven Architecture and Service-Oriented Architecture
This paper explores what event-driven architecture is, and how it relates to service-oriented architecture and enterprise service bus.


Event-Driven SOA Architecture Overview
Event-Driven SOA. In the first interaction, the occurrence of an event (a notable thing that happens inside or outside your business) can trigger the invocation of one or many services. Those services may perform simple functions, or entire business processes. This interaction between events and services is commonly referred to as event-driven SOA.

(1) the fusion of SOA and EDA into ED-SOA (event-driven, service oriented architecture) is the way of the future,
(2) building processes is greatly facilitated by ED-SOAs,
(3) conversely ED-SOAs can be constructed as layered architectures using BPM systems.
(4) CEP principles must become an integral component of both ED-SOAs and business processes because of the ever increasing quest for control of our business processes, real time autonomous operation, and the need to gather business intelligence from the events flowing through our IT systems.


Java EE6: EJB3.1 Is a Compelling Evolution
The Enterprise Java Bean 3.0 (EJB 3) specification marked a very important way-point in the long march of Java in the enterprise. The specification was built very apparently with input from the community. It represented a much more consistent services paradigm, one that was more POJO-friendly and generally less complicated. The level of indirection afforded by Java 5's annotations made the paradigm more powerful while requiring less of the developer. The willingness to forsake bad legacy decisions for different, new solutions, made the framework interesting to people who might have previously shunned EJB. EJB Entity Beans disappeared, replaced with JPA Entities. The handful (or more) of Java classes and interfaces required for your average bean in EJB 2.1 or before became 2+ Java classes or interfaces. Convention-over-configuration based defaults were put into place to make it more straightforward to get up and running. EJB 3.0 was a revolution.

New Features in EJB 3.1

  • Singletons
  • The EJB Timer
  • No-Interface Views
  • Asynchronous Services
  • Simplified Deployment

Evolving Java-based APIs
This document is about how to evolve Java-based APIs while maintaining compatibility with existing client code. Without loss of generality, we'll assume that there is a Component with a Component API, with one party providing the Component and controlling its API. The other party, or parties, write Client code that use the Component's services through its API. This is a very typical arrangement.

Achieving API Binary Compatibility

Other notes

vendredi 19 février 2010

Veille technologique semaine 7

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Google annonce l'arrêt du support des anciennes versions des navigateurs suivant : IE6, Firefox 2, Chrome 3 ou Safari 2. Demandez à vos administrateurs la mise à jour si nécessaire.
  • Les derniers navigateurs internet intègre une base de donnée SQL (en générale SQLite),
  • Le nommage dans le code : français ? anglais ou franglais ? That is the question ?
  • Le péril du typage faible : le Duck Typing,
  • un retour d'expérience sur les système de gestion de configuration. Un article écrit par Martin Fowler qui résume les remarques sur les outils ClearCase, Subversion, ...
  • Un article qui propose de faire une synthèse des patterns d'IHM : le MVC, le MVP et le MVVM. C'est quoi toutes ces différences ?
  • Un article sur la programmation par aspect (AOP) et l'injection de dépendance (DI) : par l'auteur de la librairie javassit.
  • Un résumé du modèle d'événement proposé par IBM pour SCA (Service Component Architecure) : modèle de composant orienté service (SOA) et orienté événement (EDA). Le deuxième article résume la terminologie et la forme en Java.
  • Description du standard UUID (Universally Unique IDentifier), depuis wikipédia. C'est un standard qui propose une allocation d'identifier unique dans le temps (modulo 3600 ans, qui peut donc être persistant) et dans l'espace (toutes les machines en réseau) sans coordination centralisé.
  • Le composeur pour JavaFX de NetBeans en version preview 2 avec l'intégration des Shapes, des Charts, ... Bientôt sur dans nos IHM,
  • La suite sur le sujet du passage des argument d'opération et C# : la question du passage par valeur ou par référence d'objet reste posée : comment gère-t-on le multi-threading avec les qualifiers proposés ?
  • Pour terminer, un Quiz sur la compilation d'une interface Java : quelles sont les lignes qui se compile et celle qui ne se compile pas ?

Bonne lecture.


Google Will Stop Supporting Older Browsers
Google has announced they will stop supporting older and less secure browsers like IE6, Firefox 2.x, Chrome 3 or Safari 2 starting with Google Docs and Google Sites editor from March 1st, 2010.


Chrome 4 Now Supports the HTML 5 Web SQL Database API
Google has announced support for the HTML 5 Web SQL Database API, and others are likely to follow soon or have already started on support for this API. In the meantime, the completion of the specification is blocked because all the implementers involved have chosen to use SQLite as underlying database, and multiple independent implementations are required for standardization.
As part of HTML 5, the W3C organization is working on a draft of the Web SQL Database API, a specification which covers storing and accessing data through SQL. The SQL language dialect which is described in the documentation is that of SQLite 3.6.19. This API allows web pages to contain code that interacts with an embedded client database, which is useful for applications wanting to store data locally or for offline browsing.


Nommage en Anglais ou Francais ou Franglais
Au démarrage d'un projet et à des fins de qualité de développement l'équipe doit s'imposer des conventions et des bonnes pratiques à respecter tout au long de ce projet. Il existe de nombreuses bonnes pratiques admises. Par exemple pour les
nommages des variables et attributs on utilise le Camel Case, comme le suggère les conventions de nommage Sun.


The Perils of Duck Typing
The idea behind "Duck Typing", which has recently be made popular again by Ruby and other script languages, is to make the concept of types less restrictive.

Duck Typing is a big time saver when you write code, but is it worth it? Don't you pay this ease of development much later in the development cycle? Isn't there a risk that you might be shipping code that is broken?

The answer is obviously yes.

The proponents of Duck Typing are usually quick to point out that it should never happen if you write your tests correctly. This is a fair point, but we all know how hard it is to guarantee that your tests cover 100% of the functional aspects of your application.

Another danger in the Duck Typing approach is that it makes it really hard to see what the contract is between callers and callees.


Version Control Tools
If you spend time talking to software developers about tools, one of the biggest topics I hear about are version control tools. Once you've got to the point of using version control tools, and any competent developers does, then they become a big part of your life. Version tools are not just important for maintaining a history of a project, they are also the foundation for a team to collaborate. So it's no surprise that I hear frequent complaints about poor version control tools.
In our recent ThoughtWorks technology radar, we called out two items as version control tools that enterprises should be assessing for use: Subversion and Distributed Version Control Systems (DVCS). Here I want to expand on that, summarizing many discussions we've had internally about version control tools.


Model View Controller, Model View Presenter, and Model View ViewModel Design Patterns
This article will compare and contrast the MVC, MVP, and MVVM, and suggest which pattern to use based on your technology of choice and the problem that you are trying to solve.


Aspect-Oriented Programming Beyond Dependency Injection
Abstract. Dependency injection is a hot topic among industrial developers using component frameworks. This paper first mentions that dependency injection and aspect-oriented programming share the same goal, which is to reduce dependency among components for better reusability. However, existing aspect-oriented programming languages / frameworks, in particular, AspectJ, are not perfectly suitable for expressing inter-component dependency with a simple and straightforward representation. Their limited kinds of implicit construction of aspect instances (or implementations) cannot fully express inter-component dependency.
This paper points out this fact and proposes our aspect oriented programming system named GluonJ to address this problem.
GluonJ allows developers to explicitly construct and associate an aspect implementation with aspect targets.


SCA Extensions for Event Processing and Pub/Sub
A new SCA specification, Assembly Model Specification Extensions for Event Processing and Pub/Sub describes the Event Processing and Pub/Sub Extensions for the SCA Assembly Model.


Service Component Architecture (SCA, IBM) : Event Processing and Pub/Sub 2 Extensions
This document describes the Event Processing and Pub/Sub Extensions for the SCA Assembly Model, which deals with Event Processing, which is computing that performs operations on events, including creating, reading, transforming, and deleting events or event objects/representations.
  • Event Processing components interact by creating event messages which are then distributed to other Event Processing components. An Event Processing component can, in addition, interact with other SCA components using SCA's regular service invocation mechanisms.
  • Publication and Subscription (often shortened to Pub/Sub), which is a particular style of organizing the components which produce and consume events in which the producing components are decoupled from the consuming components. Components that are interested in consuming events specify their interest through a subscription rather than an interface. The same event may be received by multiple subscribers.

1.1.1 Terminology
• event – a message sent to zero or more parties that contains information about a situation that has occurred
• producer - entity that creates events
• consumer - entity that receives events
• subscription - records a consumer's interest in receiving specific kinds of events from some location
• source – the place from which a consumer receives events
• target – the place to which a producer sends events
• publication – the sending of an event from a producer to some targets
• event type – every event instance can have an associated event type. Each event type is identified by a unique QName and has an associated shape and optionally constraints on the event instance
• channel –a mechanism to connect a set of producers with a set of consumers
• filter - a mechanism for refining the set of events received by a consumer. A filter may operate on business data within the event itself, or on metadata about the event.



Universally Unique Identifier
From Wikipedia, the free encyclopedia

A Universally Unique Identifier (UUID) is an identifier standard used in software construction, standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE). The intent of UUIDs is to enable distributed systems to uniquely identify information without significant central coordination. Thus, anyone can create a UUID and use it to identify something with reasonable confidence that the identifier will never be unintentionally used by anyone for anything else. Information labeled with UUIDs can therefore be later combined into a single database without needing to resolve name conflicts. The most widespread use of this standard is in Microsoft's Globally Unique Identifiers (GUIDs). Other significant uses include Linux's ext2/ext3 filesystem, LUKS encrypted partitions, GNOME, KDE, and Mac OS X, all of which use implementations derived from the uuid library found in the e2fsprogs package.


JavaFX Composer New In Preview 2 :
  1. Contents
  2. JavaFX Shapes
  3. Animations on States
  4. Improved Data Support
  5. JavaFX Effects
  6. Colors
  7. Templates
  8. Charts (experimental)
  9. New Samples

C# Passing Parameters
In C#, parameters can be passed either by value or by reference. Passing parameters by reference allows function members (methods, properties, indexers, operators, and constructors) to change the value of the parameters and have that change persist. To pass a parameter by reference, use the ref or out keyword. For simplicity, only the ref keyword is used in the examples of this topic. For information on the difference between ref and out, see ref, out, and Passing Arrays Using ref and out. This topic includes the following sections:
• Passing Value-Type Parameters
• Passing Reference-Type Parameters



Java Interface Rules
Let's start with a short Java question. Below you can see the interface Test'. Which lines in that interface will be rejected by the compiler?

vendredi 12 février 2010

Veille technologique semaine 6

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Le HTML 5 et Flash, suite : le problème de la licence du format de codage H264 utilisé par la TV HD,
  • Le site FaceBook a réalisé un compilateur Just In Time (JIT) pour le langage PHP (langage utilisé par le site lui-même) : les "langages de scripts" sont donc de plus en plus compilé en natif pour être performant (c'est déjà le cas de JavaScript qui a un JIT dans les navigateur Firefox, Chrome et Safari). Langages de script : mais cela veut dire quoi alors ? Langages à typage faible (dynamique) ?,
  • L'intégrité de conception : c'est quoi ? La même solution technique pour le même problème, éviter les patchworks de solutions,
  • Les compilateurs LLVM (Low Level Virtual Machine) : une machine virtuelle universelle, pour tout les langages de programmation et tout les proceseurs cibles ?,
  • Le JDK 7 et la classe java.util.Objects : les méthodes de la classe Object dans une classe utilitaire,
  • Le langage Groovy++ : une extension du langage groovy avec un typage statique qui permet de meilleure performance,
  • L'interropérabilité entre JavaFX et Swing : c'est une cohabitation indispensable,
  • L'outil de composition visuelle pour GWT intègre la version GWT 2.0,
  • JavaFX et le threading : attention au multi-threads (comme d'habitude),
  • La simplicité des Timer avec les EJB 3.1 : le code déclaratif est toujours plus allégé que le code impératif. On a du mal à faire plus simple,
  • Le mode de passage des arguments de méthode en C# : ref ou out. Cela est-il suffisant pour les applications multi-threadées ? L'exemple en Java dans le prochain bulletin.

Bonne lecture.


HTML5, H.264 and Flash roundup
Last week, InfoQ published a piece on YouTube offering HTML5 beta for its videos, in H.264 format. Shortly thereafter, Vimeo announced an HTML5 beta as well, also using H.264 as the video codec.


Facebook Releases HipHop JIT
Facebook announced the HipHop for PHP runtime environment. HipHop provides JIT capabilities to PHP that supercede the traditional PHP runtime and provide better page rendering performance with lower CPU usage. HipHop helps to provide massive PHP scalability and optimal interfacing with Java, Python, and C++ back-ends.


Design integrity.
Design integrity is about consistency, is about using always an ORM or always SQL to access the database, is also about using a the same dependency injection approach, or the same mechanism to communicate the different components of the application.

The main risk of failing to have an integrated design is technical debt. Technical debt is one of the biggest risks in software development: take too much debt and your project is gonna be in serious trouble.


LLVM's Clang Compiler Achieves Self-Hosting
The LLVM is a virtual machine and compilation system that enables optimization of intermediate code at compile, link, and runtime. The project initially focused on working with C/C++ code, but the project's community has since developed front-ends for Java byte code, Python, Ruby, ActionScript 3 (as mentioned before), and Microsoft's CIL.


Article complet: java.util.Objects : Simple et efficace
En jettant un oeil aux nouveautées du JDK7, j'étais tombé sur la classe java.util.Objects qui proposait quelques méthodes utilitaires concernant les opérations de base des objets. On y retrouve surtout des méthodes permettant de gérer les valeurs null. A première vue il n'y a rien d'extraordinaire là dedans, et je dois dire que je ne m'y étais pas vraiment attardé...
Mais aujourd'hui je suis tombé sur un billet de Joe Darcy présentant ces méthodes un peu plus en détail. Et mine de rien cela s'annonce bien plus pratique que ce que je ne l'avais soupçonné...


Groovy++: bientôt dans votre JVM ?

Nous avons éhontément passé sous silence nombre de news du monde Groovy récemment:

Alors pour nous rattraper, nous ne passerons pas à coté de la nouvelle suivante : le développement de Groovy++ ! Alex Tkachman, l'initiateur du projet nous explique dans une interview de quoi il retourne et Roshan Dawrani nous explique ce qu'il retient du projet. En fait, malgré tous ses avantages, Groovy est encore assez lent. En tout cas beaucoup plus que Java, à cause de son coté dynamique. L'idée de Groovy++ est de continuer à utiliser Groovy normalement, mais en pluggant un compilateur spécial pour certaines parties du code annotées avec @Typed. Le code ainsi annoté devra respecter de légères contraintes (contraintes par rapport au laxisme de Groovy, mais légères par rapport au typage fort de Java). Le compilateur pourra donc effectuer des optimisations, notamment grâce à l'inférence de type, et nettement améliorer les performances. Les premiers résultats semblent encourageant en tout cas : 197 fois plus rapide d'après ce micro-bench et 33% plus rapide d'après cet article lu sur le Touilleur Express.

Alors ce Groovy++, une révolution ? Difficile à dire ! En effet, d'un coté Groovy est de plus en plus utilisé (notamment à travers Grails) et un coup de boost ne peut pas lui faire de mal. Mais d'un autre coté, l'interaction de Groovy et Java étant très avancée, on peut se contenter d'écrire en Java les parties du programme nécessitant des performances optimales. On peut aussi voir en Groovy++ l'ajout d'une énième librairie dans le développement, avec ses contraintes, ses bugs… D'autant que, pour des problèmes de licence sur certaines parties de code, le compilateur n'est pas encore OpenSource (ce qui est prévu pour la suite). Donc, si vous sous sentez l'âme d'un aventurier ou que vous avez désespérément besoin de gains de performances tout en gardant la « Groovy attitude », n'hésitez pas à nous faire vos retours sur l'utilisation de Grovvy++ !


Insider's Guide to Mixing Swing and JavaFX
Injecting the "extreme" into this year's GUI Makeover session at JavaOne, Jasper's finale of blowing up junk email with rocket explosions was really fun and of course completely absurd.
You can blend the strengths of Swing and JavaFX to give your Java applications that visual edge that users are coming to expect from modern clients.


GWT Designer Now Supports GWT 2.0
GWT Designer v7.3, Instantiations' popular graphical user interface (GUI) building product, stays in sync with the major new release of the open source Google Web Toolkit (GWT) version 2.0, adding support for the new GWT 2.0 Development
Mode, Layout Panels, Widgets and more. This new release of GWT Designer supports Windows, Linux and Mac OS X operating systems.

GWT Designer is the leading GUI building Eclipse plug-in for GWT and has become the defacto standard since its launch in late 2006. Based on Instantiations' award-winning WindowBuilder product, named Best Commercial Eclipse-Based Developer Tool of 2009 by the Eclipse Foundation, GWT Designer allows developers to focus on creating rich Internet applications without worrying about the complexities of Ajax coding. It supports features such as drag-and-drop visual design and bi-directional code generation, and provides several useful wizards that help make GWT development easier.


JavaFX, Sockets and Threading: Lessons Learned
Java/JavaFX, JNI or the Java Native Interface, having been created for just such a task, would likely be the first mechanism that comes to mind. Although JNI works just fine thank you, a group of us ultimately decided against using it for a small project because, among others:

Errors in your JNI implementation can corrupt the Java Virtual Machine in very strange ways, leading to difficult diagnosis.

JNI can be time consuming and tedious, especially if there's a varied amount of
interchange between the Native and Java platforms. For each OS/Platform supported, a separate JNI implementation would need to be created and maintained.


Simplest Possible EJB 3.1 Timer
A timer doesn't have to be a singleton - it can be a @Stateless and even a @Stateful bean. The method doWork() will be invoked every second. There is no registration or configuration needed.


C# Language Reference: Method Parameters (C# Reference)
If a parameter is declared for a method without ref or out, the parameter can have a value associated with it. That value can be changed in the method, but the changed value will not be retained when control passes back to the calling procedure. By using a method parameter keyword, you can change this behavior.

This section describes the keywords you can use when declaring method parameters:
• ref
• out

samedi 6 février 2010

Veille technologique semaine 5

Pour le bulletin de cette semaine, je vous propose les sujets suivants :

  • le fondateur de SUN, Scott McNealy qui fait un billan de ces 28 ans de présence chez SUN,
  • le site web SUN est passé chez Oracle,
  • bilan sur les technologies SUN par Oracle,
  • Oracle va investir près de 1,5 milliards de dollars sur la technologie Java,
  • le compte à rebour des adresses IPV4,
  • la sortie AIR version 2,
  • l'intégration du push dans Flex,
  • Flash et le HTML 5,
  • Java et les marqueurs interfaces versus les annotations,
  • l'escape analysis du JDK 7,
  • Les layouts manager en JavaFX 1.2
  • le projet du JDK 7 qui pourrait proposer une classe java.util.Objects avec des méthodes de classe générique pour les méthodes d'instance de la classe Object.
  • le projet Lombok : à quand dans le JDK ?,
  • La construction des objets en Java : Quiz sur la première page. Résultat et explication sur les suivantes.

Bonne lecture.

Sun's Scott McNealy: 'Thanks for a great 28 years'
Sun founder McNealy bids employees farewell and says Oracle is getting 'a crown jewel of the technology industry'.


http://sun.com 301 moved permanently
C'est officiel, Sun n'est plus. Outre les messages humoristiques (teintés d'amertume, chez James Gosling par exemple), le redirect de http://sun.com vers http://oracle.com, le rebranding de tous les logos (sur la page de téléchargement du sdk par exemple), la concrétisation du rachat de Sun par Oracle fait ressurgir les questions, orientées produit, que l'on se posait déjà lors de l'annonce de ce rachat. Dionysios G. Synodinos offre, via InfoQ, une liste détaillée de celles ci :


Java, la JVM, le JCP : Thomas Kurian a annoncé son intention de tirer le meilleur de chacune des deux JVM de la firme, Hotspot et JRockit, pour en faire le choix par défaut face à la JVM d'IBM. Les développements planifiés sont alléchants, avec entres autres un meilleur support du multi coeurs, suppression du permGen (pour permettre une meilleure intégration des langages type Groovy ou JRuby). Concernant le JCP, aucune annonce claire n'a été faite pour l'instant.

MySql : cette base de données est annoncée comme complémentaire de la base historique d'Oracle. Elle bénéficiera, selon Larry Ellison, de plus d'attentions que par le passé, et les préoccupations marketing seront dissociées de celles dugrand moteur, avec une équipe commerciale dédiée.

JavaFx et RIA : Oracle a de nouveau affiché sa volonté d'investir massivement dans ces technologies. Certains analystes avancent que cet investissement viendrait boucher le trou laissé par l'échec d'intégration de Flex avec la suite BEA.

Netbeans : des produits cités, c'est le plus menacé. Oracle laisse planer le doute, mais serait plus enclin à pousser JDevelopper. Restent les rumeurs d'une survie en tant que second couteau, ou bien un hypothétique reversement du code source à la communauté.

Glassfish : face au mastodonte Weblogic, le serveur de référence JEE 6 serait proposé comme serveur d'appoint(l'expression officielle est departemental solution à opposer à l'enterprise solution Weblogic). Contrairement à MySql, Oracle n'annonce pas d'équipe marketing ou commerciale dédiée. Certains (comme Alexis MP) y voient une bonne nouvelle (Oracle présenterait une offre comparable à celle d'IBM (WAS Community Edition / WAS). D'autres au contraire, y voient le premier clou dans le cercueil de ce serveur (avec là encore une analogie à IBM et l'anémique Geronimo).

Service Cloud : là c'est officiel, les projets de Sun sont abandonnés.
Investissement dans l'Open Source: Oracle n'a pas fait d'annonce officielle sur la stratégie à venir, mais la majorité des journalistes / bloggers de l'eco système JEE sont très pessimistes vis à vis de la capacité d'investissement d'Oracle dans le libre.

Effectifs : sur un terrain plus terre à terre, Larry Ellison envisage le départ immédiat de 2000 personnes, et l'embauche de plus de 2000 nouveaux employés, principalement dans des postes d'ingénieurs, ou de commerciaux. Il ne s'est bien sur pas engagé sur un nouveau plan à plus long terme. Côté direction, le départ de Jonathan Schwartz semble entériné, et l'avenir de Scott McNealy est plus que flou.

Perspectives on the Conclusion of the Oracle - Sun Acquisition
After almost nine months of speculation and delay, Oracle has got the green light from EU which has lead to the completion of Sun's acquisition. The announcement was followed by an all-day event were Oracle presented its future plans for the Sun technologies and platforms.
  • Java, the JVM and Alternative JVM Languages
  • Mysql
  • JavaFX and Rich Internet Technologies
  • Netbeans
  • GlassFish
  • The Cloud
  • Open Source
  • Sun job cuts


Oracle's big bear hug for Java bodes really well
"We have the money to invest in Java, because Java is a very profitable business for us already.
Exactly where additional revenues will come from is less important than simply growing our middleware installed base."

To achieve that growth, Oracle plans to invest $4.3 billion on R&D in the coming year,
according to Oracle president Charles Phillips. That's up from $2.8 billion last year -- so you
can bet some of that cash will be heading Java's way soon.

One Java, many targets
As for exactly how the Java group plans to use its newfound funds, Oracle Senior Vice
President of Product Development Thomas Kurian said delivering a new Java runtime is a top
priority. Java SE 7 will bring important improvements, he said, including greater modularity,
better support for non-Java languages, and better performance, including garbage collection
optimized for multicore processors.

For example, Oracle plans to improve JVM performance by integrating Sun's HotSpot JVM
with JRockit, the high-performance JVM developed by BEA. The combined product will also
feature improved real-time monitoring and management, in keeping with Oracle's one-stop
management strategy.

Oracle plans to "invest aggressively" in JavaFX, ...


IPv4 Addresses Running Out; Where is IPv6?
This week, the Number Resource Organisation (NRO), the official representative of the five Regional Internet Registries and who oversees the allocation of IP addresses, announced that less than 10 percent of IPv4 addresses remain unallocated. Although this should be a concern for all who use the Internet, the numbers (and letters) are often glossed over, with everyone assuming that it's someone else's responsibility to fix it. But if it's not addressed in the near future, the ramifications could be huge.


Regional registry IPv4 address exhaustion in...
982 Days, 17 Hours, 46 Minutes, 38 Seconds.


What's New in Two: Adobe AIR 2.0 is Coming Soon!
Adobe Flex/AIR developers rejoice - AIR 2.0 (code name Athena) is coming, and it contains many highly requested features that application developers have been waiting on since AIR 1.0 was released nearly two years ago. If you have AIR 1.x applications in the wild, I suggest you download the AIR 2.0 SDK beta and test your application(s) now. When Adobe releases the new runtime, it will be automatically downloaded and installed by all of your users. It's important to test now to make sure you're not caught off guard. And, you can get a great headstart using some of the new features.


Real-time data visualization using Flex and publish/subscribe messaging
When you hear the term "data visualization", you probably immediately think of pie charts, bar
charts, and line charts showing sales data, population data, or other historical data. These
charts and graphs help us to visualize the data, detect key trends, and make decisions moving
forward.
While charts are great for understanding historical data, real-time data can benefit from
visualization also. For example, financial transaction data can contain immediately useful
trending information that is undetectable without some visualization. The same goes for credit
card transactions, website traffic, etc.


Flash en train de mourir au profit de HTML 5 ?
Quelque chose de très important est en train de se produire. Pour la première fois depuis bien longtemps, l'avenir de Flash est remis en cause par divers événements. Nous sommes à un tournant majeur dans le domaine des interfaces graphiques et les prochains mois vont être riches en enseignements.


Are Marker Interfaces Dead?
In earlier versions of Java, Marker Interfaces were the only way to declare metadata about
a class. With the advent of annotation in Java 5, it is consider that marker interfaces have
now no place. They can be completely replaced by Annotations, which allow for a very flexible
metadata capability. Everything that can be done with marker interfaces can be done instead
with annotations. In fact, it's now recommended that the marker interface pattern should not
be used anymore. Annotations can have parameters of various kinds, and they're much more
flexible. We can also see that the examples used in Sun API's are rather old and that no new
ones have been added since after introduce of Annotation. In this post, we will see whether
Marker Interfaces can still be used for any reasons.


Escape Analysis
Escape analysis has been hailed as a solution to GC problems for the last few years.
Here are some articles written that explain what it is and why it can help us.


Project Lombok: Put an End to Java Verbosity
The introduction of Project Lombok, a combination compile-time and development-time
code generator, has made Java POJO verbosity history. Add Lombok to your daily coding
practices, and you won't go back.


JavaFX 1.2 UI Control Components: Part 1, Layouts
JavaFX SDK 1.2 introduces a new set of user-interface (UI) control components for JavaFX programmers. Previously, JavaFX UI Components simply "borrowed" their functionality from the underlying Swing components, which prevented them from being used in anything other than the desktop profile. The JavaFX SDK 1.2 components, however, take advantage of the more
powerful JavaFX scene graph, which not only increases portability, but also allows JavaFX programmers to create more compelling graphical capabilities. In this series of articles, we'll take a closer look at the new UI control components.

Contents - Flow Layout
- Stack Layout
- Tile Layout
- ClipView Layout
- Understanding the Preferred Size
- For More Information


java.util.Objects and friends
A small project I worked on during JDK 7 milestones 05 and 06 was the introduction of a java.util.Objects class to serve as a home for static utility methods operating on general objects (6797535, 6889858, 6891113). Those utilities include null-safe or null-tolerant methods for comparing two objects, computing the hash code of an object, and returning a string for an object, operations generally relating to the methods defined on java.lang.Object...


La construction d'objet en Java
Comment est réalisée la construction d'une instance avec Java ? Il est nécessaire de maîtriser des détails subtils pour éviter des erreurs dans les programmes.
  • COMMENT EST CONSTRUITE UNE INSTANCE ?
  • L'ORDRE DE CONSTRUCTION
  • CONCLUSION

vendredi 29 janvier 2010

Veille technologique semaine 4


Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • le rachat de SUN par ORACLE est effectif : l'icône du site web de SUN est celui d'ORACLE,
  • la FAQ d'ORACLE au sujet des produits SUN,
  • une analyse de ces sujets,
  • le nombre d'adresse IPV4 arrive a épuisement, passage à IPV6 d'ici deux ans,
  • qui sont les développeurs de Linux ?,
  • Point sur les clients riches : les RIA (Rich Internet Applications)
  • Le pair programming, c'est quoi ?
  • La programmation par aspect (AOP) et la programmation objets,
  • La programmation par aspect (AOP) et la distribution de données : comment terracotta transpose le modèle mémoire JVM sur un cluster,
  • JavaFX : interview d'un consultant sur la technologie.

bonne lecture.


Overview and Frequently Asked Questions for the Developer Community
Oracle has finalized the Sun transaction and the deal has closed.
The combination of Oracle and Sun transforms the IT industry and will provide significant benefits and opportunities for the developer communities of the combined companies. For example, the combination of the Sun Developer Network (including
java.sun.com), BigAdmin, and the Oracle Technology Network will result in the largest, and most diverse, community of Developers, Database Administrators, SysAdmins, and Architects. The richness and diversity of these communities will truly be remarkable. We know that you have many questions, and some of them we can answer now. We're also committed to providing updates regularly as more information becomes available. Note that the FAQ below is designed around developer community continuity specifically and does not address product strategy,
support, open source projects, or licensing. For updates on these questions, please see the information that is posted at oracle.com/sun. So, without further delay:


The Sun has Not Set: Oracle Makes Sun Shine Brighter Than Ever
For over nine months the Java world has been waiting with bated breath for definitive
information about the future of Sun's software and hardware portfolios. That day has arrived! Today Oracle held a five hour live webcast outlining their high level strategies for Sun's entire product line. The webcast was recorded and broken up into topics for easy consumption. As a Java developer and Sun customer, I am very excited about Oracle's acquisition of Sun and their plans for the software. I have summarized the topics that interest me:


Le stock d'adresses IPv4 arrive à bout de souffle
La Number Resource Organization (NRO) estime qu'il reste moins de 10% d'adresses IPv4 disponibles. Il devient urgent pour tous les acteurs de l'Internet d'engager la migration vers l'IPv6.


75% of Linux code now written by paid developers
Forget lofty ideals about the open-source community: most Linux kernel code is written by paid developers at major corporations.


Typology of Rich Client Technologies
Chances are, if you are an software architect and need to make applications available over the network, you are asking yourself what client technology to use. In this article, I will try to list the solutions used previously and then elaborate on the solutions available today.


Le pair-programming comment ça marche ?
Stuart Wray de la Royal School of Signals, s'est fendu d'un article sur le fonctionnement du pair-programming dans l'édition de Janvier du magazine de l'IEEE. Dans l'article, il liste quatre bonne pratiques permettant de garantir selon ses termes, l'efficacité du développement par pair. Il ne s'agit pas de simplement développer à deux l'un au clavier et l'autre le doigt sur l'écran.
  • Dialogue entre les développeurs :
    Il est important de verbaliser les problèmes rencontrés de façon intelligible. Présenter une difficulté à un tiers permet de garder le focus dessus et l'effort de présentation force à clarifier la situation. Il faut sortir la tête du mur pour résoudre les problèmes et parfois le seul fait de présenter le blocage permet de trouver la solution. L'auteur identifie la conversation comme un point clé permettant aux paires d'être et de rester productifs.
  • Voir plus de détails :
    Un phénomène bien connu de tous, deux personnes ne voient pas les même choses au même moment. C'est à cela que sert la relecture sur le blog Xebia. Il y a toujours des fautes d'inattention, liés à des centre d'intérêts différents par exemple. En paire, un développeurs trouve plus rapidement certaines erreurs que son collègue qui en voit d'autres. Celui qui ne tape pas au clavier repère toujours beaucoup plus rapidement les coquilles.
    Stuart lève notre attention sur la fatigue des paires, en travaillant ensemble, les développeurs commencent à repérer les mêmes erreurs et à fixer leur attention sur les mêmes points. La productivité est alors en chute libre et l'apport du pair-programming se perd. Il faut prévoir des rotations régulière entre les paires pour se prémunir contre cet effet de bord.
  • Combattre les mauvaises pratiques :
    Les deux développeurs doivent prendre l'engagement de coder en respectant une convention, en utilisant des bonnes pratiques. Chacun est juge du travail de son voisin, pourtant a terme c'est le travail des deux ensemble qui sera jugé. Cet engagement nécessaire des deux parties augmente la responsabilité de chacun sur la qualité du code produit. Posez vous la question : faites vous plus propre en développant seul dans votre cave ou en développant sous le regard attentif de votre paire ?
  • Partager et juger l'expertise :
    Aucun individu n'a la même productivité et la différence varie au moins d'un facteur de un à dix entre deux individus. Cela implique des erreurs d'estimation temporelle par exemple si votre héros Java qui code les yeux fermés annonce une journée pour une tache et qu'elle est réalisée par un autre le temps passé ne sera sûrement pas d'une journée (Tous le monde ne peut pas coder les yeux fermés). C'est seulement en collaborant étroitement avec un développeur qu'il devient possible de juger de ses capacités. Mais avec le pair programming et la rotation des paires chaque développeur connait les domaines d'expertise des autres et sait se positionner par rapport aux autres. Les estimations seront donc plus réaliste dans une équipe en pair programming.

Aspect-Oriented Design Principles: Lessons from Object-Oriented Design
For aspect-oriented design (AOD) to become mainstream, appropriate design principles are needed to guide its use in real, evolving systems. The principles should tell us what types of coupling are appropriate between aspects and the software entities they advise, how to use non-invasiveness effectively, how to preserve correct behavior in the advised entities, and how to use aspects with other design constructs. I examine these topics using several object-oriented design (OOD) principles, considered from an AOD perspective. I demonstrate how AOD contributes design solutions to satisfy these principles, while it also introduces
nuances in their interpretations. I also derive several AOD specific principles from the OOD principles.


Clustering the Java Virtual Machine using Aspect-Oriented Programming
Clustering (and caching) is a crosscutting infrastructure service that has historically been implemented with API-based solutions.
As a result, it has suffered from the same code scattering and tangling problems as other crosscutting concerns.

In this paper we will show how Aspect-Oriented Programming (AOP) can help to modularize clustering and turn it into a runtime infrastructure Quality of Service. We will show how AOP can be used to plug in directly into the Java Memory Model, which allows us to maintain the key Java semantics of pass-byreference,
garbage collection and thread coordination across the cluster, e.g. essentially cluster the Java Virtual Machine underneath the user application instead of the user application directly.


Java Champion Adam Bien on JavaFX
Java Champion Adam Bien is a self-employed consultant, lecturer, software architect, developer, and author in the enterprise Java sector in Germany who implements Java technology on a large scale. He is also the author of several books and articles on Java EE technology as well as distributed Java programming. His latest book,
Real World Java EE Patterns — Rethinking Best Practices, explores lean and pragmatic approaches. In addition, he has been named a Java Rock Star for his popular session at the 2009 JavaOne conference. We met up with him to get his latest thoughts on JavaFX.

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.