insideIT.fr : le blog des architectes IT de SFEIR

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

jeudi 1 octobre 2009

GWT 2.0, App Engine, et WolfEngine

Depuis cet été, nous faisons régulièrement des builds de GWT, vous pouvez les retrouver sur le compte google code créé à cet effet :

http://code.google.com/p/sfeir/

Nous avons aussi écrit deux tutoriaux pour apprendre à utiliser les nouveautés de GWT :

Par contre, nous avions une erreur en utilisant Google App Engine :

@@failed com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@3225c9{/,.} javax.xml.parsers.FactoryConfigurationError: Provider

org.apache.xerces.jaxp.SAXParserFactoryImpl not found@@

Pour résoudre ce problème, il faut ajouter une jar à son projet : xercesImpl.jar Nous avons donc testé WolfEngine avec GWT 2.0, celui-ci fonctionne parfaitement, malgré des Warnings à la compilation sur les classes et méthodes dépréciées qui risquent de disparaitre à la version finale de GWT. Il est bon de tester dès maintenant ses applications pour faire les corrections adéquates et passez ensuite facilement dans la version 2.0.

De plus, le mode debug directement dans le navigateur est vraiment très pratique, on peut ainsi tester dans les navigateurs et utiliser les outils comme firebug lors du développement. Pour utiliser ce mode, il faut ajouter la jar gwt-dev-oophm.jar avant la jar gwt-(window|mac|linux).jar. Ou encore utiliser la dernière version du plug-in google et définir ajouter GWT 2.0 en bibliothèque. Une case à cocher apparait alors en dessous de l'URL dans l'onglet GWT pour sélectionner ce mode.

oophm

Il suffit ensuite de copier coller l'URL donnée dans la barre d'adresse de votre navigateur préféré. L'installation des plug-ins dans les navigateurs est expliqué sur la page affiché. Pour chrome, il faut utiliser les dernières builds (chanel dev), firefox c'est le plus simple, une extension à télécharger et installer. Et pour IE, il faut installer une dll. Amusez-vous bien !

Accélérez vos applications GWT avec Google Chrome Frame

Il y a un peu plus d'une semaine, Google annonçait la sortie de Google Chrome Frame.
Vous en avez surement déjà  beaucoup entendu parler.

Pour rappel, il s'agit d'un plugin s'intégrant à Internet Explorer et permettant de bénéficier
du moteur de rendu de Google Chrome, lui même basé sur WebKit.

Chrome Frame ne vient pas complètement remplacer le moteur de rendu d'Internet Explorer, il ne prend la main que si l'utilisateur ou la page qu'il visite le demandent explicitement.



Si vous souhaitez spécifier que votre page doit être chargée par Chrome Frame, il vous suffit de rajouter la balise suivante :

<meta http-equiv="X-UA-Compatible" content="chrome=1">


Sur le plateau de développement où je suis actuellement en mission, nous développons des applications GWT. Il s'agit d'applications de gestion dont les traitements côté client peuvent parfois être assez importants. La fluidité sous Internet Explorer n'est donc souvent pas optimale quand on la compare à celle sous Firefox ou Chrome.

Malheureusement, comme dans de nombreuses entreprises, le navigateur installé sur les postes de nos utilisateurs est Internet Explorer et faire installer un second navigateur pour optimiser la consultation de nos applications n'est pas vraiment une possibilité.

A l'annonce de la mise à disposition de ce plugin, nous avons décidé de le tester sur nos applications et les résultats se sont montrés vraiment impressionnants. Les gains en termes de rapidité d'exécution et de fluidité sont tels que l'adoption a été quasiment immédiate par le client.
Certes, tout n'est pas rose, nous avons eu quelques petites surprises d'affichage et le plugin est encore très jeune mais globalement pour un effort vraiment minime, les gains en termes de performance sont au-delà de ce que n’importe quelle optimisation de notre application aurait pu donner.


Le site officiel de Google Chrome Frame
L'annonce sur le site de GWT
Chrome Frame et Google Wave

jeudi 13 août 2009

Utiliser des CSS avec Uibinder

Pour revenir sur un billet précédent, dans lequel un widget basique était conçu avec UiBuilder, nous avions pu constater la puissance de la technologie, mais le résultat n'était pas visuellement appétissant.

Voilà qui est maintenant réparé avec l'utilisation des CSS avec UiBinder pour donner une meilleure apparence aux widgets. Ce fut aussi l'occasion d'utiliser une autre fonctionalité à venir de GWT, le ClientBundle, qui permet à l'instar de l'ImageBundle de transmettre toutes ses ressources au client à travers une seule requête HTTP.


Feuille CSS et UiBinder

mercredi 12 août 2009

Prendre de l'avance sur GWT 2.0

Google Web Toolkit étant un projet open source, il est possible de suivre l'avancement du projet au jour le jour sur le dépôt svn officiel.

On peut donc voir les fonctionnalités promises pour la version 2.0 apparaitre peu à peu, et on a récemment constaté l'apparition dans le code d'UiBinder, qui permet de construire ses interfaces GWT avec des templates en XML au lieu du code Java habituel.

C'était donc l'occasion rêvée de prendre le temps de compiler une version snapshot et de tester à travers un exemple simple l'efficacité d'UiBinder.

Le résultat de ces expérimentations peut être trouvé ici :

Télécharger GWT r5926

Un exemple d'utilisation

On retiendra que la conception d'interfaces avec cette technologie est très agréable et offre une séparation bienvenue entre le visuel et le code métier. Tout n'est pas rose cependant, puisqu'on perd entre autres les possibilités liées au code java telles que les possibilités de refactoring, mais gageons qu'une fois que l'utilisation de cette technologie se démocratisera, de nombreux outils permettront de l'utiliser pour améliorer la productivité.

mardi 26 mai 2009

Créer un événement personnalisé pour GWT 1.6

Dans une application métier on a souvent besoin de créer des composants personnalisés mais surtout que ces composants puissent envoyer un évènement personnalisé. Depuis GWT 1.6, le système d'évènements a été repensé pour être plus extensible. Voici donc un petit tutorial pour comprendre comment créer notre évènement.

image

Lire la suite...

jeudi 19 février 2009

How to : Spring Security (ex Acegi) and GWT

As you know, Spring Security (previously Acegi) provides an easy and robust solution to secure web applications. Thereby, web developers do not have to deal with all that stuff in their source code, but just have to configure Spring Security to enable authentication and authorization for their application.

As it works pretty good with 'conventional' application, things go less cool with applications like GWT ones. This is mainly due to the asynchronous calls.

Lire la suite...

mercredi 11 février 2009

Editing Google Spreadsheets rows with Google Data API and GWT

In a previous article (here), we saw how to display Google Spreadsheets content with the Google Data API Java client and CellFeed objects.

This time, the proof of concept application shown below uses ListEntry objects to fetch our worksheets content, using header names (see (1) and (2) in the following screenshot) and unique identifiers (see (3)) instead of x and y positioning system.

You will find the source code at the bottom.

The following piece of code shows how to fetch every row entries in a worksheet into a HashMap which maps each row identifier to its ListEntry object:


  1         Map<String, ListEntry> listEntries =
2 new HashMap<String, ListEntry>();
3 List<WorksheetRow> rows = new ArrayList<WorksheetRow>();
4 try
5 {
6 ListFeed feed = sService.getFeed(new URL(sheetFeedURL),
7 ListFeed.class);
8 for (ListEntry entry : feed.getEntries())
9 {
10 WorksheetRow clonedRow = new WorksheetRow();
11 clonedRow.setTitle(entry.getTitle().getPlainText());
12 clonedRow.setId(entry.getId().substring(
13 entry.getId().lastIndexOf('/') + 1));
14 listEntries.put(clonedRow.getId(), entry);
15 CustomElementCollection elementColl =
16 entry.getCustomElements();
17 WorksheetRow.CustomElement rowElement =
18 new WorksheetRow.CustomElement();
19 for (String value : elementColl.getTags())
20 {
21 rowElement.put(value,
22 elementColl.getValue(value));
23 }
24 clonedRow.setElement(rowElement);
25 rows.add(clonedRow);
26 }
27 getSession().setAttribute("listEntries", listEntries);
28 } catch (MalformedURLException e) ...

Each ListEntry object has a list of «Tag» (column names) and a HashMap which maps each tag name to its value in the current entry. Note that each column name is automatically made unique.

To update a row with a modified WorkSheetRow object, we get its associated ListEntry object and set every value of the WorkSheetRow object with the «setValueLocal» method.


  1     public void updateWorkSheetRow(WorksheetRow row) throws AuthException
2 {
3 Map<String, ListEntry> listEntries = (Map<String, ListEntry>) getSession().getAttribute("listEntries");
6 ListEntry entry = listEntries.get(row.getId());
7 for (String tag : row.getElement().keySet())
8 {
9 entry.getCustomElements().setValueLocal(tag, row.getElement().get(tag));
10 try
11 {
12 entry.update();
13 } catch (IOException e)...

Then we simply have to call the modified entry update method.

Going further

Row editing in Spreadsheets API is not limited to the ListEntry class: Indeed, there is also a ListQuery class which enables advanced selection for your Worksheets.

Listing in reverse order:

In order to list the rows in reverse order, you just have to set the «reverse» property of a ListQuery object to «true» and pass this object to the SpreadsheetService object


  1     ListQuery query = new ListQuery(listFeedUrl);
2 query.setReverse(true);
3 ListFeed feed = service.query(query, ListFeed.class);
4 for (ListEntry entry : feed.getEntries())
5 { ...

Full-text search:

For full-text search, use the «setFullTextQuery» method. Note that you can pass several strings.


  1     ListQuery query = new ListQuery(listFeedUrl);
2 query.setFullTextQuery("Florent Tue");
3 ListFeed feed = service.query(query, ListFeed.class);
4 for (ListEntry entry : feed.getEntries())
5 { ...

Structured query:

Structured queries can filter the list by a particular value to a column name. You can also set the ordering of the listing with a column name.


  1     ListQuery query = new ListQuery(listFeedUrl);
2 query.setSpreadsheetQuery("name = 'Florent'");
3 query.setOrderBy("column:name");
4 ListFeed feed = service.query(query, ListFeed.class);
5 for (ListEntry entry : feed.getEntries())
6 { ...

Useful Links:

Article related downloads:

lundi 9 février 2009

Leveraging Google Data APIs Java client library with GWT

While the Java client library for Google DATA API can’t be compiled by the GWT compiler, you can still use it in RPC Servlets with the advantage of hiding the protocol or substituting the default authentication backend with yours.

The screenshot below shows an example of a simple GWT application made up of a tree widget displaying my spreadsheets and their worksheets, and a grid widget on which appears the selected worksheet.

The source code of this demo is at the bottom.

Google Data APIs are based on Atom and RSS formats and the Atom Publishing Protocol. Since they are REST-styled, you may use them with any browser:

First we need to authenticate to the service we want to use (Google Spreadsheets in our case) with our Google account. The easiest way is to use the ClientLogin interface:

$ export TOKEN=`curl https://www.google.com/accounts/ClientLogin \
-d Email=cappelle.florent@gmail.com -d Passwd=$GDATA_PASSWORD \
-d accountType=HOSTED_OR_GOOGLE \
-d source=SFEIR-GWTSheets-1 \
-d service=wise | grep 'Auth=' | cut -d'=' -f2`

The service parameter is the Google service we want to use; in this case the «wise» value stands for the spreadsheets service. If the login is successful, the response will include a token which we will use in the next requests. Note that in some cases the service may require a CAPTCHA challenge to be done.

Then we request the list of the spreadsheets we include our token in the Authorization header:

$ curl -H "Authorization: GoogleLogin auth=$TOKEN" \
"http://spreadsheets.google.com/feeds/spreadsheets/private/full" > SpreadsheetList.xml

Querying and editing our spreadsheets this way (you would have to build PUT requests with XML) would be quite inefficient. Instead of parsing XML and building HTTP requests, you may use the Java client library which already does this for you with the SpreadsheetService class:


  1         SpreadsheetService sService;
  2         sService = new SpreadsheetService("SFEIR-GWTSheets-1");
  3         try
  4         {
  5             sService.setUserCredentials(email, password);
  6             logger.info(email + " authentication successful");
  7             getSession().setAttribute("sService", sService);
  8         } catch (AuthenticationException e)
  9         {
 10             logger.log(Level.WARNING, e.getMessage());
 11             thrownew AuthException(e.getMessage());
 12         }

The preceding piece of code is extracted from a GWT-RPC Service method:

  • The «setUserCredentials» method requests a token and stores it in the sService object, which we store in the session for the next requests.
  • If the login fails or a CAPTCHA challenge is needed, an AuthException is thrown back to the client.

Once the user is logged in, we build a feed URL with the FeedURLFactory class (see the following piece of code). Its «getSpreadsheetsFeedUrl» returns the URL for the spreadsheet list feed, which then is fetched by the SpreadsheetService object (sService).


  1         List<SpreadsheetEntry> spreadsheetEntries = null;
  2         FeedURLFactory factory = FeedURLFactory.getDefault();
  3         SpreadsheetFeed feed;
  4
  5         try
  6         {
  7             feed = service.getFeed(factory.getSpreadsheetsFeedUrl(),
  8                     SpreadsheetFeed.class);
  9             spreadsheetEntries = feed.getEntries();
 10             getSession().setAttribute("spreadsheetEntries",
 11                     spreadsheetEntries);
 12         } catch (IOException e) ...

The «getEntries» method returns a list of SpreadsheetEntry: Each of these entries contains standard Atom information (author, title, etc) and a worksheet list feed URL. However we don’t even need to build a feed URL since the «getWorksheets» method directly returns a list of WorksheetEntry.

The SpreadSheetModel is a list of Worksheet which is returned to the GWT client: the title and the dimensions of each worksheet are used by the tree and the grid widgets. The cell feed URL is also needed to fetch the content of each cell.


  1         SpreadSheetModel model = new SpreadSheetModel();
  2         try
  3         {
  4             List<WorksheetEntry> worksheetEntries =
  5                     entry.getWorksheets();
  6             for (WorksheetEntry sheet : worksheetEntries)
  7             {
  8                 model.add(new SpreadSheetModel.WorkSheet(
  9                         sheet.getTitle().getPlainText(),
 10                         sheet.getCellFeedUrl().toExternalForm(),
 11                         sheet.getRowCount(), sheet.getColCount()));
 12             }
 13         } catch (IOException e) ...

At the client side, the code that fills the tree widget is pretty simple:


 1             public void onSuccess(SpreadSheetModel model)
 2             {
 3                 TreeItem item = getItem(position);
 4                 for (SpreadSheetModel.WorkSheet sheet : model)
 5                 {
 6                     TreeItem newItem = item.addItem(sheet.getTitle());
 7                     newItem.setUserObject(sheet);
 8                 }
 9                 // remove the empty child (see populate method)
10                 item.getChild(0).remove();
11                 item.setState(true, false);
12             }

Once the user clicks on a worksheet title in the tree, the worksheet feed URL is given to a RPC method «fetchworksheetcells», which returns a list of cells: the Cell class of the Google API can’t be used as it is in the client side, so we have to copy its properties to a DTO class (WorksheetCell). «copyProperties» of the Apache Commons Beanutils library does this in a single line.


  1         List<WorksheetCell> cells = new ArrayList<WorksheetCell>();
  2         try
  3         {
  4             CellFeed feed = sService.getFeed(new URL(sheetFeedURL),
  5                     CellFeed.class);
  6             List<CellEntry> cellEntries = feed.getEntries();
  7             for (CellEntry entry : cellEntries)
  8             {
  9                 Cell cell = entry.getCell();
 10                 WorksheetCell clonedCell = new WorksheetCell();
 11                 BeanUtils.copyProperties(clonedCell, cell);
 12                 cells.add(clonedCell);
 13             }
 14         } catch (MalformedURLException e) ...

Note that worksheet feeds also have a list feed, which enables relational alike manipulation of worksheet data. Insertion, modification and deletion are very easy with the Java client, for example the modification of a cell entry needs two lines of code:


  1     cellEntry.changeInputValueLocal(newValue);
  2     cellEntry.update();

Useful Links:

Article related downloads:

vendredi 6 février 2009

GWT Time Picker widget

A l'instar du composant "Time Picker" réalisé autour de jQuery http://haineault.com/media/jquery/ui-timepickr/page/, j'ai voulu réaliser un composant aux fonctionnalités proches mais en pur GWT. Voici donc ce composant, ou plutôt l'embryon de ce composant car le développement n'est pas encore achevé et des fonctionnalités restent en suspens.

Il s'agit pour moi plus d'un POC que d'un composant encore exploitable. S'il suscite l'intérêt, je travaillerai à l'améliorer.

La démo est accessible à cette adresse :
TimePickerEntryPoint

La page du projet et le code source sont disponibles ici :
code.google.com/p/gwt-incubator-lib

Screenshot :
GWTTimePicker

jeudi 11 décembre 2008

Roadmap GWT (1.6 et après)

Encore un post intéressant sur le blog de l'équipe GWT !
Cette fois, le sujet est le futur... Au programme de GWT 1.6 (prévu pour le premier trimestre 2009) :

* New compiled file deployment structure
* Migration from Tomcat to Jetty hosted mode server
* Uniform event handlers
* DatePicker, LazyPanel migrated in from incubator
* String performance improvements
* Compiler performance improvements

Et pour l'après 1.6 :

* Developer Guided Code splitting
* Analysis of compiled code, aka Story of your compile (SOYC)
* In-browser hosted mode, aka Out-of-process Hosted Mode (OOPHM)
* UI Binder
* Client Bundle
* RPC performance improvements

What's ahead for Google Web Toolkit

mercredi 10 décembre 2008

Google Visualization API pour GWT

La famille des APIs Google pour GWT s'agrandit avec la librairie Google Visualization pour GWT. L'annonce est encore chaude sur le blog de l'équipe GWT.

Le but de l'API Google Visualization est de permettre d'accéder à de multiples sources de données structurées pour les afficher, en choisissant parmi une large sélection de visualisations.

mercredi 3 décembre 2008

Release de SmartGWT

Sanjiv, le créateur de GWT-Ext vient de sortir la première release de SmartGWT. Sanjiv a réussi à sortir un wrapping de la librairie JavaScript SmartClient en à peine 4 mois !

SmartGWT reprend les principales fonctionnalités de GWT-Ext auxquelles s'ajoutent un databinding puissant, d'avantages de widgets (notamment le composant Calendar, un Google Agenda simplifié) et de meilleures performances d'affichage. Sanjiv a su prendre du recul par rapport à sa précédente expérience, et présente une librairie mieux adaptée au développement d'applications de gestion. Allez voir les sources, vous verrez que l'utilisation des composants graphiques et des datasources se fait de façon beaucoup plus simple qu'auparavant.

Utilisation d'une grille éditable à la volée

A cela s'ajoute une très grande réactivité de l'équipe : critiqués sur leurs styles un peu old school, ils sont déjà en train d'y remédier.

Quelques indicateurs :

  • GWT-Ext incite à passer sur SmartGWT : lien
  • Evolution du nombre de posts du google group GWT-Ext : lien

vendredi 14 novembre 2008

Joda-Time pour GWT : Goda-Time

Pour les utilisateurs de GWT appréciant l'API Joda-Time, bonne nouvelle !

Goda-Time, a GWT port of Joda-Time, has just been forked from gwittir. Goda-Time is looking for volunteers.

Description du projet :

GWT port of Joda-Time

Originally found in the gwittir project. As of Nov 12th 2008 kebernet, the owner of gwittir, has been silent for 5 months. Goda-Time needed its own project anyway. I ripped Goda-Time out of the gwittir source tree and made it compile on its own.

Goda-Time still needs help with cleanup and unit tests. Goda-Time needs volunteers. Send a message to the group to indicate your interest.

En français :
Après une longue inactivité du projet Gwittir qui comprend une ébauche du port de l'API Joda-Time pour GWT, voici le projet Goda-Time qui reprend cette ébauche avec pour but de la compléter.
Ce projet est ouvert, toute participation est la bienvenue.

Goda-Time

mercredi 15 octobre 2008

Jetty or Tomcat for GWT 1.6 ?

Bruce Johnson (tech lead of the Google Web Toolkit ) :

The GWT team has started putting together a 1.6 roadmap, which we'll publish as soon as we have it nailed down. Two of the areas we want to work on for 1.6 are some improvements to hosted mode startup time and a friendlier output directory structure (something that looks more .war-like).

As part of this effort, we've all but decided to switch the hosted mode embedded HTTP server from Tomcat to Jetty. Would this break you? (And if so, how mad would you be if we did it anyway?)

Less than two months after the release of GWT 1.5, the GWT team is already asking the community for its opinion for GWT improvement for 1.6 roadmap. In this post, Bruce Johnson is asking the community if it would rather have Jetty or Tomcat as the hosted mode embedded HTTP. Unfortunately, I do not know Jetty enough to have an opinion. But if you know both Jetty and Tomcat, you should not hesitate to participate in this debate.

GWT et accessibilité

Google Web Toolkit Blog :

As described in our earlier article outlining ARIA support in GWT1.5, widgets now include basic support for W3C ARIA, an emerging set of Web standards that enable AJAX applications to work smoothly with screenreaders. But there is more to using an application than interacting with individual user interface widgets — overall usability is determined by the complete user experience.

We have improved the usability of Google Health for screenreader users by enhancing the built-in support available in GWT 1.5 via JavaScript. The resulting user experience enables users of screenreaders and self-voicing browsers to easily navigate the interface to obtain relevant auditory feedback.

Pour les personnes intéressées par la problématique d'accessibilité dans une application GWT, Google vient d’annoncer l’ajout de cette fonctionnalité dans Google Health. Pour rappel, Google Health est une application de gestion de dossiers médicaux états-uniens développée avec GWT.

mercredi 24 septembre 2008

Extension de la boîte à outil GWT

Google Web Toolkit Blog :

Following up on our earlier post, a release candidate of the Google Maps API Library for GWT is now available for download. This library provides a way to access the Google Maps API from a GWT project without having to write additional JavaScript code. The library gives you full control using the standard Maps components such as InfoWindows, Markers, MapTypes, and Geocoding. You can even use advanced features such as adding GWT widgets to the Map, creating custom overlays, custom map types, and other components.

In addition to maps, the Google API Libraries for GWT also provide libraries for Gears, Gadgets and the Google AJAX Search API. Please try out these release candidates and give us feedback, either through the issue tracker on code.google.com, or through the Google-Web-Toolkit or Google-Web-Toolkit-Contributors group.

C'est chaud bouillant !

Google vient d'annoncer la sortie de la release candidate de son API Google Maps pour GWT. Tout un programme qui ne se limite pas à l'accès des maps depuis GWT mais également à l'intégration de composants GWT dans les maps. Pour couronner le tout, cette librairie ne se limite pas seulement à Google Maps, mais vient également grignoter sur les plate-bandes de Gears, Gadgets et Google AJAX Search API.

Je me joins à l'équipe GWT pour vous inviter à tester cette librairie au plus vite !

mercredi 10 septembre 2008

GWT-Incubator et GWT 1.5

gwt_canvasL'équipe GWT vient d'annoncer la sortie d'une version de GWT-Incubator compatible avec GWT 1.5.

GWT-Incubator est l'incubateur de l'équipe GWT pour développer de nouveaux Widgets (DatePicker, ProgressBar, Tables, ...) et librairies (GWT logging suite, CSS resource).

A noter, l'apparition du Widget GWTCanvas :)

mardi 2 septembre 2008

Telecharger Google Chrome en francais

Google Chrome le navigateur 'made by Google' est disponible en téléchargement et en version française.

Vous pouvez le télécharger à l'adresse suivante http://www.google.com/chrome?hl=fr

A tester donc :

  • sa rapidité d'exécution Javascript, puisque Chrome intègre un JIT Javascipt nommé V8
  • sa stabilité, en effet chaque onglet présent sur le navigateur possède son propre espace d'exécution, du coup lorsqu'un onglet ne répond plus, il ne bloque pas la totalité du navigateur. A la fermeture d' un onglet son processus est totalement libéré
  • sa sécurité, puisque chaque processus possède sa propre 'sandbox', de plus Chrome fait appel à des listes noires de sites suspects afin d'avertir l'utilisateur et éviter le phishing ou le malware.
  • sa rapidité de rendu, car Chrome utilise le rendu du moteur web open source Webkit, les équipes du projet d'OS mobile Android utilisant déjà ce rendu
  • le mode offline via l'utilisation de Google Gears
  • mode incognito, pour surfer en anonyme sur le net

L'avenir nous dira si Google Chrome aura réussi à 'éclipser' les navigateurs tels que IE ou Firefox de nos machines.


Mesdames, Messieurs, à vos téléchargements.

GWT in the AIR Milestone 1

Logo Adobe AIR Avec la sortie de Google Chrome, Didier Girard annonce sur onGWT : "le navigateur est la plateforme".

Pourtant la plateforme n'est pas encore morte. Par exemple, le projet GWT in the AIR vient d'annoncer la sortie de sa version Milestone 1. Pour rappel, l'objectif de ce projet est de permettre le développement d'application AIR, c'est à dire d'application desktop s'exécutant dans la runtime AIR d'Adobe, à partir de code GWT.

GWT in the Air rend l'API AIR d'Adobe disponible en GWT via JSNI. Ce projet fournit également des outils facilitant le développement d'application AIR en GWT dont des outils de test. Le point faible du projet est le manque de documentation bien que le chantier soit en cours. Pour le moment, il faut se référer au showcase et à la documentation AIR d'Adobe.




English version:

With Google Chrome release, Didier Girard announces on onGWT : "the browser is the platform".

But the platform is not dead yet. For instance, GWT in the AIR just released its Milestone 1 version. A quick reminder: the aim of this project is to allow the development of AIR applications, i.e. desktop applications running on top of the Adobe AIR runtime, from GWT code.

GWT in the AIR makes the Adobe AIR API available for GWT using JSNI. This project also provides tools to ease "GWT in Adobe AIR" development includint test tools. The weakness of this project is its lack of documentation but it seems to be progressing. For the moment, the showcase and Adobe AIR documentation should be your starting points.

lundi 1 septembre 2008

Revue de presse GWT / Gears

Sortie de la version finale de GWT 1.5

Depuis la sortie de la version RC, on l'attendait avec impatience, c'est maintenant chose faite : la version finale de GWT 1.5 est sortie.
Au programme des nouveautés, on notera tout particulièrement :
  • support de Java 5
  • amélioration des performances
  • amélioration de l'intéropérabilité avec javascript
  • amélioration des widgets
  • intégration d'un premier niveau d'accessibilité
  • une meilleure documentation avec notamment un showcase
GWT 1.5 Now Available
Sortie de GWT 1.5
ShowCase GWT


Et si vous rendiez vos applications Web Offline avec Gears et GWT 1.5 ?

Octo publie une série de 3 billets sur le thème "Et si vous rendiez vos applications Web Offline ?".
La première partie présente les enjeux des applications web déconnectées, tandis que les deux autres parties expliquent, exemple de code à l'appui, comment implémenter de telles applications, et ce, en proposant deux approches possibles (passage du mode connecté au mode déconnecté explicite ou implicite).
Outre les exemple de code illustrant le propos, on appréciera la mise en exergue des problèmatiques soulevées par ce nouveau type d'application, et ce, sans fausse complaisance.
Et si vous rendiez vos applications Web Offline [Part #1]
Et si vous rendiez vos applications Web Offline [Part #2]
Et si vous rendiez vos applications Web Offline [Part #3]


Sortie de Google Gears pour Safari

Google vient de sortir Gears pour Safari. Pour l'instant, il ne s'agit que d'une version beta.
Au delà de la nouvelle, Google Gears commence à avoir un support multi-plateformes relativement intéressant, avec le support de Windows, Windows Mobile, Mac, et Linux côté OS ; et le support de Internet Explorer, Firefox et Safari côté navigateur.
Si l'on ajoute à cela le fait que Google met en avant Gears, en rendant possible l'utilisation offline de ses services phares (Docs, Reader, Mail, ...) avec Gears, il ne serait pas surprenant que d'ici peu, les décideurs des entreprises s'intéressent de près à cette technologie et à la possiblilité de rendre offline leurs applications web.
A suivre...
Google posts Gears for Safari beta


- page 1 de 2