Friday, June 7, 2013

Spoke on Polyglot Widgets at JAXConf 2013

Speaking at JAX 2013

This week I attended the JAXConf 2013 conference for a third year in a row. This year JAXConf was held in Santa Clara, the heart of silicon valley. The conference once again had a fantastic line up of speakers, with well recognized industry leaders speaking on a variety of current and exciting topics. Unfortunately, JAX continued this year to be one of the best kept secrets of the tech industry on the West coast, with attendance not being as strong as many would have liked.

I attended a number of useful sessions covering topics from: testing web applications, the latest javascript frameworks, and what’s new in Java EE 7. There was one particularly interesting session in which it was "Tim Berglund vs. the audience" with his seemingly radical ideas on the current state of agile development - very entertaining (and informative!)

My own session went well. I took a opportunity to talk in stealth mode about the work we are doing in RichFaces 5 during my session on "poly-framework" web applications with Java EE. While I possibly spent too much time talking about Bootstrap, I think I got the point across about the power of Less CSS and CDI, with lots of plugs for the Errai and Aerogear projects. The session was recorded, I’ll update this post with a link to the video once it’s available.

A real highlight of the trip was the chance to meet up with RichFaces community member Nick Graves and talk all-things RichFaces 5. It’s always great to meet someone who’s excited about the work we’ve been doing on RichFaces Bootstrap. And don’t worry Nick, those chart components are coming soon!

Intimate and interactive with the Java Posse

It was great to attend another Java Posse live podcast recording. It made me realize that it’s been a couple of years since I last listened to the Java Posse podcast - ever since I stopped commuting. I enjoyed listening to their conversation quite a bit, particularly "@Carl Quinn’s" discussion of home automation with the Arduino chips in the "hobby projects" portion of the podcast - definitely something I’d like to make some time to fiddle around with.

There was plenty of excitement at the OpenShift booth (great to see Red Hat sponsoring the JAX event yet again!). It was great to meet Ryan Jarvinen Steve Little and help spread some OpenShift love!

I had a fun time visiting with David Blevins (of Tom EE fame) and his wife Amelia. As always the JAX crew themselves were great to hang out with - such gracious event hosts they are!

I look forward to the opportunity to speak again at JAXConf next year. I hope they can find the right location to maximize attendance, and keep this conference going for many years!

Tuesday, March 5, 2013

Speaking on Polyglot Widgets at JAXConf 2013

JAXConf 2013

I will be returning to speak at JAXConf again this year. I’ll be speaking on the topic of Poly-framework Web applications with Java EE. The session will further explore the ideas I presented in my Polyglot Widgets blog, where I demoed a sample application written using three different web frameworks, demonstrating both a consistent look & feel, and uniform server-side programming model.

This topic will be particularly useful for those JAX attendees that have existing applications in production, yet like what they see with new web technologies and frameworks that they will learn about while attending JAXConf. Attendees may be curious how they can take advantage of the latest and greatest without re-writing already working software.

My JAXConf session will explore both client-side and server side techniques to allow disparate web frameworks to used side by side in a single application while providing users a consistent look & feel. We’ll look at sharing state between web frameworks, responding to server-side events with asynchronous http communication, and framework interop within a single page.

So if you are in the area from June 3-5 (or even if you are not!), come and check out my session at JAXConf. JAXConf has put together yet another roster of fantastic speakers and an excellent selection of topics. I look forward to attending many of the sessions myself, and am sure I will learn a lot!

Thursday, November 29, 2012

Polyglot Widgets

JBoss Developer Framework

The JBoss JDF project shows Java EE developers how to build state-of-the-art applications using the JBoss implementations of the Java EE stack. Specifically, the JDF View Frameworks section identifies a number of alternative approaches one can take when developing the view layer of your application. We in the RichFaces project have been working towards better supporting this effort by redesigning our JSF component architecture to allow the javascript part of our components (what we call our “widgets”) to be used independent of JSF, either in a standalone manner or coupled with another web framework.

By isolating the client-behaviour into widgets, we are able to achieve both a faster turnaround on new JSF component development, while at the same time enabling users to achieve a uniform look and feel in their heterogeneous application environments. To demonstrate the impact of this, I’ve prepared a demo application that demonstrates using our standalone javascript widgets in JSF with RichFaces, GWT with Errai, and a plain HTML 5 page with Aerogear.

Polyglot widgets demo


The polyglot-widgets demo takes the RichFaces Sandbox pickList component and builds a GWT and plain HTML5 application using the standalone javascript pickList widget.

Some key points of the demo to call out:

Consistent L&F

Imagine writing “polyglot” web applications with both a consistent Look & Feel, and access to the rich set of enterprise-grade widgets that you’ve come to expect from the RichFaces project. In the demo, the same RichFaces Sandbox pickList widget is used in a JSF, GWT and HTML 5 application. The widget and the demo pages themselves use the Bootstrap project for styling, which is what enables us to achieve a consistent L&F across the pages backed by different web technologies. This common L&F is taken one step further to deliver a consistent user experience by using the same javascript widget implementation across all the demo pages.

CDI Programming model

In the demo, we use the pickList component to make a selection on one of the demo pages, then click the submit button. On navigation to one of the other demo pages, you’ll notice the state persisted. This demonstrates how we can leverage CDI to provide a common programming model across all our web frameworks.

Integrated Ajax Push

Open each page of the demo in a separate window to witness selection updates synchronizing the pages in real time. Taking advantage of RichFaces push, the Errai CDI bus, and HTML 5 Server-Sent-Events (via the Atmosphere project) in each of the respective frameworks provides incredible power in keeping our “polyglot” web-apps in a coherent state.


I created a screencast of the demo, to make it easier to see the above points in action. Watch the screencast below, then head off to play with the demo yourself. Even better, fork the demo on github, and see what cool things you can do with it.

Next Steps…

I put this demo together as a proof-of-concept to help me illustrate what I mean when I talk about “standalone widgets” and polyglot/poly-framework applications. The RichFaces team will ramp up development on these new standalone widgets as we wrap up our RichFaces 4.3 effort and shift gears into RichFaces 5. So stay tuned for further development in this area!