lundi 30 novembre 2009

Afficher un PDF dans un navigateur sans plugin

Lorsque l'on souhaite afficher un document PDF dans une application web, généralement on a recourt à un plugin comme Acrobat reader. Soit le PDF est afficher dans le navigateur, soit il est afficher dans une fenêtre externe au navigateur.
Cela pose un certain nombre de problèmes, car l'application web n'a pas de prise sur le plugin. Il n'est donc pas possible de customiser l'affichage (gestion des toolbars, réglage du zoom, etc...).
D'autre part, il y a des problèmes d'affichage qui peuvent apparaitre d'un navigateur à un autre. Avec notamment la gestion du z-index qui n'est pas du tout gérer de la même manière sous Firefox, Internet Explorer et Webkit.

Heureusement, il existe une autre solution : le viewer fournit par Google Docs.
Pour l'utiliser rien de plus simple : il faut appeler une iframe avec en url le viewer et en paramètre l'url du document à afficher. Voici un exemple :

Frame f = new Frame();
f.setUrl("http://docs.google.com/viewer?url=http%3A%2F%2Flabs.google.com%2Fpapers%2Fbigtable-osdi06.pdf&embedded=true");


Cependant, il existe quelques problèmes. Le premier est de devoir exposer les fichiers PDF sur internet. Ce problème peut être résolu en utilisant une servlet sécurisé qui fournie le flux PDF. Le second problème est l'impression des documents qui nécessite d'avoir un reader installé sur le poste client. Espérons que les prochaines améliorations du viewer Google Docs permettent l'impression propre prise en charge par le navigateur.
Affaire à suivre...

dimanche 29 novembre 2009

GWT connectors

Si vous avez à gérer dans une application web, la conception de schéma, il existe une api pour GWT nommée gwt-connectors. Cette api permet de gérer facilement le dessin de schéma à partir de d'éléments HTML; C'est à dire les connexions entre les entités (points de rattachements, flèches, ...).

vendredi 27 novembre 2009

GWT 2.0 Release candidat 2


C'est fait la RC2 de GWT 2.0 vient de sortir. Google a vraiment accélérer la sorties des versions de GWT. On pourrait même croire que la version finale de GWT 2.0 sortira en décembre 2009.
Dans cette nouvelle version j'ai pu constater que la complétion automatique des éléments dans un ui-binder est fonctionnelle sauf pour les propriétés des widgets (ce qui n'était pas le cas dans le version précédente).
Hormis ce point, je n'ai pas constaté de nouveautés visibles.

Pour revenir a l'ui-binder, ce que je trouve intéressant c'est de pouvoir décrire la disposition (layout, panel) et le rendu (style CSS) d'un composant GWT sous la forme XML. Le code java associé s'en retrouve très allégé, donc plus lisible et plus maintenable. Ainsi, les applications écrites en GWT 2.0 devrait pleinement pouvoir exploiter la puissance de cette technologie.

dimanche 22 novembre 2009

Chrome OS

Google a ouvert l'accès au code source de son futur système d'exploitation : Chrome OS.
On peut donc dès maintenant télécharger le code source, le "builder" et le tester.
On peut même trouver des machines virtuelles toutes prêtes avec Chrome OS installé.
La première impression est la sensation de rapidité, sur ma machine le temps de lancement de chrome OS (affichage de l'écran de login) est de 4 secondes !

Ensuite, on se connecte avec son compte Google. Et la on se retrouve face à une interface dépouillée (en fait l'interface de Chrome avec quels icônes supplémentaires). Deux onglets se sont ouverts automatiquement : Gmail et Google Calendar. Le système d'exploitation est complètement orienté cloud computing.

Pour l'instant l'OS n'est pas finalisé et il manque encore des fonctionnalités et j'ai pu constater quelque "freeze". Par contre, en cas d'arrêt inopiné, au redémarrage on retrouve tout ces petits.
Faisons confiance à Google pour stabiliser Chrome OS, en attendant il va falloir s'armer de patience : wait and see.

add-on :

Chrome OS serait à base de Debian et des ingénieurs de Canonical travaillerait avec Google pour mettre au point Chrome OS. Voici un article détaillé sur ce sujet.

samedi 21 novembre 2009

GWT 2.0 Release candidat 1

Cette semaine la première version release candidat de GWT 2.0 a été mise à disposition par les équipes de Google.
La première chose que j'ai constaté, c'est que cette version n'est plus exploitable avec le plugin Eclipse fournit par Google. Et cela s'explique car les arguments des commandes du toolkit ont changées. Il faut donc télécharger le version 1.2rc1 du plugin.
Avec ce nouveau plugin des améliorations sont apportés. On a désormais une intégration complète du "dev mode"  dans Eclipse.

Deux wizards font leur appartient, un pour créer rapidement des RessourcesBundles et un autre pour créer un modèle de démarrage pour UIBinder.
Une assistance à la création des méthodes dans interfaces Asynchrone callback permet de gagner du temps.

Pour les points négatifs de ce plugin, je retiendrais que je n'ai pas réussi à faire fonctionner l'auto-complétion dans les méthodes natives (JSNI); Et qu'il n'y a pas encore d'auto-complétion dans les fichiers ui.xml.
Ce qu'il serait intéressant à terme ce serait d'avoir un aperçu du rendu des fichiers ui.xml, voir d'avoir assistance graphique d'édition des fichiers ui.xml.

Voici la page officiel : http://code.google.com/p/google-web-toolkit/wiki/GWT_2_0_RC

mardi 17 novembre 2009

GWT et HTML5

Les premières API pour GWT exploitant les nouvelles fonctionnalités de HTML5 commence à apparaitre. Bien entendu, il faut que le browser supporte ces fonctionnalités.
On trouve ainsi l'implémentation de la web database, du web storage et de la géolocalisation.
Je n'ai pas encore pu manipuler ces API, mais cela semble prometteur.

Pour en savoir plus, rendez-vous ici : http://code.google.com/p/gwt-mobile-webkit/

dimanche 15 novembre 2009

Soirée Google au JUG de Lyon

Lundi 23 novembre 2009, le JUG de Lyon accueillera Didier Girard qui présentera les dernières nouveautés pour GWT, Google App Engine mais aussi Wave, Android et Google Apps. Des démonstrations sont prévues, ce qui devrait bien rythmer la présentation. Cette soirée devrait être riche en échanges tant sur les nouveautés que sur les retours d'expériences. N'hésitez pas à vous inscrire sur le site du JUG de Lyon.


Pour rappel, j'avais présenté GWT lors de l'inauguration du JUG de Lyon, vous pouvez retrouver la présentation ici.



samedi 14 novembre 2009

Gestion centralisée des évènements avec GWT

Afin de gérer certains évènements de manière global dans une application écrite avec GWT, sans altérer le comportement de l'application, c'est à dire sans retoucher la gestion des évènements de composants de l'application, il existe un moyen simple et efficace : l'utilisation de l'évènement NativePreviewEvent.
Par exemple, on peut abonner l'entry point de l'application à l'évènement NativePreviewEvent, voici un exemple :











Dans la méthode onPreviewNativeEvent il est possible de déterminer le type d'évènement. On peut ainsi effectuer un traitement spécifique avant que les composants de l'application reçoivent cet évènement. Il est aussi possible de stopper la propagation de l'évènement aux composants de l'application.

mercredi 11 novembre 2009

Motorola Droïd

Je crois que j'ai trouvé mon futur téléphone : le Motorola Droïd (connu sous le nom de Milestone en Europe). Ce qui est remarquable avec ce téléphone c'est d'abord ces caractéristiques techniques : écran de 3,7 pouces, processeur cadencé à 550Mhz, 256 Mo de RAM, et un clavier physique.
Mais cela ne s'arrête pas là ! Le système d'exploitation installé n'est autre qu'Android 2.0 qui apporte tout un lot d'évolutions tels que : le support de MS Exchange, Google Maps navigation, la fonction gesture, un widget YouTube, ...
Parmi toutes ces nouveautés, il y a Google Maps navigation qui mérite que l'on s'attarde dessus. En fait, il s'agit du système de navigation GPS de Google qui apporte le guidage vocal, la recherche full text, la recherche vocale, la vue satellite, l'info traffic, ainsi que l'intégration de street view.
Bref, Google et Motorola vont frapper un grand coup cette fin d'année et cela pour toujours plus de confort d'utilisation.
Le Motorola Droïd est déjà sorti aux Etats Unis et marketing va bon train. Voici une des publicités diffusées aux Etats Unis :

lundi 9 novembre 2009

Optimiser le chargement d'une application GWT

Les applications RIA ont en commun une problématique récurrente : le temps de chargement.
En effet, dès que l'application s'étoffe en fonctionnalités, le volume à télécharger sur le poste client augmente. Cela peut devenir dramatique dans le cas de grosses applications.
Généralement pour palier à ce problème, on procède à un découpage de l'application en modules afin de réduire le temps de chargement.
Malheureusement cette technique n'est pas très flexible car le découpage est statique et complique la communication entre les modules.
GWT 2.0 introduit la notion de CodeSplitting. L'idée est de découper l'application GWT en plusieurs fragments (morceau de javascript), qui seront téléchargés à la demande. L'utilisation de ce mécanisme est très simple à mettre en oeuvre, voici un exemple :


dimanche 8 novembre 2009

Robustesse des services rpc de GWT

Par défaut, les appels rpc n'ont pas de timeout et l'appel à un service rpc est par nature asynchrone.
Alors que se passe-t-il en cas de perte de connexion réseau en court d'appel à un service rpc ?
Et bien le proxy qui est en charge de la mécanique d'appel du service rcp se met en attente. Dès que le connexion réseau est rétablie, le proxy relance la séquence d'appel !
Avec un tel mécanisme on comprend aisément que les applications écrites avec GWT sont très robuste aux pannes de réseaux. D'un point de vue de l'utilisateur, cela signifie : pas de perte de données, pas de re-saisie ou de re-validation d'un formulaire.

mardi 3 novembre 2009

gwt-log

GWT-LOG est une bibliothèque de logs pour GWT comparable à log4j.
Cette bibliothèque permet manipuler les traces côté client. Il est possible d'envoyer les traces au serveur afin de centraliser celles-ci (en utilisant soit log4j, soit Log JDK 1.4).
Il existe plusieurs types de loggers (Console, FireBug, DivPanel, GWTLogger, RemoteLogger,...), ainsi que des niveaux de trace (DEBUG, INFO, WARN, ERROR, FATAL,...).
On peut aussi définir le pattern des traces
A noté que GWT-LOG propose un fonctionnalité particulièrement intéressante : la possibilité de tracer n'importe quelle exception non trappée.

Cet outil est incontournable lorsque l'on développe avec GWT (http://code.google.com/p/gwt-log/).

dimanche 1 novembre 2009

Ubuntu 9.10 Karmic Koala

Depuis une journée je suis passé à la version 9.10 de système d'exploitation favori.
L'interface est ergonomique et visuellement on se rapproche de la philosophie mac. De version en version Ubuntu s'améliore au niveau de l'interface graphique.
Avec cette version, la gestion des modes veilles a été grandement améliorée.
L'USB 3.0 est supporté, mais je n'ai pas encore eu l'occasion de le tester.
Ubuntu One est désormais intégré, et une nouvelle Logithèque est disponible.
Ubuntu 9.10 est orienté cloud, il est possible de créer un cloud privé, en local (qui peut être transféré vers le cloud public EC2 d'Amazon). Cette dernière fonctionnalité est des plus intéressante, il va me falloir tester celle-ci.