What is RIA? “Old body with a new face” — just a new client slammed on top of the same old applications server. The obligatory Wikipedia quote is “too vague” :) The spectrum of RIA apparently includes “Internet-enabled client”, “Smart client” and “Web 2.0″.
Turns out the “Smart client” refers to the JavaFX ability to be dragged from the applet in the browser to become a desktop app. AFAIK this wasn’t even demoed for JavaFX specially, but for 1.6u10 applets, so this one misses the target for me. And as for the JavaFX “unified deployment model” we’ll see that when it actually gets there. Until then I’ll remain skeptical.
The keynote will present same case study for AIR, JavaFX, Flex and GWT. A Silverlight demos exists, but isn’t included in the talk.
Going through the data exchange formats: HTML, XML, JSON and binary. Caucho Hessian gets a mention as the binary protocol that works over HTTP. Also Adobe AMF. Apparently Flamingo exposes existing services via binary protocol in the Adobe space. Doesn’t binary have 4/3 overhead on top of HTTP? Is it really worth it?
Now going through communication strategies: RPC, WS-*, REST and JMS. In Servlets 2.0 you can use JAX-RS to expose your POJOs via REST (wow! doesn’t RoR do that since, like, forever?). Spring folks have their own solution, seems like they now ignore the Sun folks altogether. JMS isn’t really a comm protocol, so I don’t get how it fits here. Apparently just to mention that Adobe BlazeDS supports JMS. Everyone else would use Comet.
The case study is (of course!) Parlleys.com.
The first version was done in AJAX. Problems with that included:
- Back-button support. People do get used to its quirks nowadays.
- Cross platform/browser support. JavaScript on Internet Explorer sucks, especially on Macs.
- Securing AJAX. Someone voted 100 stars on one of the talks by calling the server-side directly. This isn’t really a problem with AJAX, man :) That will come with any server-side application.
The next variant is still AJAX, but using GWT. Lots of sliding in and sliding out, prettier interface. The GWT experience:
- It’s Java! Woohoo!
- Back button works. Might have mentioned that you have to define the back actions pretty much manually. Also problems on Internet Explorer.
- Works on different browsers out-of-the-box. As long as you don’t need something arcane :)
- Sucks: GWT sites not indexed by Google. Supposedly fixed in GWT 1.5.
Flex is next. Demo looks identical to GWT. The big difference is that Flash can go full screen (erm, you can go full screen with a browser as well, what’s up with that?). As soon as the AIR application is launched the browser app will change to accommodate the extra desktop settings. You can download the talks for playing offline and so on. Pretty fancy.
- Flex/AIR just works
- Lot’s of different animations available
- Lots of UI components
- Bookmark and history support
- Good Eclipse support
- Bad: Hard to do unit tests
- Bad: Different deployment strategies for desktop and web.
- Bad: Not Google friendly. Hacks possible, but not too easy.
- Bad: No socket listeners so couldn’t implement P2P.
Stephan obviously likes Adobe products a lot and it feels in the talk. E.g. one could likely develop a quite similar offline support for downloading and playing talks on top of GWT with Google Gears, but that’s not mentioned in the talk. However I’m yet to see the JavaFX demo.
The JavaFX demo looks slightly cooler. JavaFX will have native support for Flash video codec, good stuff. Strongly typed and Java-like. Swing, Java2D and Java3D APIs available. Animation and effect library on top of that. Would be much cooler if all this stuff wouldn’t be just one paper… No mentions of the offline functionality as well. Obviously possible, but would be interesting to know how transition from applet to desktop and from online to offline works. Don’t think that anyone outside Sun knows that yet :)
In the end a very cool demo of the actual talk publishing using Parleys. You can add both the video and slides and likely audio and arrange them on a usual timeline. Can’t do that with a web client :)