Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
7 à voir

A la découverte des technologies

Un système d'exploitation web: web OS

Je co-animais il y a quelques jours un petit-déjeuner sur le SaaS et le Cloud Computing. J'y évoquais les offres de plus en plus nombreuses de solutions applicatives en mode SaaS. On peut même se demander s'il y a encore des domaines de l'entreprise qui ne sont pas aujourd'hui couverts par une offre SaaS ? Des applications bureautiques aux progiciels métiers on semble se diriger vers un monde où le navigateur va devenir LE moyen d'accès à toutes les applications.

 

On nous promet même que le navigateur va devenir LE système d'exploitation. Bien sûr quand je dis ça, je pense à Chrome OS sur lequel Google a levé le voile il y a quelques mois.

 

chromeOS.png

 

 

Mais peut-on réellement utiliser au quotidien un système d'exploitation basé uniquement sur un navigateur ? Peut-on tout faire avec juste un navigateur ? Et bien je vous propose de vous raconter comment cela se passe avec un vrai système d'exploitation web: webOS.

 

 

webOS: le système d'exploitation du Palm Pré

 

Le Palm Pré est un des derniers SmartPhone produit par Palm. Comme beaucoup d'autres SmartPhone que l'on voit apparaître en ce moment, il se veut être un "iPhone killer". Il propose donc les fonctionnalités qu'on peut attendre de ce type d'appareil: synchronisation messagerie (GMail, Exchange, …), navigateur Internet pleine page, outil de visualisation bureautique, GPS, Appareil photo, caméra, lecteur musique, lecteur vidéo, téléphone (!) …

 

7avoir_palmpre.PNG

 

 

Les goûts et les couleurs ne se discutant pas, peu importe les qualités et l'ergonomie de ces fonctionnalités, je m'intéresserais ici à une caractéristique que partagent toutes les applications sur le Palm Pré: elles s'exécutent dans un navigateur web.

 

Et oui, le Palm Pré héberge l'un des premier système d'exploitation complètement web, ce n'est donc pas pour rien qu'il s'appelle justement "webOS". Pour illustrer ce que peut être un système d'exploitation web, je vous propose donc de décortiquer les caractéristiques de webOS.

 

Architecture générale de webOS

 

Le schéma ci-dessous décrit l'architecture de webOS:

 

7avoir_archiwebos.jpg

 

webOS est construit sur une implémentation de Linux. A proprement parler, si on est un puriste, on peut donc dire que le système d'exploitation de webOS c'est Linux et pas le navigateur: mais c'est le cas pour tous les OS web existants ! C'est donc Linux qui contrôle les différents composants et périphériques connectés au système et qui fourni les drivers permettant de les piloter. Au dessus de Linux se trouve le gestionnaire de fenêtre (appelé Luna) qui gère l'affichage du bureau, le passage d'une fenêtre à une autre et les notifications des applications.

 

A noter le fameux "Carrousel" qui est la particularité de ce gestionnaire de fenêtre et qui a fait la "célébrité" de webOS. Le carrousel offre en effet un mécanisme tactile agréable pour passer d'une fenêtre à l'autre ou de fermer une fenêtre en la "lançant" vers le haut de l'écran.

 

7avoir_carroussel.PNG

 

 Au dessus du gestionnaire de fenêtre se trouve enfin le cœur du système dans lequel vont s'exécuter toutes les applications: le navigateur.

 

Développer une application webOS

 

Le navigateur est le cœur de webOS. Développer une application pour webOS veut donc dire développer une application pour le navigateur. Pour comprendre comment cela est possible, interrogeons nous sur ce qu'est une application ? Finalement, une application c'est:

  • - Des écrans: qui affichent des données et gèrent l'interaction avec l'utilisateur,
  • - Des traitements: qui implémentent les algorithmes et les fonctions de l'application,
  • - Des données: les informations que manipule l'application.

 

Détaillons chacune de ces briques dans une application webOS.

 

7avoir_webosarchiappli.jpg

 

Concevoir des écrans grâce à un navigateur étendu

 

Comme pour l'iPhone, pour Android et pour Chrome, le navigateur de webOS est basé sur WebKit. Outre ses qualités de restitution, WebKit a la particularité de proposer des extensions du navigateur permettant d'interpréter certaines balises HTML et de les convertir en élément d'interface. C'est ce qui fait que de nombreuses applications iPhone sont en fait de simples pages HTML.

 

Sur webOS, le même mécanisme est utilisé. Ainsi l'écran suivant est en fait une simple page HTML contenant des balises "<div>" spécifiques qui sont interprétées pas le navigateur et représentées par des contrôles équivalents.

 

7avoir_preRIA.PNG

 

 

Ce n'est pas anodin: cela permet de créer des interfaces "riches" en HTML et de proposer à l'utilisateur des contrôles évolués (sliders, bouton on/off, …) et donc une ergonomie proche de celle qu'il a l'habitude de trouver dans une application qui s'exécute en dehors d'un navigateur.

 

 

Les traitements via un moteur JavaScript étendu

 

HTML étant l'outil de construction des fenêtres des applications webOS. C'est JavaScript qui est le langage pour réaliser les traitements dans les applications. En plus des fonctionnalités standards proposées par  le langage lui-même, webOS intègre un framework appelé "Mojo" qui est véritablement l'API système de webOS.

 

7avoir mojo

 

 

A travers le framework Mojo, les applications HTML webOS peuvent non seulement manipuler les contrôles à l'écran et les types de données mais aussi directement utiliser les fonctionnalités du terminal (état de la connexion réseau, GPS, stockage, …).

 

L'exemple JavaScript ci-dessous permet par exemple de récupérer sa localisation en quelques lignes.

 

 

 

  this.controller.serviceRequest('palm://com.palm.location', {
 method:'getCurrentPosition',
 parameters:{},
 onSuccess: this.locationSuccess.bind(this),
 onFailure: this.locationFailure.bind(this)
 });
 

 

Ainsi, contrairement à ce que l'on connait habituellement sur le web, le JavaScript peut accéder à toutes les fonctionnalités systèmes. Les applications HTML webOS ne sont donc pas limitées à la gestion de la fenêtre du navigateur.

 

 

Des données stockées via HTML5

 

La particularité d'une page HTML est d'être dépendante de sa connexion réseau pour récupérer/stocker des données. C'est d'ailleurs la crainte habituelle des personnes vis à vis des applications SaaS de type Gmail ou Google Web App: comment vais-je travailler quand je n'aurais pas accès  à Internet ?

 

webOS propose une solution élégante : le stockage HTML 5. HTML 5 est la future norme du langage HTML (elle est actuellement en phase de spécification). Elle propose des fonctionnalités évoluées de positionnement et de multimédia (vidéo notamment) mais permet aussi à une page HTML de disposer d'un espace de stockage local dédié de quelques centaines de kilo-octets. Comme d'autres navigateurs, webOS propose une implémentation préliminaire des spécifications HTML 5 pour gérer le stockage. A noter, et ce n'est pas neutre, que Google a décidé d'abandonner son propre mécanisme de stockage GoogleGear au profit de HTML 5.

 

 

 

7avoir_webosstorage.jpg

 

Bref grâce à HTML 5, une application webOS peut être autonome et gérer elle-même son fonctionnement en mode connecté et déconnecté. Comme par ailleurs l'espace de stockage est organisé comme une base de données relationnelle, le développeur est dans un environnement familier.

 

Ci-dessous un exemple de traitement JavaScript manipulant une base de données sous WebOS.

 

 

 saveAsNew: function()
 {
 this.timestamp = new Date().getTime();
 
 var record = this;
 db.transaction(function (tx) 
 {
 tx.executeSql("INSERT INTO record(id, firstname, lastname, timestamp) VALUES (?, ?, ?, ?)", [record.id, record.firstname, record.lastname, record.timestamp]);
 }); 
 }, 

 

 

 

 

Toutes les applications en HTML: est-ce possible ?

 

Nous avons donc dans webOS toutes les briques permettant d'écrire des applications: écrans, traitements, données.

Vous aurait donc compris que toutes les applications webOS sont écrites en HTML. Est-ce vraiment possible ? Pour s'en assurer, en voici quelques exemples.  Je donne chaque fois une capture d'écran et un extrait du code de l'application:

 

 

 

Client messagerie

 

email_2010-24-02_134058.png

 

 

 /* Copyright 2009 Palm, Inc. All rights reserved. */
 
 var MessageAssistant = Class.create({
 initialize : function(targetEmail, folderId, focusStage, detailsObj) {
 this.data = { id: targetEmail, senderDetails:{} }; // data.id
 // This data is used to pre-render info in case the mailservice isn't able to respond quickly enough
 if (detailsObj) {
 this.data.prerenderData = true;
 this.data.displayName = detailsObj.displayName;
 this.data.summary = detailsObj.summary;
 this.data.timeStamp = detailsObj.timeStamp;
 this.data.flags = detailsObj.flags;
 this.data.priority = detailsObj.priority;
 }
 this.folderId = folderId;
 this.account = {};
 this.gotFirstResponse = false;
 this.bodyLeftOffset = 0;
 this.transition = null;
 this.waitingForMessageBodyTimeout = undefined;
 this.pendingComposeActions = [];
 
 ...
 
 

 

 

Lecteur musical

 

musicplayer_2010-24-02_134856.png

 

 

  ...
 
 populateSongCount: function(){
 var params = {};
 params.artist = this.query.artist;
 params.offset = 0;
 params.limit = 0;
 
 this.listSongsRequest = AppAssistant.audioService.listSongs(this
 this.controller.get ('song-count').innerHTML = response.
 }.bind(this));
 },
 
 requestAlbumsList : function(filter, widget, offset, limit){
 this.query.offset = offset;
 this.query.limit = limit;
 
 if (filter)
 this.query.filter = filter;
 else
 delete this.query.filter;
 
 ...
 

 

 

 

Fenêtre système de choix de la langue

 

languagepicker_2010-24-02_154050.png

 

 

  ...
 acceptTapHandler: function(event) {
 Mojo.Log.info("Set Locale = %s, %s", Account.language, "_", Acco
 Mojo.Log.info("----------- this.firstTap ------------", this.fir
 if(this.firstTap == false) {
 this.firstTap = true;
 this.removeLocalizedStylesheets();
 Mojo.Locale.set(Account.language + '_' + Account.country
 this.setDefaultTimeFormat();
 }
 Mojo.Log.info("----------- push customization ------------");
 
 Account.regionCountryCode=Account.country;
 Account.regionCountryName=this.countryName;
 
 this.controller.stageController.swapScene('customization');
 //Mojo.Controller.stageController.swapScene('regionalsettings',
 },
 
 setDefaultTimeFormat: function() {
 Mojo.Log.info("----------- setDefaultTimeFormat ------------");
 var format = 'HH12';
 if (Mojo.Format.isAmPmDefault() == false) {
 format = 'HH24';
 
 ...
 

 

 

Jeu de Puissance 4

 

connect4_2010-24-02_135006.png

 

 

  ...
 function board_score(depth, player){
 var result = winner(); //i would estimate that winner() would be the first
 if(result == player){
 return 1000;
 } else if (result == notplayer(player)){
 console_log("should never trigger.");
 return -1000;
 }
 if(depth <= 0) return 0;
 
 player=notplayer(player);
 var sum = -1;
 for (var col = 0; col < BOARD_WIDTH; col++) {
 var row = freerow(col);
 if(row != -1){
 board[col][row] = player;
 result = board_score(depth-1, player); 
 sum += -result;
 board[col][row] = BOARD_EMPTY;
 }
 
 ...
 

 

A noter que je donne ici le code des applications uniquement à titre d'illustration de mon propos. Ce code n'est pas accessible à priori aux utilisateurs (heureusement !) et nécessite un peu de "hacking" pour être visualisé.

 

 

Avantages et limites de l'exercice

 

Paradoxalement, un des avantages  du fait que les applications webOS soient développées en HTML/JavaScript concerne la gestion du multi-tâche. On reproche souvent à Apple d'avoir bridé l'iPhone pour qu'il soit mono-tâche. C'est en effet un choix délibéré d'Apple afin de garantir une bonne réactivité du terminal. Palm a ici trouvé une solution élégante au problème. Sur webOS, plusieurs applications s'exécutent simultanément et vous pouvez les faire défiler sur le Carroussel car en fait ce ne sont pas processus différents, ce sont simplement les "onglets" du navigateur ! C'est évidemment beaucoup moins lourd à gérer pour le système que le basculement d'une tâche à une autre.

 

Ne rêvons pas néanmoins, il y a quand même des limites à développer des applications HTML et les développeurs webOS les ont rapidement identifiées. D'abord, il y a évidemment la rapidité. JavaScript reste un langage interprété et même si l'on optimise le moteur, il n'en reste pas moins inadapté à des calculs ou des manipulations de données complexes.

Et forcément le premier type d'application à en souffrir sont les jeux. Même si on trouve sur l'AppStore de Palm un certain nombre de jeux en JavaScript (comme le Puissance 4 ci-dessus), on ne peut imaginer développer des jeux réellements "immersifs" en HTML (même si, à terme, HTML 5 pourrait intégrer du dessin 3D).

 

 

7avoir_pdk.png

 

Pour répondre à cela, Palm a annoncé récemment:

  • - la sortie d'un PDK (Plug-in Development Kit) qui permettra de développer des applications en C/C++. Notez le terme "plug-in": il s'agira de faire des plug-ins… du navigateur.
  • - La disponibilité d'un plug-in Flash 10.1 qui permettra de faire tourner des applications Flash dans les pages HTML.

 

 

7avoir_webosnfl.png

 

 

ARES: l'outil de développement web

Même si cela n'est pas directement lié à mon propos, il n'est pas inutile de faire un détour par le modèle de développement de webOS.

 

En effet, Palm a poussé à fond le concept de web OS en proposant une outil de développement des applications qui s'exécute également dans le navigateur. Vous imaginez Visual Studio dans votre navigateur ? Non ? C'est pourtant ce que propose ARES, la plate-forme de développement webOS.

 

Vous trouverez dans ARES:

  • - Un outil de conception des écrans,
  • - Un éditeur de texte avec coloration syntaxique,
  • - La possibilité de communiquer avec un gestionnaire de code source,
  • - Un outil de trace et debug,
  • - Le pilotage de l'émulateur (qui lui doit être installé en local).


Et tout cela utilisable depuis un navigateur web.

 

7avoir ares1

 

7avoir_ares2.PNG

 

Bref, ARES, c'est le premier outil de développement en mode SaaS !

 

 

webOS ou Web OS ?

 

Voilà qui termine notre petite plongée dans l'univers webOS. Bien sûr vous allez me dire que le Palm Pré n'est ni  un netbook, ni même un vrai laptop. Mais prenons de la hauteur: n'avons-nous pas sous les yeux un aperçu de ce que pourrait être le futur:

  • - Un système d'exploitation basé  sur Linux et qui n'est qu'une simple interface avec les périphériques,
  • - Un navigateur qui s'intègre parfaitement avec le gestionnaire de fenêtres au point qu'ils ne fassent plus qu'un,
  • - Des applications complètement développées dans un HTML un peu évolué,
  • - Des plug-in permettant de développer des fonctionnalités graphiques plus avancées.

 

Ce sont exactement les caractéristiques de Chrome OS et plus généralement de ce que le "Cloud Computing" nous promet comme poste de travail.

 

Bref, webOS ne sera peut-être pas l'avenir des mobiles, car il a du mal à se faire une place au soleil sous le feu croisé de l'iPhone, d'Android et de Windows Phone 7, mais il est incontestablement un témoignage de ce que pourrait être les systèmes d'exploitations de demain.

 

Article précédent Article suivant
Retour à l'accueil
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
G
<br /> Excellent, très bon article sur webOS.<br /> <br /> <br />
Répondre
L
<br /> <br /> Merci.<br /> <br /> <br /> Et dans la période troublée que vit webOS, un peu d'encouragement ne fait pas de mal <br /> <br /> <br /> <br />