There is a lot of well-founded buzz around HTML5 but I assert that nearly all of it stems from how HTML5 enables the UI authoring experience to focus entirely on the browser, instead of on server-side processing that delivers content to the browser. For years, I've been making the case that building a web application is really building a distributed application, and therefore the art is finding the best allocation of processing tasks (UI, persistence, business logic, security, etc.) to processing nodes (smartphoe, tablet, laptop, desktop, browser, server, etc). The emergence of HTML5 as a viable deployment platform changes how we answer the question of "where does the User Interface processing task go?" My goal with this blog entry is to shed some light on what this means for JSF.

Where are we now and how did we get here?

Ever since the addition of the <form> element to HTML+ in 1993developers have been trying to force the pace of innovation delivered by browser vendors in order to deliver more and more compelling applications while lowering development/deployment/maintenance costs. Two factors have historically influenced this trend: ubiquity and capability. As soon as enough people had reasonably capable browsers, server side frameworks, such as JSF stepped in to give developers what they'd been wanting since 1993: "yeah, this browser stuff is nice, but what if I want to make my own darn tags? How can I do that?"

Graph of browser capability vs. browser ubiquity

Server side frameworks provide a browser-like authoring experience, but enable the use of components not present in the least-common-denominator browser. This is achieved through server side processing using JavaScript, images, and other browser primitives. In addition to this "capability extension" feature, server side frameworks also let developers keep a tighter hold on security, provide better I18N, and lower maintenance costs.

Now that HTML5 is reasonably ubiquitous, the need for the "capability extension" feature is not as pressing. For example the power of the HTML5 Canvas object, combined with the full expressiveness of JavaScript, lets you do a whole lot more directly on the browser. Even so, I think there is still a place for server side frameworks, not least for the cases of security and maintainence costs. I think the UI task today is really like finding the right value for this slider. Indeed most apps today need to address a huge variety of client device types, and the flexibility afforded by a server side framework is an asset in meeting that goal. For these and other reasons too deep for a quick blog post, I think the usefulness of server side UI frameworks has not yet reached its end.

How does JSF 2.2 fit in?

So where does that leave JSF 2.2? As you may know, HTML 5 is a huge specification and it addresses many different categories of content. We are still very early in the development of JSF 2.2 but I can state we plan to address elements in the following content categories.

Metadata

JSF applications already have large amounts of metadata available to them. We need to find the best way to allow that data to naturally express itself via the corresponding capability in HTML5.

Sectioningand Heading

Just as the lightweight ontology of section values in HTML5 was obtained by searching google for how people were using their div tags, the same idea can be applied to how people are using their facelet templates.

Form associated elements

Form based applications are the reason for must web applications and it is this category that most ofthe HTML5 related work in JSF 2.2 will happen. For example, HTML5 now has native slider and calendar controls, which only used to be implemented using server side processing and delivering JavaScript and images.

Current Status

We're still working on delivering a revision of the spec that ties up all the loose ends left over from JSF 2.1 such as<f:viewAction />, Cross Site Request Forgery protection, and File uploads. Once the Early Draft Release milestone has been reached, we can start to think more seriously about what to do with HTML5.

Technorati Tags: edburns

3 Comments

  • bkummel Explorer

     Hi Ed,

    That's a nice and short overview. It's good to see the JSF spec evolving really fast now!

    Best regards,

    Bart Kummel

    //
    • arjan_t Newbie

       [quote]We are still very early in the development of JSF 2.2 [...] [/quote]

      Does this mean anything for the planning as put in JSR 344? According to the anticipated schedule mentioned there, the proposed final draft would be in Q4 2011. Is that still the goal?

      //
      • arjan_t Newbie

         With respect to the current status, I've created an overview of the great work you guys have been doing the last couple of months here: What's new in JSF 2.2?

        It's just a summary of the jira issues that have been worked on for JSF 2.2 and for which actual commits have been done in the trunk. (I hope it's okay to post that link here, if it isn't please remove it)

        //