Oracle a annoncé la sortie du projet open source Avatar au cours de la conférence JavaOne. Avatar est un framework web qui se concentre sur "les applications HTML5 modernes", en supposant "des compétences en Javascripts mineures" de la part des développeurs de l'application.
Le projet Avatar a initialement été annoncé lors de JavaOne 2011, avec l'objectif de partager des données entre des clients HTML5 et des services JavaEE exposés sur le cloud. Lors d'une interview d'Anil Gaur, le Vice Président du Département Développement Applicatif chez Oracle, A. Gaur nous indique que l'objectif d'Avatar est de s'assurer que "Java reste l'environnement le plus productif pour créer des applications basées sur HTML5". Les différentes briques qui constituent Avatar ont été développées avec l'objectif de répondre aux problématiques de cloud computing émergentes, et pendant la QCon 2012 à New York, Arun Gupta a présenté Avatar comme une "Solution complète pour des clients riches et dynamiques".
Les applications basées sur Avatar sont destinées à être exécutées au sein d'un conteneur compatible Java EE 7 assorti d'un Java Runtime Environment 8. Le framework vise à simplifier le développement d'applications basées sur HTML5 en proposant une abstraction du code chargé des communications client-serveur. En plus, des composants graphiques et des fonctions de data binding sont proposés pour la couche présentation afin de simplifier la gestion des données dans le code JavaScript côté client. Le framework encourage les développeurs à utiliser l'Expression Language (EL) de JavaEE pour interagir avec le contenu dynamique renvoyé par le serveur. Selon la documentation du projet, "l'utilisation des EL permet d'éliminer la nécessité d'écrire la logique en JavaScript nécessaire au contrôleur afin de rendre la page dynamique".
Avatar s'appuie sur l'implémentation Java 8 de Nashorn ECMAscript pour écrire du code JavaScript côté serveur. Les composants orientés services écrits en JavaScript sont exécutés sur un server JavaEE7 étendu à l'aide du conteneur de scripts d'Avatar (Avatar Scripting Container, Avatar.js), qui est chargé de l'intégration du service dans le contexte applicatif. Le support de JavaScript qui est proposé par le framework du côté serveur est motivé par le fait que "JavaScript tient un rôle qui s'est considérablement élargi" dans les développements web en entreprises. Le projet note que "la variété [de frameworks orientés clients] dans ce domaine a connu, ces derniers temps, une croissance rapide et déconcertante", ce qui s'appuie sur "une palette de compétences très fortes en JavaScript" au niveau des développeurs. Selon le projet, cette hypothèse est "inhabituelle chez les développeurs d'applications d'entreprises".
Le surnom donné par le framework à son patron de conception structurel est "Thin Server Architecture" (Architecture fine côté serveur), qu'il définit par "déplacer toute la logique de l'IHM d'une application web -- modèle, vue et contrôleur -- du serveur vers le client". Dans cette architecture, la responsabilité du back-end est réduite de "héberger la logique du contrôleur de l'application" à exposer des données à travers "des protocoles standards tels que REST [et] WebSockets... qui sont disponibles dans des clients légers".
Du point de vue du client, Avatar est conçu avec l'intention de séparer les responsabilités entre les composants orientés vue et les composants orientés service. Le projet déclare "Les composants orientés vue et orientés service disposent d'un couplage faible afin de permettre aux développeurs de les utiliser à la carte". La couche vue d'Avatar est développée en HTML5 et propose des raccourcis pour implémenter des applications web mono-page, qui ne nécessite que "le code JavaScript minimal". Selon la documentation, la seule compétence requise au niveau des développeurs est "copier et modifier le code donné en exemple" et construire leurs vues.
Le code source d'Avatar est gratuitement disponible sur le dépôt git du projet, et plusieurs exemples d'applications sont disponibles dans la section tutorial de la documentation.