AlcionTech

Aller au contenu | Aller au menu | Aller à la recherche

Visibilité internet

Fil des billets - Fil des commentaires

vendredi 27 novembre 2009

MD Days 2009 : DSL ou Domain Specific Language

UML est sensé pouvoir être utilisé pour modéliser n'importe quel processus métier même hors informatique. Néanmoins, c'est un langage complexe, plutôt destiné à des informaticiens or ceux qui possèdent la connaissance métier n'en sont pas en général.

Une solution à ce problème serait donc de créer un langage simplifié qui soit compréhensible par des utilisateurs finaux, et qui serait ensuite traduit en UML standard, via une transformation de modèle (cf billet précédent).

Qu'est-ce qu'un DSL ?

Plus généralement les DSL sont des langages dédiés à une tâche précise, qui se veulent plus simple d'utilisation que les langages généraliste.

Un programmeur peut par exemple utiliser des DSL pour les fichiers de configuration de son application. Les outils de génération de code type MDA qui nécessitent une configuration complexe tout en devant rester simple d'utilisation sont de bons candidats à l'usage de DSL.

On peut distinguer deux types de DSL :

  • les DSL textuels : des mini-langages de programmation
  • les DSL graphiques : l'information est saisie sous forme de schémas dans un éditeur

Les DSL textuels :

Microsoft a présenté l'outil Intellipad pour créer facilement des DSL textuels. Il s'agit d'un genre de notepad en trois colonnes, la partie de gauche stocke le texte à analyser, la partie du milieu la grammaire et la partie droite le résultat de l'analyse (dans un format nommé M-Schéma). Le développement de la grammaire se fait donc de façon itérative au fur et à mesure des besoins.

M-Schema

Ce nouveau format se veut une alternative à XML ou a JSON développée par l'équipe SQL-Server, et devrait donc être bien supporté par la future génération d'outils MS.

Les DSL graphiques

Auparavant, la création d'un éditeur graphique passait par le développement d'un plugin Eclipse (via l'API GMF) ou Visual Studio.

La société OBEO a présenté le logiciel OBEO-Designer qui permet de créer sans propre éditeur graphique pour un meta-modèle donné sans écrire de code.

MD Days 2009 : Transformations de modèles

Modèles et meta-modèles :
  • Un modèle est un graphe orienté obéissant à un méta-modèle.
  • Les méta-modèles peuvent être issus d'organisme de normalisation (comme le méta-modèle UML, défini par l'OMG), mais on peut aussi en créer soit-même.
  • Une transformation permet de convertir automatiquement un graphe d'un méta-modèle vers un autre.

Récursivité : Méta-modèles et transformations peuvent être représentés sous forme de graphe et sont donc des modèles. Par exemple pour définir le format des meta-modèles, on utilise un méta-méta-modèle (qui s'auto-décrit, au sens où il est lui-même son propre méta-modèle).

Analogie avec le monde XML :
  • le modèle => document XML
  • le méta-modèle => DTD ou XML-schéma
  • la transformation => feuille de style XSL-T

Néanmoins XML ne sait représenter que des arbres ce qui est moins général qu'un graphe.

Exemple de transformation :

On peut définir un méta-modèle pour représenter la syntaxe du langage Java, puis définir une transformation diagramme de classe UML => méta-modèle Java, afin de personaliser la génération de code de son modeleur favori.

Application au MDA

Dans une approche MDA, on a généralement un PIM (Platform Independant Model) qui décrit le fonctionnel de l'application et qui est ensuite transformé en PSM (Platform Specific Model) suivant la plateforme ciblée (Java Spring/Hibernate, Java J2EE, .NET), ce dernier devant être à son tour transformé pour générer le code.

Liens :

Compte rendu : Model Driven Days 2009

Hier, je suis allé au Model Driven Days, une série de conférences qui se tenait dans les locaux de Microsoft, sur le thème, comme son nom l'indique, du développement piloté par la modélisation (au sens UML).

Bizarrement, l'essentiel des conférences concernait plutôt les développeurs Java sous Eclipse (comme quoi Microsoft n'est pas sectaire ;-) ), probablement parce que c'est sous cette plateforme que l'approche MDA plus utilisée et l'outillage le plus abouti.

Model Driven Architecture

Pas mal de conférences présentaient des outils de MDA, c'est à dire de génération d'une application complète à partir du modèle métier.

Il ressort que cette approche est bien adaptée aux petites entreprises ne possédant pas trop de ressources de développement en interne ou bien pour les projets de CRM (Gestion de la relation client), bref des applications où il y a beaucoup de données éventuellement reliées par des liens complexes, mais pas trop de logique métier à implémenter.

La génération se fait sous forme de couches, et il est possible de re-développer soit-même certaines d'entre-elles, par exemple on peut utiliser une couche présentation faite à la main pour être conforme à la charte graphique de l'entreprise ou à des demandes d'ergonomie utilisateurs.

Conclusion

De mon point de vue, une approche MDA n'est pas adaptée à la plupart des projets à l'exception des plus simples fonctionnellement parlant. Cependant, les deux technologies à la base du MDA peuvent avoir d'autres usages, et doivent donc figurer dans la boite à outil d'un développeur :

  • La transformation de modèle
  • Les langages dédiés ou DSL

Elles feront l'objet des 2 billets suivants.

lundi 30 mars 2009

Alcion Group développe des composants pour Talend Open Studio

Il y a maintenant un peu plus de trois mois, des ingénieurs d'Alcion Group ont suivi une formation "Talend Foundation" sur l'ETL Open Source Talend Open Studio. Ils proposeront bientôt dans le cadre d'un Alcion Bar une conférence interne pour présenter ce produit intéressant.

Mais en attendant cette soirée, ils ont mis cette formation à profit en développant de nouveaux composants pour cet ETL, afin de mieux gérer les bases de données Informix (qui sont utilisées sur un des projets au forfait actuellement développés).

Alcion Group ayant décidé de jouer le jeu de l'Open Source, ces composants ont été cédés à la communauté :

  • tInformixConnection, permettant d'initialiser une connexion à une base de données Informix ;
  • tInformixCommit, permettant de faire un "commit" des opérations effectuées sur une connexion ;
  • tInformixRollback, permettant de faire un "rollback" des opérations effectuées sur une connexion ;
  • tInformixInput, évolution du composant original permettant de récupérer des données à partir d'une connexion existante ;
  • tInformixOutput, évolution du composant original permettant d'insérer des données dans une table en utilisant une connexion existante ;
  • tInformixRow, évolution du composant original permettant d'exécuter une requête SQL quelconque en utilisant une connexion existante ;
  • tInformixSP, qui permet d'exécuter des procédures stockées et fonctions d'une base de données Informix ;

lundi 9 mars 2009

Acualité : Google Apps - Quotero

Je reprends ici deux billets d'actualité publiés sur mon blog personnel :

  • le premier, qui a fait suite à l'indisponibilité des mails Google de ce 24 février. Ce billet fait suite à celui posté ici même, qui ventait les mérites des "Google Apps" : malgré la récente indisponibilité des mails et la "mini-crise virtuelle" qui a suivi, je persiste à croire que Google offre des solutions tout à fait viables pour les PME (mails, calendriers, etc.), avec de nouvelles fonctionnalités qui vont dans ce sens (Google pour mobiles, consultation et rédaction de mails hors-ligne, etc.).
  • le deuxième est un résumé de la conférence de lancement de Quotero 1.0 (à laquelle j'ai assisté), une GED Open Source.

jeudi 19 février 2009

Paradigme MDA : sortie de Lyria Leonardi 4.2

Je me permet de copier ici (avec quelques modifications) le contenu d'un post de mon blog personnel... qui lui-même reprenait un billet du blog java de developpez.com signalant la sortie de la nouvelle version de l'outil Leonardi.

Les principales nouveautés de ce produit étant décrites dans le billet que je site, je ne les recopierai pas. En revanche, je ferai une (très) rapide présentation de l'outil (un résumé des informations que l'on peut trouver sur le site de Lyria), ainsi que du paradigme MDA auquel il se rattache.

Lire la suite...

mardi 3 février 2009

La plate-forme décisionnelle open Source "Spago BI" passe en version 2.0

A l'occasion de la sortie de Spago BI 2.0 (une solution de Business Intelligence open Source), une conférence a eu lieu dans les locaux de la Cantine.

J'ai assisté à cette conférence, et en voici un petit compte-rendu :

Lire la suite...

jeudi 20 novembre 2008

Mise à jour communautaire de developpez.com

Je suppose que bon nombre d'entre vous connaît le site http://www.developpez.com/, la plus grosse communauté virtuelle de développeurs francophones (tous langages confondus), ses blogs techniques, et ses forums, qui sont une référence lorsqu'on butte sur un problème technique.

Depuis maintenant 3 jours, ce site a subi une grosse mise à jour, visant à accentuer le côté "communautaire":

  • possibilité d'annoter les profils des membres (principe des évaluations Ebay ou des "messages sur le mur" de Facebook)
  • possibilité de créer des albums de photos
  • possibilité de créer (ou de rejoindre) des groupes d'utilisateurs par centre d'intérêt.


Derrière cette mise à jour, on peut voir une tendance assez généralisée du web à s'orienter vers les systèmes communautaires (Ebay ayant été un des précurseurs en la matière, en allant jusqu'à créer un vocabulaire dédié partagé entre "ebayeurs et ebayeuses"): les nouvelles fonctionnalités proposées par http://www.developpez.com/ rejoignant finalement celles proposées par d'autres sites communautaires (Facebook, LinkedIn, Viadeo, etc.).

mardi 4 novembre 2008

Les Google Apps disponibles 99.9% du temps

Google vient de l'annoncer sur son blog officiel: le taux de disponibilité des Google Apps est de 99,9%

C'est plutôt une bonne nouvelle pour le million d'utilisateurs professionnels (dont Alcion Group) ayant choisi d'externaliser une partie de leur infrastructure informatique en utilisant les Google Apps, afin de se lancer dans le Cloud computing, concept à la mode du monde informatique.

Lire la suite...

mercredi 16 juillet 2008

Revue de presse estivale du monde java

En juin et en juillet, de nombreux projets liés à java ont bien évolué. Voilà un petit résumé de ces évolutions (outre la sortie de la nouvelle version d'Eclipse Ganymède à laquelle un billet complet a été dédié):

Par ailleurs, Sun a publié un compte-rendu des différentes présentations techniques qui y ont été faites lors de JavaOne session 2008.

jeudi 26 juin 2008

Sortie de Eclipse Ganymede

Il y a un mois, nous avions annoncé la sortie de la première release candidate de la nouvelle version d'Eclipse, et les nouveautés qu'elle apportait.

Hier, c'est la version finale de cette nouvelle version (Eclipse 3.4 "Ganymede") qui est parue. Et avec elle, un certain nombre de fonctionnalités supplémentaires par rapport à la release candidate et à la version précédente.

Lire la suite...

lundi 23 juin 2008

Vérifier automatiquement la qualité d'un code java

Il existe de nombreuses règles de "bonnes pratiques" en programmation objet, dont certaines sont spécifiques au langage java. Il existe des formations et des ouvrages entiers consacrés à ce sujet: je n'ai donc absolument pas la prétention d'en faire la liste ici. En revanche, j'aimerais attirer l'attention sur le fait qu'il existe maintenant des outils faciles à mettre en oeuvre, et permettant de vérifier automatiquement un certain nombre de ces règles de "bonnes pratiques". Ils permettent d'améliorer significativement la qualité du code, pour un faible coup (à condition qu'ils soient déployés le plus tôt possible dans le processus de développement).

Lire la suite...

mercredi 28 mai 2008

Eclipse Ganymede est passé en RC1

La nouvelle version de Eclipse (Ganymede) vient de passer la cap de la "Release Candidate". Il est encore un peu tôt pour l'utiliser en environnement professionnel, mais cette version se montre déjà prometteuse.

Du point de vue de l'interface, il y aura moins d'évolution majeures que n'en a connu la version "Europa" actuelle, mais on peut tout de même relever quelques points que les développeurs apprécieront:

  • le "quickfix" proposant de corriger automatiquement les erreurs de code apparaît maintenant au survol des erreurs: il n'est plus nécessaire d'aller jusque dans la barre latérale de l'éditeur
  • une navigation en "fil d'Ariane" permet de revenir bien plus facilement à la classe sur laquelle on travaillait lorsqu'on se déplace en suivant des objets ou des méthodes
  • la gestion des plugins installés et disponibles, qui a été complètement revue et qui est maintenant beaucoup plus intuitive
  • le temps de chargement de l'espace de travail, qui a été nettement réduit (divisé par 2 à 3)

Mais la grosse nouveauté de cette version réside à mon avis dans les deux nouvelles distributions disponibles, qui vont certainement être très prisées:

  • une distribution "Java J2EE" spécialisée dans les applications de reporting, incluant des outils de développement pour BIRT
  • une distribution "Architectes", incluant des outils de modélisation (UML, etc.)

Enfin, j'ai pu remarquer que la vitesse de compilation des gros projets a été augmentée par une meilleure gestion des processeurs à plusieurs cœurs.

Pour télécharger une de ces distributions de Ganymede, c'est par ici: http://www.eclipse.org/downloads/packages/

jeudi 20 mars 2008

Utiliser la Wiimote autrement

Depuis maintenant plus d'un an, la Wii s'est imposée comme un énorme succès commercial de Nintendo, principalement a cause de sa manette, la "Wiimote", et de son gameplay révolutionnaire. Celui-ci permet effectivement de passer de très bonnes soirées entre amis, mais a également donné l'idée à des chercheurs d'analyser son fonctionnement, afin d'y trouver d'autres applications. Cette page consacrée à la Wiimote du professeur Johnny Chung Lee explique en images son fonctionnement, en trois parties:

  • une présentation du principe de fonctionnement de la Wiimote.
  • une application pratique, dans le domaine de la bureautique et du travail collaboratif.
  • une application à ce qui pourrait être "l'avenir de la télévision", avec une démonstration de "headtracking" impressionnante.

PS: si certains ont envie de bricoler et d'utiliser leur console autrement, le professeur Chung Lee a mis à disposition les codes sources de ses applications d'exemple (programmées en C#).

mardi 12 février 2008

Quelques nouveautés J2EE

Il y a quelques temps, nous avions parlé de la sortie de Eclipse 3.3, qui avait apporté un gros lot de nouveautés améliorant grandement le confort de développement J2EE.

Cette version étant maintenant stabilisée (WTP2 avait dans sa toute première version quelques bugs génants), c'est maintenant la version 3.4 d'Eclipse qui est en préparation, et qui devrait à son tour améliorer la productivité du développement, avec entre autre: - la navigation en Breadcrumb - une meilleure prise en charge des annotations - une meilleure gestion des jars (possibilité de faire plusieurs configurations avec des "Main Class" différentes pour un même jar) - complétion de code améliorée et étendue - etc.

La version M5 de Eclipse 3.4 est déjà disponible ICI pour ceux qui veulent la tester. La liste complète des évolutions déjà disponibles dans les versions "Milestone" successives est disponible pour la M5, la M4, la M3, la M2 et enfin pour la M1.

Côté Framework, on peut noter la sortie ce 9 février de Wicket 1.3.1., un Framework de l'Apache Foundation, permettant de développer des interfaces web. Il est actuellement très populaire auprès de la communauté java francophone, et beaucoup de développeurs l'ayant essayé préfèrent Wicket aux JSF. Cependant, je ne m'avancerai pas trop sur les qualités/défauts de ce Framework, n'ayant pas pu le tester à fond moi-même. Pour ceux qui veulent le découvrir, il est disponible ICI, et je conseille pour débuter ce tutoriel.

lundi 10 décembre 2007

Mashups cartographiques...

MapifiedKayak.screenshot.jpgJe me fais un petit peu de pub:

Si vous êtes intéressés par les technos du Web 2.0 (javascript, html, css, php,...) et la représentation cartographique de données, je vous invites à faire un passage par mon site perso. Vous y trouverez plusieurs projets de veille technologique sur ces sujets, dont un à même eu le privilège d'être 'Mashup of the day" sur programmableweb.com.

  • Mapified Kayak: une jolie couche de présentation pour le métamoteur de recherche de voyages Kayak, et la possibilité de rechercher plusieurs destinations et dates d'un coup (Google Maps + Kayak API).
  • Overflown Countries: pour savoir quels pays vous survolez lors de vos voyages (Google Maps + Geonames API).
  • Mapified Stock Indices: une présentation géolocalisée des variations d'indices boursiers asiatiques (Google Maps + Geonames + Dapper API).
  • Mapified Rss: pour géolocaliser n'importe quel flux RSS et mettre en surbrillance les pays (Google Maps + Geonames API).
  • GoogleMaps vs YahooMaps: les 2 cartes sur la même page pour comparer facilement les niveaux de zoom disponibles. Une fonction de synchronisation est fournie (Google Maps + Yahoo Maps API).


Bien que personnels, ces projets constituent également des démos pour présenter notre offre E-business et les compétences des ingénieurs d'Alcion dans ce domaine. Dans cette optique, si vous êtes vous-mêmes ingénieurs d'Alcion, n'hésitez pas à faire partager vos projets logiciels sur ce blog.

vendredi 23 novembre 2007

Des videos à voir

Il existe aujourd'hui un support d'auto-formation que l'on néglige encore trop: la vidéo. La progression de la bande passante d'Internet permet d'assister maintenant à des conférences techniques fort éducatives depuis son canapé. On recommande à ce titre le YUI theater et le YUD Theater chez Yahoo, et le channel Googletalks de Google. Sans oublier le Channel9 de Microsoft. Des conférences gratuites faites par des gens brillants. Que demander de plus? ;)

mercredi 21 novembre 2007

Optimiser l'expérience utilisateur

On sait bien que la patience de l'utilisateur d'une application informatique est une denrée précieuse qu'il convient de préserver au maximum, surtout lors d'une 1ère utilisation.
Les équipes de Yahoo! se sont intéréssés au problème dans le cadre des applis Web et ont élaborés des règles à étudier de près. Parmis celles-ci, la 10ème: "Minify JavaScript". En effet avec l'avènement d'AJAX, les clients légers ont souvent besoin de requêter auprès de serveurs des scripts de plus en plus lourds dont le temps de récupération peut parfois entamer largement le capital sympathie d'une appli.
Après avoir testé plusieurs solutions de compression, je vous recommande Javascript Compressor. Il m'a permis de réduire la taille d'un script en production de 35kO à 24kO. Cet utilitaire permet également d'obfusquer son code et donc de le protéger si jugé sensible. Ce cryptage a également des effets bénéfiques sur la taille puisque dans le cas de notre script précédement évoqué, on est passé à 15kO. Ce dernier restant bien sure complètement opérationnel...

Je profite de ce billet pour vous inviter à préparer vos vacances en visitant la page de ce projet de veille technologique de la DT autour des technos Web 2.0 (AJAX, Web Services, Google map, frameworks javascript): MapifiedKayak. Un peu d'indulgence svp, ce n'est qu'une beta...

jeudi 15 novembre 2007

Web 2.0 API Listing

Depuis le temps que je cherchais un annuaire des API Web 2.0, je l'ai enfin trouvé et je partage son url avec vous :)

vendredi 9 novembre 2007

Géomarquer ses données

Il est devenu très fréquent de voir des données affichées dans un composant cartographique de l'IHM d'une application. Les parisiens penseront peut-être tout de suite à celui de Velib' qui permet de localiser rapidement les stations et la disponibilités des vélos. Il est clair qu'une telle présentation est beaucoup plus ergonomique que le rendu dans une grille.
Pour atteindre un tel résultat, il convient de pouvoir répondre à 2 questions:

  • Comment géotaguer ses données?
  • Comment présenter ses données?


Comment géotaguer?
Il existe plusieurs services permettant de géotaguer ces données c'est à dire associer une longitude et latitude à une entité localisable (adresse, code postal,etc) . On recommendera ceux de Geonames.org et Google. Les formats de sortie sont au choix xml ou json.
On notera en particulier l'existence d'un service très intéressant de conversion de feed RSS vers geoRSS. C'est ce service qui est utilisé dans notre application sur les indices boursiers (voir billet précédent) ou bien pour localiser les dernières news planétaires.
Il peut parfois être intéressant de faire du géocodage inversé, c'est à dire associer une addresse (souvent approximative) à un couple (latitude, longitude). On trouvera ici plusieurs services intéressants. Notez que google ne propose pas (encore) de tels services.
Un autre besoin peut consister à localiser des addresses IP. Il existe là encore plusieurs services dont IP2Location utilisé par le fameux wikiscanner.


Nota: Pour des besoins locaux, Les BD sous-jacentes peuvent souvent être installées en local moyennant leur achat.

Comment présenter ses données?
L'insertion d'entités géotaguées dans une carte est assez direct chez Google map comme chez Yahoo! map. L'API Google utilise un objet GGeoXml dont le constructor prend le fichier de données géotaguées en paramètre. L'objet YGeoRss fait de même chez Yahoo! map.

lundi 15 octobre 2007

Des widgets aux mapplets

UPDATE DU 16/10/07: En complément du blog officiel de Google Map, je vous recommande le blog Google Maps Mania qui regorge d'informations fascinantes sur les mashups possibles avec Google Maps.

BILLET ORIGINAL:

Le 11 juillet dernier, Google annonçait le lancement d'un nouveau service appelé Mapplets. Il s'agit de mini-applications insérables dans google map, comme le précise le site officiel. Un certains nombres sont déja disponibles dans le Google Map Directory et sont pour la plupart superposables pour faire du recroisement d'informations.
L'intérêt des Mapplets est identique à celui des Widgets web: permettre aux utilisateurs d'installer gratuitement les services de tiers dans leur application & pages web. C'est à la charge de votre business model d'évaluer comment rentabiliser l'opération (un chercheur d'hôtels ou de cinémas avec commisions).

D'un point de vue technique il est très facile de transformer une application utilisant Google Map en Mapplet en suivant le protocole proposé. Et c'est ce que nous allons faire avec notre visualiseur de variation quotidienne des bourses asiatiques exposé dans le billet précédent. L'idée maitresse est d'encapsuler le code html, css et javascrit dans un fichier XML qui est servi en tant que mini page web (dans des balises <iframe>) sur le site de Google Map. Le fichier XML doit-être accessible depuis l'internet pour être récupéré à la demande par Google.
Notre application est accessible ici et insérable dans votre map en activant ce lien (Vous devez posséder un compte Google).

mapplet.screenshot.gif

L'opération a pris environ 1h mais l'application initiale était déja parfaitement fonctionnel. Le développement from scratch est plutôt délicat et nécessite de farcir son code d'alert(). Il est plutôt conseillé de développer dans un 1er temps une application standard AJAX puis de la mappletiser. Par ailleurs le code source est parfaitement lisible et donc récupérable par d'autres mais c'est le jeux: la plus-value de votre application vient du mode de présentation des données aux utilisateurs, pas de son algorithme.

PS: Sur le plan fonctionnel, on a maintenant une largeur de barre proportionnelle à la capitalisation boursière du pays. Par exemple, le marché japonais (4872 milliards $) n'a pas la même envergure que l'indonésien (166 milliards $) et cela est mis clairement en évidence.

vendredi 12 octobre 2007

API de Google et Yahoo! map

Dans un billet précédent de ce blog, nous avions vu qu'il était possible de construire des flux rss (dapper) et de géolocaliser leur contenu (yahoo!pipe). Nous avions pris comme exemple les variations des indices principaux des bourses asiatiques.
La présentation par défaut sur la page du pipe a le bon goût d'exister mais convenons que le rendu n'est pas percutant. Il faut en effet cliquer sur chaque marqueur pour avoir les informations.
L'idéal serait d'avoir des marqueurs représentatifs de la variation de l'indice, vert quand positif, rouge quand négatif, avec une taille proportionnelle à cette variation.
Pour arriver à ce résultat, il faut un peu programmer. Un API maps est fourni par Google et Yahoo! donc nous allons travailler avec les 2 pour comparer.
Le principe est relativement simple, dans chaque carte (YMap et GMap), pour chaque pays présent dans le flux RSS, on ajoute un marqueur (YMarker, GMarker) personnalisé (YImage ou GIcon). La hauteur du marqueur est ajustée par la formule Math.round(Math.abs(fChange) * 20) et donc d'avoir une hauteur de 20px pour une variation d'indice de 1%. Le fichier source est disponible en annexe (fonction fFillYahooMapWithGeo et fFillGoogleMapWithGeo).
Les résultats sont visibles ci-dessous, avec à gauche Google en haut et Yahoo en bas.

google.map.asian.stock.daily.change2.jpg yahoo.map.asian.stock.daily.change2.jpg

Sur le plan fonctionnel, un léger avantage à Yahoo! qui permet d'afficher un label par un simple passage de la souris sur le marqueur alors que Google nécessite de cliquer dessus.
Les métriques ne font pas apparaitre de différences significatives entre les 2 API:

  • Temps de chargement: environ 4s,
  • Nombre de requêtes: légèrement plus pour Yahoo (71 contre 54),
  • Octets téléchargés: environ 400kO,
  • Nombre de lignes de code propres aux API: une dizaine.

Les 2 API offrant un services de géolocalisation, nous pouvons donc essayer d'utiliser directement le flux RSS de Dapper (non géo-localisé) et confier la tâche de géolocalisation aux API. Yahoo le permet très simplement en remplacant un paramètre d'entrée du constructeur de YMarker mais les requêtes sont synchrones (fonction fFillYahooMapWithoutGeo dans le source). L'API Google est plus délicate à mettre en oeuvre car il faut utiliser un objet GClientGeocoder et utiliser une fonction de callback.
Dans les tests, il a été constaté un léger ralentissement (environ 1s) avec cette méthode à cause d'une plus forte utilisation du réseau (17 requêtes de plus).

Avis subjectif de l'auteur:

  • Aucune API ne se démarque de l'autre. Celle de Google est légèrement plus complexe mais compense par légèrement plus de fonctionnalités.
  • Notre application est bien exigeante en bande passante et temps d'UC puisqu'elle nécessite de mettre en forme le HTML chez Bloomberg, de transférer ce flux de Bloomberg à Dapper qui est alors retraité en RSS, de transférer de Dapper à Yahoo pour géolocaliser, puis enfin de Yahoo au client. Si Bloomberg (ou un autre) fournissait directement le flux rss (idéalement déja géolocalisé et gratuitement), on ne serait pas obligé de faire tout cela :)


PS: La démo utilise l'objet XMLhttpRequest qui n'autorise pas chez Firefox les requêtes hors du domaine courant, alors que si chez IE. Donc

  • si vous utilisez IE, mettez simplement "urlProxy":"" à la ligne 29 dans maps.htm,
  • si vous utilisez Firefox, installez un serveur local (localhost) avec la page php_proxy_simple.php fournie en annexe,

mercredi 3 octobre 2007

L'évolution des langages web

Aujourd'hui les développements web s'articulent principalement autour

Des travaux sont actuellement en cours au sein du W3C pour préparer les évolutions qui seront prises en charge par les prochaines générations de navigateurs.

longue-vue-telescopique.jpgHTML5 (auparavant Web Applications 1.0)
Apple, Opera et la fondation Mozilla se sont associés de manière informelle au sein du Web Hypertext Application Technology Working Group (WhatWG) pour donner naissance au successeur du HTML4.1 figé depuis 8ans. Le W3C a pris ensuite le résultat de ces travaux comme base.
Les specs du HTML5 et de son équivalent XML, appelé XHTML5, sont à l'état de draft.
Pour ceux intéréssés par les nouveautés, un article d'IBM mérite une lecture. La synthèse de la prise en charge par les navigateurs est disponible ici.

ECMA-262 edition 4
A la base du futur Javascript 2, la naissance de la 4eme édition des specs de l'ECMA-262 a été lente et laborieuse pour cause de vision divergente entre Mozilla et Microsoft. Toutes les infos sur l'état courant sont sur un wiki.
On annonce une machine virtuelle et un compilateur JIT (appelée Tamarin dans Mozilla2).

Les microformats
Supportés par Firefox3 et IE8, les microformats visent à faciliter l'extraction automatique de contenu web en attachant de la sémantique aux données. Une introduction se trouve sur le site de référence.

lundi 24 septembre 2007

Yayoo! Pipes ou les prémices du nouveau web

Tim O'Reilly le considère comme le service qui va changer l'internet parce qu'il met enfin le web en tant que BD à la portée des non-informaticiens.
YahooPipes-logo.gif Ce service, c'est Yahoo!Pipes et ca permet de faire des aggégations très intéressantes.
Prenons l'un de ses exemples phares: le GeoAnotated Reuters News. Ce pipe récupère les 10 titres à la une dans un rss Reuters et alimente un service de conversion rss vers georss pour fournir un georss. Si vous regardez le source, vous verrez la présence des balises xml <geo:lat> et <geo:long>.
Ce flux est ensuite traité pour afficher les résultats dans une carte.

Evidemment, il ne vous a pas échappé qu'il était déja tout à fait possible de coder cela soi-même avec des HttpRequest pour peu d'avoir les compétences en javascript adéquates. La grande force de Yahoo!Pipes est d'offir une IHM masquant la complexité du code et de permettre le clônage des pipes produits.
Yahoo! Pipes et Dapper (vu dans le précédent billet) sont très complémentaires puisque le 1er peut produire le rss si celui-ci n'existe pas dans un site et le 2ème le manipuler aisément. Par exemple, si l'on souhaite représenter sur une carte les évolutions journalières des bourses asiatiques, on créé le Dapp à partir de Bloomberg, puis le pipe pour géolocaliser les bourses.

Dapper ou le web scrapping pour les pros

Disons que nous concevons une application web de gestion de porte-feuille boursier et que nous avons besoin des cours de clôture à J-1 de l'indice CAC40 pour les retraiter ensuite suivant nos besoins. Comment allons-vous nous y prendre?
Le site d'Euronext présente quelque chose de bien intéressant: une table HTML avec les 40 valeurs de l'indice. Un service de téléchargement au format cvs ou excel est proposé mais ce n'est pas vraiment le flux de données le plus simple à traiter par notre application. Une autre solution peut consister à parser nous même le flux html pour extraire les informations pertinentes mais là encore le travail n'est pas simple. Alors?
dapper-logo.gifL'idée est de dapper le contenu du tableau grâce au service web proposé par Dapper. La simplicité de l'opération est tout simplement fantastique puisqu'il nous faut 10mn maximum pour créer un générateur de flux xml adapté à nos attentes et le rendre disponible en ligne ici. Dans le fichier de sortie, chaque action est présente sous la forme:

<action groupName="action" type="group">
    <libelle fieldName="libelle" href="http://www.euronext.com/trader/summarizedmarket/summarizedmarketRoot.jsp?lan=FR&amp;selectedMep=1&amp;idInstrument=18775&amp;isinCode=FR0000120073" originalElement="a" type="field">AIR LIQUIDE</libelle>
    <cloture fieldName="cloture" originalElement="td" type="field">94.57</cloture>
    <volume fieldName="volume" originalElement="td" type="field">138,637</volume>
    <varEnPourCentJsurJmoins1 fieldName="varEnPourCentJsurJmoins1" originalElement="td" type="field">-0.32</varEnPourCentJsurJmoins1>
</action>

nous pouvons également choisir le format de sortie json si nous préférons.

Tous les sites web deviennent ainsi potentiellement des web services grâce à ce web scraping.

jeudi 20 septembre 2007

Gérer les browsers à l'heure des RIA

valid-css2.pngLes Rich Internet Applications présentent bien des avantages mais il faut leur reconnaitre un inconvénient majeur du point de vue de l'ingéniérie logicielle: l'obligation de gérer différents navigateurs.
Le marché des navigateurs est dominé par 2 acteurs: Microsoft Internet Explorer (avec environ 80% de PDM en légère décroissance) et Mozilla Firefox (avec environ 15% de PDM en légère croissance). Si IE6 domine encore (45% de PDM), IE7 prend petit à petit sa succession (35%). Du côté de firefox, la version 2 est devenue ultra-majoritaire. Le bilan est donc qu'il convient de veiller en ce moment à la compatibilité de son application avec 3 navigateurs dans le cas d'un développement destiné au grand public.
Il existe des technologies permettant de faire abstraction du navigateur comme les applets Java ou Flash mais cela oblige l'utilisateur à posséder une JVM ou des plugins spécifiques (dans la bonne version) ... et l'ingénieur les compétences.
valid-xhtml10.pngUne des grosse tendance de ces dernières années est l'utilisation d'AJAX, ce qui revient à utiliser le javascript, le DOM et les feuilles de styles. Si les choses se passent bien en terme de portabilité avec la syntaxe du javascript, les ennuis apparaissent lorsqu'on accède au DOM, chaque browser ne gérant pas les mêmes entités. Les spécifications du W3C vont vers une standardisation mais celle-ci est lente. On retrouve exactement le même phénomène avec les feuilles de styles (les specs sont ici).

Pour y avoir passé plus d'heures que je n'aurais voulu sur différents projets, il est fondamental d'éviter le champ de mines du cross-browser compliance si l'on veut respecter les délais d'un projet de RIA. Pour cela on s'appuiera au maximum sur les librairies et frameworks disponibles en veillant à régulièrement tester le rendu dans les navigateurs cibles et surtout pas uniquement à la fin des développements.
Notez bien que les librairies ne font pas tout. La RIA Alcionbooks est par exemple non complètement fonctionnelle sous IE dans sa V1.0 malgré l'utilisation de scriptaculous et de nombreuses heures passées dessus par Eric.

lundi 17 septembre 2007

N°100 du magazine Programmez

Le magazine mensuel des développeurs Programmez fête sa 100ème édition avec le n° de ce mois (actuellement en kiosque). Souhaitons donc un bon anniversaire à ce magazine de qualité.
Parmi les sujets traités, un très intéressant dossier sur l'avenir du métier de développeur.

PS: Si vous passez au siège, je peux vous le prêter...

jeudi 13 septembre 2007

And the award goes to...

Dans un univers opensource très mouvant, il est bon d'avoir quelques repères.

Le site Infoworld vient de sortie son cru 2007 des Bossie awards qui vise à distinguer les meilleurs logiciels opensource destinés aux entreprises. Il y a différentes catégories dont le software development.
On extrait particulièrement 3 résultats:

N'hésitez pas à donner votre avis sur ces résultats...

mercredi 12 septembre 2007

AJAX et web scraping

Vous avez sûrement déja constaté que la plupart des pages web agrègent des données provenant de différents sites. Cela peut se faire de bien des manières, de la simple balise html iframe jusqu'aux web services. Par ailleurs, certains sites comme wikipedia fournissent régulièrement aux publics les dumps de leur BD qu'il convient d'importer dans son propre SI aux prix de coûteuses manipulations.
Sans aller jusqu'à cette extrémité, dans une optique de data mining, il est parfois très intéressant de construire sa propre page web en agrégant le contenu partiel (statique ou dynamique) de plusieurs autres pages sans qu'un protocole autre que http soit disponible et donc pratiquer le web scraping. C'est ce que nous faisons avec notre Dashboard. qui synthétise des informations arrivant en format mediaWiki, encapsulées entre 2 balises <text> dans plusieurs pages XML, dans une page locale unique au format html.
Ce type d'architecture logicielle est dite RESTful.

La faisabilité technique repose sur l'objet XMLHttpRequest et c'est lui qui se cache derière le A de AJAX en permettant de lancer des requêtes asynchrones à un serveur http.
L'exemple le plus connu reste google maps où le contenu de la zone carte/image satellite évolue avec les actions de la souris dans la page.

Dans le Dashboard, les appels au serveur wikipedia ne sont fait qu'une seule fois au chargement de la page et le DOM de la page est modifié une fois la page affichée (où le tableau est alors vide). A ce titre nous faisons probablement du AJAX lite ;)

L'étape la plus délicate n'est pas la récupération cachée d'un flux de donnée http mais le parsing de ce flux qui ne se prête pas forcément bien à l'extraction de données. Une fois les infos repérées avec la méthode de l'objet String indexOf, substring permet leur extraction et innerHTML leur réinjection dans la page courante.

Cette méthode autorise par exemple la construction de cette vue synthétique de variation de cours boursiers à partir des pages boursorama.
Screenshot.Ajax.CoursBourse.png
PS: Ce billet passe sous silence d'éventuels copyrights qui peuvent exister sur les contenus ainsi récupérés.

lundi 10 septembre 2007

Dashboard of software release versions

UPDATE 09/20/2007: V1.5 released with several code improvements to be cross-Browser compliant. This version uses the localhost web proxy by default (see why here) and the scriptaculous library.

When you manage a set of application software, more often than not it's time wasting to check if it's still up to date by browsing home site by home site. Here comes the freely available Dashboard of software release versions annexed to this article.
It's based on a xml file where you store data about your own configuration, application by application in a similar way to the sample below.

	<application>
		<!-- URLradical is taken from the wikipedia url-->
		<URLradical>Apache_Tomcat</URLradical>
		<currentVersion>6.0.13</currentVersion>
	</application>

The dashboard is a HTML page which retrieves data from both the xml file and wikipedia using Microsoft.XMLDOM and Msxml2.XMLHTTP objects. Everything is done client-side. In other words, no http server is required.

dashboard.screenshot.png

The screenshot of the dashboard related to our continuous integration platform tells us at a glance that new versions of Apache Tomcat, Apache HTTP server and Subversion have already been released since the release of the platform.

Known limitations:

  1. depends on the content of wikipedia pages (more precisely the infobox software tag. For example, Apache Continuum has no infobox yet, thus the error in the screenshot).

lundi 27 août 2007

Le Project Object Model de Maven en pratique

logo_built_by_maven.png Le POM est au coeur de la statégie de build proposée par Apache Maven. Il permet de gérer simplement à partir d'un fichier XML une grande partie de la problématique de récupération des sources, de la gestion des dépendances, de la compilation, du déploiement et de la génération de rapports (comme ici et ici sur le projet NAG).

Ce billet n'a pas vocation a expliquer le POM, puisque de très bons articles techniques le font déja ici et ici.Par ailleurs une étude directe du schéma n'est pas dénuée d'intérêt non plus.

Ce qui peut paraitre manquant c'est un document opérationnel synthétisant toutes ses connaissances dispersées. c'est à ce titre que la DT vous propose en annexe un template de POM qui vous facilitera la mise en application de Maven sur vos projets Java.

PS: Maven fait partie de la PFIC Java/J2EE d'AlcionGroup.
PS2: Apache Continuum exploite les infos contenues dans le POM pour intégrer en continu.

vendredi 24 août 2007

Un beau projet vient de s'achever...

AlcionGroup vient de réaliser pour le compte de la société Stein Heurtey une IHM pour son système d'optimisation de réchauffage pour procédés complexes.
L'IHM a été réalisée en C# .Net 2.0 et s'interface avec le reste du système via des fichiers binaires et sockets TCP. Elle comporte une vingtaine de fenêtres regroupée en MDI comporant des graphiques évolués et redimensionnables à la volée (position et température des produits dans les fours, puissance des bruleurs, temps de résidence...).
L'application permet également un masquage complet du système d'exploitation et une gestion avancée des langues.
Un petite démo vous présente cette application ci-dessous:

Félicitations à Réda B. et Clélio C. pour leur travail.

mercredi 8 août 2007

API Java et Windows Registries

Depuis la version 1.4 de Java, un package java.util.prefs.* est apparu. Il permet de gérer des préférences qui correspondent à des informations organisées d'une manière hierrarchique.

La manière dont les informations sont stoquées est masquée par l'interface java.util.prefs.PreferencesFactory

L'implémentation utilisée peut être configurée comme argument de la JVM: java -Djava.util.prefs.PreferencesFactory=com.MyPreferencesFactory

Sous Windows, et dans le cas où aucune implémentation n'est fournie, c'est java.util.prefs.WindowsPreferencesFactory qui est prise par défaut.

Cette dernière se base sur les registres Windows et stoque les informations sous HKEY_CURRENT_USER\Software\JavaSoft\Prefs.

Pour plus d'information: http://www.ociweb.com/jnb/jnbSep2001.html

lundi 6 août 2007

Intégrer en continu...

UPDATE: Précisons que l'intégration continue peut très bien se coupler à n'importe quelle méthodologie de développement logiciel: cycle en V, Unified process, Scrum, Extreme Programming, ....


Un sujet actuel: l'intégration continue (continuous integration) est une stratégie de génie logiciel visant à répérer le plus rapidement possible les éventuelles régressions d'une application par passage de jeux de tests dès la mise en version du code.
On trouve une très bonne introduction sur le site de Martin Fowler, père du terme.
Alcion Group possède une plate-forme d'intégration continue pour .NET autour de Nant et CruiseControl dans le cadre du projet MGV et des études sont faites pour un avoir une pour J2EE (Maven, Continuum, ...).

Si vous même avait une expérience du sujet, n'hésitez pas à en faire part dans les commentaires.

jeudi 19 juillet 2007

Projet qui rit, projet qui pleure...

UPDATE: Un article qui prolonge le sujet: Top 10 Project Pitfalls You Can Avoid.

TriangleQualiteNotre vie d'ingénieur logiciel est ponctuée de projets qui se passent parfois très bien, parfois malheureusement très mal, et le plus souvent à peu près bien (ou à peu près mal).
Un de vos rôles (souvent implicites), et ce quelque soit votre fonction, est d'identifier au plus vite si vous êtes sur un projet qui dérape et de proposer les actions correctives nécessaires.

2 articles recommandés (en anglais) traitent du sujet: Comment identifier les projets en difficulté? et Comment sauver un projet?

Générateur de nombres aléatoires

Comme beaucoup le savent, la génération de nombres aléatoires n'a jamais été vraiment aléatoire en informatique.
En C++ par exemple, on utilise généralement les fonctions srand() et rand() fournies par la librairie standard.

Tout cela pourrait bien changer prochainement avec l'apparition d'un nouveau service online gratuit appelé Quantum Random Bit Generator qui permet d'obtenir de véritables nombres aléatoires en s'appuyant sur le phénomène physique quantique d'émission de photons dans les semiconducteurs.

A découvrir absolument...

vendredi 13 juillet 2007

De l'importance de la gestion des exigences

Une exigence en ingéniérie informatique est un besoin fonctionnel ou technique que le produit du projet doit satisfaire. Il doit être idéalement sans ambiguité et purement quantitatif.
Example:

Le système doit afficher l'écran mis à jour en moins de 2s une fois le bouton de validation cliqué.

ApplicationLifecycleOn ne le dira jamais assez: la gestion des exigences est une cause fondamentale de la réussite ou de l'échec d'un projet.
Dans un processus de développement, il est illusoire de croire que l'on n'aura jamais besoin de "revenir en arrière", c'est à dire de retoucher au jeu initial d'exigences. Le versionning d'exigences est une réalité au même titre que le versionning de code.
Dans encore trop de projets, les exigences sont gérées dans des documents Office qu'il est bien difficile de tenir à jour. Heureusement il existe des outils dédiés à la gestion des exigences facilitant la collecte, la collaboration et l'analyse d'impact tout au long du cycle de développement logiciel. On citera Telelogic doors et Borland Caliber mais il en existe d'autres sur le marché.
Ces outils sont en général des modules d'une suite de logiciels couvrant tout les aspects de l'Application Lifecycle Management (planifier, définir, concevoir, tester) à partir d'un repository unique de données.

jeudi 12 juillet 2007

Ruby on Rails : slides, démo et liens

rails-small.pngMerci à Aurélien Drouet pour son intervention convaincante :

Lire la suite...

mercredi 4 juillet 2007

Mémoire d'éléphant : au coeur de Myspace, Ebay...

7623.jpgLes grands de l'e-business rencontrent des problématiques logicielles sévères. Cependant, elles ne sont pas spécifiques aux mastodontes : elles se déclinent à toutes les échelles.
Une compilation de liens rares et précieux sur les secrets les mieux gardés de l'industrie.
Des jours et des jours de lecture captivante :-) !

MySpace : de 0 à 140 millions de comptes en peu de temps :
un article détaillé dans Baseline.

Une présentation technique détaillée d'Ebay, ses 2000To de données, pour (chaque jour) 1 milliards de pages vues (construites en XSL !) et 26 milliards de requêtes SQL. 100 000 lignes de code nouveau sont mises en production chaque semaine ! Et dans CIOInsight, la vision organisationnelle qui va avec.

Chez Amazon, une approche idéaliste de la SOA qui semble fonctionner : partitionner le gros problème en 50 petits, rendre une équipe responsable de chacun (par exemple : la page d'accueil, le profil utilisateur, le catalogue, le module de suggestions...) de bout en bout (ses propres serveurs, ses propres bases) avec une connexion SOA systématique entre modules afin de favoriser le découplage. Le détail dans une interview passionnante de Werner Vogels, leur directeur technique.

Et du côté de chez Google ? Après PageRank, l'algorithme qui nous a enfin permis de trouver quelque chose sur le web, GFS, innovation majeure dans le stockage (réunir plusieurs milliers de machines pour stocker un unique très gros fichier présenté comme tel aux applications), nous avons aimé :

  • cette interview d'Amit Singhal, en charge de l'algorithme de recherche et de la qualité des résultats, notamment sur les évolutions récentes ;
  • Le responsable des opérations parlant du fonctionnement des machines et de l'organisation des logiciels et des données ;
  • un article de fond offrant une vue détaillée de la technique et du business.

mardi 3 juillet 2007

OS Cache

OSCache est une solution de cache opensource Java qui se présente sous trois formes : filtre de servlet, taglib JSP et API.

Nous avons employé cette solution dans le cadre de la refonte d’un site Internet à grande fréquentation. Voici, en quelques points pratiques, ce qui distingue OSCache des autres solutions opensource.

Lire la suite...

vendredi 29 juin 2007

OpenBar AlcionTech le 11 juillet : Développement rapide avec RubyOnRails

rails-podcast.pngPour ce dernier rendez-vous avant l'été, nous mettons un coup de projecteur sur une nouvelle technologie dont beaucoup ont entendu parler mais que peu ont eu l'occasion d'utiliser.

Ruby On Rails est une plate-forme open-source dont la promesse est de permettre le développement rapide d'applications relativement simples, en interface web, sur une base de données.

Basée sur un langage de script objet apparu dans les années 90 - Ruby - RoR permet, grâce à la simplicité de sa configuration, le recours à de nombreux implicites, d'éviter les répétitions et de simplifier les développements. Les zélotes parlent développement 10 fois plus rapides (qu'en J2EE ou .NET), et de "framework hautement productif".

Aurélien Drouet, qui a pu développer plusieurs applications pour un leader de la distribution, nous fera bénéficier de son retour d'expérience par une présentation générale accompagnée d'une démo, et nous aidera à y voir clair dans l'énorme éco-système Ruby On Rails en cours de développement. Enfin, il nous dira pour quelles applications utiliser Ruby On Rails... et celles pour lesquels c'est inadapté.

Le 11 juillet à 18h30 au siège.

vendredi 1 juin 2007

Conférence technique animée par Jaxio

Le commencement de tout projet, nouvelles technologies ou autre, nécessite la mise en place d'un socle technique sur lequel va reposer l'ensemble de la logique métier de l'application future. L'expérience montre que bon nombre de développeurs, ont recours à une sorte de boite à outils qu'ils ont dû mettre en en place petit à petit au fil des projets et qui se compose de frameworks, classes utilitaires, bonnes pratiques etc.

Jaxio propsoe une solution élégante basée sur un générateur d'application reposant sur le modèle de la base de données pour générer le squelette de l'application. En quelques minutes, le temps du lancement du générateur, une application packagée est prête à être déployée sur, en théorie, n'importe quel serveur J2EE.

L'application résultatnte est plus qu'un socle technique: elle propose la majeur partie des widgets qu'on trouve dans une IHM classique: tri, pagination, changement de look and feel en quelques clicks

Lire la suite...

mercredi 23 mai 2007

Guide des logiciels open source

La société IdealX fait partager son expertise des logiciels open source ici. Environ 280 logiciels à usage principalement professionnel sont listés et évalués. A étudier de près même si la dernière mise à jour semble dater de janvier 06.

Par exemple, si vous cherchez à sécuriser votre PC sous Windows avec 100% d'open source, il est recommandé ici d'installer l'antivirus Antivir (nota: AVG Anti-Virus Free Edition est gratuit mais pas open source) et l'antispyware spybot (nota: Ad-Aware SE Personal Edition est gratuit mais pas open source).

jeudi 19 avril 2007

JMS en quelques mots

Un système de messaging entreprise permet de faire communiquer des applications à travers des messages. Les Système de messaging ou MOM (Middlewares orientés messages) les plus courants: Rendez vous (Tibco), MessageQ(Bea), MQ Series (IBM) ...

Lire la suite...

lundi 11 décembre 2006

Grace Hopper aurait eu 100 ans...

350px-Premier-bug-informatique-1945.jpgC'est qui celle là ? C'est une femme, pionnière de l'informatique,

  • qui a travaillé sur Mark II et III, et sur UNIVAC, les tous premiers ordinateurs ;
  • qui a inventé le bug (image ci-contre, lisez l'histoire si vous ne la connaissez pas !),
  • qui a crée le premier langage compilé, le langage A, et codé le compilateur qui va avec,
  • qui a grandement inspiré COBOL, qui reste un des langages les plus répandus. Et quand certains disent qu'il est dans l'ordre des choses que le langage le plus verbeux de l'histoire ait été produit par une personne du beau sexe, d'autres répondent que c'est bien un mec qui a concu Perl, suite compacte de borborygmes incompréhensibles...

http://en.wikipedia.org/wiki/Grace_Hopper

mercredi 6 décembre 2006

A la recherche du portail ultime

expeditor.jpgLe portail ultime ? Capable de fournir à chaque employé les applications dont il a besoin, sur son bureau. En prenant en compte la gestion des droits, et un déploiement totalement managé, particulièrement adapté aux grandes flottes.

C'est en tout cas l'a vision d'IBM qui vient de lancer, via sa filiale Lotus, le framework "Expeditor" pour assembler tout type d'IHM, a priori dans un contexte Windows, et reposant sur Eclipse et Websphere.

La concurrence ? Est clairement visé Microsoft, dont la nouvelle technologie Avalon/XAML, devenant dans l'ère Vista la couche de présentation de .NET, pourrait prétendre à l'ubiquité, sinon à l'universalité.

Une fonction originale de ce remplaçant de Websphere Everyplace : la capacité d'assembler des portlets (JSR169) qui tournent directement sur le poste client et fonctionnent donc en déconnecté... à condition de disposer de 512Mo de RAM. Et bien sûr, ça tourne également sur Linux.

mardi 5 décembre 2006

AlcionGroup au forum Supélec

Les 6 & 7 Décembre, ALCION Group est présent sur le Salon "FORUM SUPELEC" à Gif Sur Yvette. Avis à tous ceux qui veulent nous rendre visite sur le stand n°12 !

jeudi 23 novembre 2006

Java et le temps réel

Java est enfin devenu compatible avec les applications temps réel. Le principe du garbage collector empêchait en effet une exécution prédictible, capable de garantir des temps de réponse sous un délai imparti. Aujourd'hui, l'implémentation de référence permet de gérer des lantences quantifiées de l'ordre de 20 microsecondes.
http://java.sun.com/javase/technologies/realtime.jsp

Première étape : la concrétisation de la JSR001, the "Real Time Specification for Java", qui définit des modifications profondes : une API et des ajouts à la JVM. En résumé :

  • Deux nouveaux types de threads, dont un ne pouvant pas être interrompu par le garbage collector, et assurant un respect absolu des priorités (ce que l'implémentation standard ne garantissait pas) sur 28 niveaux
  • Deux nouveaux espaces mémoire, ne faisant pas l'objet de garbage collection : l"immortal memory", jamais désallouée (prudence !), et la scoped memory (détruite à la sortie du scope). Des fonctions de l'API permettent l'allocation dans ces espaces.
  • Deux mécanismes spécifiques aux applications temps réel : la prise en compte d'événements asynchrones ("happenings") et d'un chronométrage à la nanoseconde,
  • L'accès direct à la mémoire physique permettant de coder des drivers en java plutôt qu'en C/C++ appelé par JNI. Ici aussi, prudence !


Deuxième étape : la disponibilité de machines virtuelles implémentant cette nouvelle norme. C'est chose faite, nous en avons au moins deux :

  • L'implémentation Sun (Java Real Time System ou JavaRTS), sous forme d'add-on au JDK 1.4.1, fonctionnant uniquement sur Solaris/Sparc pour l'instant (la promesse d'autres plates-formes a été faite, avec la limitation que JavaRTS repose entièrement sur les qualités temps-réel de l'OS sous-jacent, Solaris en l'occurrence)
  • L'implémentation de TimeSys, qui est lead sur la maintenance de la spécification et auteur de l'implémentation de référence : http://www.timesys.com/java/


Le modèle retenu permet de créer des systèmes complexes nécessitant de la logique temps-réel (réponse en temps imparti) combinée avec de larges portions de code n'ayant pas les mêmes exigences, codées en java "standard". A noter également des implémentations de corba tirant parti de ces nouvelles propriétés.

Telechargement : Mastering Enterprise JavaBeans 3.0

Le livre n'est malheureusement pas imprimable car son auteur l'a protégé. Cliquer ci-dessous sur "une annexe"