RIA front-ends: Flex, GWT integration in Nuxeo


Published on

RIA (Rich Internet Applications), provide new and richer user experience for web applications. Several approaches are proposed by various vendors and open source projects, and Nuxeo is mostly agnostic in this respect, by providing appropriate data to RIA front-ends using simple protocols such as JSON. This talk will present how two RIA technologies have been recently used on Nuxeo projects, Adobe’s Flex and Google’s GWT (Google Web Toolkit).

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

RIA front-ends: Flex, GWT integration in Nuxeo

  1. Nuxeo 5.2 RIA technologies and Nuxeo Thierry Delprat |
  2. RIA and Nuxeo ● Already several client-side technologies ● browser based: JSF/Seam and WebEngine ● RCP based: Apogee ● Why adding more? ● sometimes look&feel is a major issue ● rich and reactive application in a browser ● for rich media management ● to open Nuxeo platform to new developers ● because we wanted to play :)
  3. Adding Flex and GWT Dedicated RIA GWT Flex / Air WebEngine General public WCM / WebSites Nuxeo Platform Application Eclipse RCP JSF NXShell Business Hi-productivity Application contribution Administration
  4. Nuxeo 5.2 Google Web Toolkit Thierry Delprat |
  5. Why GWT ? ● To address browser based RIA ● rich and reactive application without deployment ● Because GWT looks cool ● nice development model ● nice widget libs ● Because we are mainly Java developers ● no JS developers ● no (real) flex developers
  6. GWT strengths ● Very pleasant development model ● almost no JavaScript to write ● hosted mode for real debugging ● efficient UI development model ● Nice widgets libs ● Handles transparently multi-browser support ● Works well!
  7. GWT weaknesses ● Works in a sandbox ● needs to stay in the sandbox ● No real modularity system ● everything must be resolved at compile time ● No state management ● all the states in handled in the JS VM ● browser navigation can kill the app
  8. GWT use cases in Nuxeo EP ● Annotea client ● a lot of UI is handled in JS client side ● Nuxeo Annotea server expose a native REST API ● client needs to manipulate HTML DOM ● Tiling / Annotation client ● GWT UI toolkit make it easy to have a rich UI ● Nuxeo Tiling service exposes a native REST API
  9. Annotations/Tiling with GWT
  10. GWT and WebEngine ● WebEngine and GWT play well together ● WebEngine provides navigation and pluggability ● WebEngine provides REST APIs ● GWT provides the widget model ● Use cases ● small dedicated UI hosted into a WebEngine page – users management – specific content browser – ...
  11. Easy RIA with GWT and WebEngine ● nuxeo-gwt-core make GWT pluggable in Nuxeo ● provide Extension-points to GWT ● extensions are resolved/contributed at build time ● helpers for JSON and asynchronous requests ● nuxeo-gwt-ui framework for a multi-tabbed editor for Nuxeo Documents ● Layout / Views management ● Context management
  12. Nuxeo 5.2 AMF/Flex connector Thierry Delprat |
  13. Why a flex connector ? Flex is well suited for some applications Rich media applications (ex: eLearning) Applications where look & feel is capital (ex : marketing for end users)
  14. Why a Flex connector ? ● Because Flex 3 has become a real platform ● Browser techno: Flex ● Desktop techno: Air ● Developer tools: based on Eclipse ● Remoting framework : BlazeDS / AMF ● Because there are a lot of Flex developers
  15. Nuxeo and Flex, how ? ● Access Nuxeo ECM service from a Flex client ● via HTTP with simple REST API – reuse existing REST services – no Flex connector needed ● via AMF – native binary marshalling (fast and efficient) – requires a connector to expose Nuxeo Services via AMF ● let Flex and Air clients ● fetch / push documents from Nuxeo ● access all Nuxeo services
  16. Nuxeo Flex connector ● AMF provider choice ● Exadel/Flamingo AMF connector (used in alpha) – easy to use – bound to Seam framework – no complete dataservice API – based on GraniteDS code ● GraniteDS – complete data service API – flexible and pluggable
  17. Nuxeo DS – server side connector ● Based on GraniteDS ● Expose Seam components via AMF remoting ● Expose Runtime service via AMF remoting ● Pluggable marshalling ● via NXRuntime Extension points ● via GraniteDS pluggable architecture ● Use Seam for state mngt of stateful services
  18. Nuxeo DS – client side ● AS client side library ● encapsulates Authentication ● encapsulates DocumentModel marshalling ● Several samples code provided ● demonstrate basic usage of Nuxeo API via AMF ● Build system integrated with maven
  19. Nuxeo Air Explorer