My colleague Manfred Riem tipped me off to a new framework built on JSF, ButterFaces. This whimsical name started an amusing Twitter thread, but also, and much more importantly brought several other new JSF extensions to light. This is the sort of thing that I used to look to Kito Mann's JSF Central Frameworks Page for, but it seems that needs an update. So, in addition to ButterFaces, here are several other JSF extensions that are definitely worth a look.
BootsFaces focuses on Twitter Bootstrap 3 and jQuery UI.
Material Prime is a PrimeFaces extension that lets you build web apps that conform to Google's "Material" design language.
Generjee is a Java EE application generator that outputs JSF+JavaEE 7+CDI code. FWIW, I would be remiss if I didn't point out that there is nothing named JEE. So, I suggest this project rename itself to generee. I think that's snappier anyway.
This recent flurry of activity shows two things. First, the continuing vitality of the JSF ecosystem. By now I think we all know that the ecosystem around the technology is just as important as the technology itself. It's like this. A technology has to be "good enough" to get the job done. That's a given. Heck, it could even be excellent technology. But without an ecosystem around it, even the best technologies will not survive. Second, there is still interest and value in server side state UI frameworks. My recent work with HTTP/2 in Servlet 4 has shown me that such frameworks are very well positioned to take advantage of the optimizations in the HTTP/2 protocol, as well as other performance optimizations shown in Ilya Grigorik's excellent High Performance Browser Networking.
So, check out these new frameworks and don't be afraid to question conventional wisdom.
Day three was definitely the high point of the conference for me. As anyone who has spoken at tech conferences knows, the point in time when all of one's sessions have been given is the turning point between tempered enjoyment and pure enjoyment of the conference. I was blessed with the scheduling this year; I was all done after Wednesday. This put me in a great frame of mind to enjoy the Oracle Appreciation Event. Day three also saw the culmination of a long running project: the Web Framework Smackdown 2014 edition.
My last official obligation of the conference was my final booth duty in the Java EE both. This session closed out the JavaOne exhibition, and as such the traffic was a bit light. I was able to take a tour around the exhibition to obtain some schwag for my kids. This year it was novel to see Target with a booth. I've long been a fan (and shareholder) of Target, avoiding Wal*mart at all (unfortunately frequently too high) costs. They were recruiting. JavaOne is not a job fair, but it was still nice to see them representing Minneapolis, home of Facelets creator Jakob Hookom.
The fun kept on rolling, with the Oracle Appreciation Event. This used to be called the Customer Appreciation Event. I'm not sure why they renamed it. I would probably have given it a pass this year but for my 11 year old who is a big Macklemore fan. I'm glad I went because Macklemore was very entertaining, and Aerosmith put on a great show as well.
Update 1: added content about Greg Wilkin's Async IO session.
The first real day of the conference began with session one of two obligatory Oracle booth duty assignments. Our booth had two foci: showing off Java EE 7 using the Cargo Tracker Blueprints Application and providing insight into our plans for Java EE 8. To spice things up a bit and perhaps draw some people in, I brought along my kit-built homebrew Theremin, pictured here. In my opinion, Java EE 8 is all about solidifying the platform by increasing cohesion between the already loosely copuled parts, while making incremental improvements to the parts of the platform that relate directly to building HTML5 delivered web applications and hosting them on the cloud. I've taken the liberty of uploading David Delabassee's excellent Java EE 8 slides to slideshare (Congrats on the $118 million payout, by the way.) I always enjoy doing booth duty. I look at it like I'm a TA doing office hours: if people want to catch me at JavaOne, this is the best time for it.
Another fun aspect of JavaOne is how it all blends together. Towards the end of my booth duty session, my colleague and Servlet co-spec lead Shing Wai Chan stopped by and we put the finishing touches on our slides for "CON5898 - What Servlet 4.0 Means to You". Of all the JavaOne conference sessions and BOFs in which I played a role this year, this was to be the most technical. I've uploaded the slides to slideshare. David Delabassee tells me this one will be in the first or second group to be uploaded to Parleys. There were 162 pre-registrations for the session and I'd estimate there were about 200 in the room. The session was notable for being the only Java EE session that featured Java SE 9 technical content. After explaining the why and how of HTTP2, as well as how it may be exposed in the Servlet 4.0 API, I included some content on JEP110, the HTTP2 client for Java SE 9. Both the client and server side are still very undefined at this point, but it's good to give people an insight into where we're going.
As a general rule, I like to listen at more than I talk, but today the only session I was able to attend was Greg Wilkins's CON2236 Async IO session. The slides have already been posted at the JavaOne website. Greg is an excellent speaker, do make a point of seeing this session when it comes up on Parleys. Greg did an excellent job of explaining the gotchas of async IO programming, without any Responsive Manifesto hype. Very interestingly, he did admit that the his original objections to some of the Async Servlet API during the JSR-340 expert group discussion proved to be unfounded and that he rather liked how the API turned out in the end.
Next on the agenda was the Annual JCP Awards Party. The nominees and award winners are documented at < https://jcp.org/en/press/news/awards/2014award_nominees >. There was some real competition in the events this year, but I'm happy to announce that Heather VanCura won the JCP Member/Participant of the year award. Speaking as a fellow Oracle employee, we all owe a debt of gratitude to Heather and her colleagues for continuing to demonstrate the value of the Java Community Process within a very shareholder-value (that is, short-term value) focused company. Standards pay dividends, but they tend to be long-term rather than short term.
This year continues the tradition started last year of hosting the event at the Cityscape area on the top floor of the San Francisco Hilton. In the image at left you'll see Heather announcing the awards. You'll also notice some musical instruments. These were furnished courtesy of JFrog and played by a group fronted by Geert Bevin. The group was a pick-up band composed of members of the Java Community and went by the name of, "The NullPointers". In addition to Geert, the band included Freddy Guime of the Chicago Java Users Group, Frank Greco of the New York Java Users Group, Jim Weaver, Java Developer Advocate for Oracle, Zoran Severac, Cesar Hernandez, and Mattias Karlsson, of JFokus. I was going to sit-in on keyboard, but, as mentioned above, things blend together at JavaOne, and I had to leave the party early to present my JSF 2.3 BOF over at Moscone. Thankfully the band gave me another chance to sit in during their 2nd performance on Wednesday. It was sub-optimal to have to leave such a great event, but the community is more important than the community, in this case, so off to Moscone I went.
This was the first year since the Oracle acquisition that any part of JavaOne has been held in Moscone. This year only the Mondy night BOFs were held there, but I'm hoping it's the beginning of a trend. This being a BOF, rather than a technical session, I incorporated content from two JSF Expert Group Members, Kito Mann and Ian Hlavats. My slides are at slideshare, as well as Ian's. The basic idea for JSF 2.3 is to provide a vehicle to attend to the fit and finish of the JSF spec, addressing JSF customer issues that have accrued over the years, and give the community a vehicle to propose, drive, and implement features that they feel are important, subject to final-cut from Manfred and I. The former category will include things like multi-component validation, Ajax method invocation, and better CDI integration. The latter category may include things like Kito's proposed JSON component rendering and Ian's proposed Twitter Bootstrap integration. Again, the emphasis in the latter category is for the community to do the heavy lifting, with oversight, veto authority and integration help from Oracle.
That's not a bad first day! Booth duty, technical session, EG meeting, JCP Party, and BOF.
I estimate that this is my 15th or 16th JavaOne. I started in 1998 or 1999 and missed 2003 due to the birth of my first son. Aside from that, I haven't missed one since. I consider myself very blessed to have taken a small part in such a long and fun ride. To add blessing on top of blessing, this is the fourh JavaOne at which I have had the honor to teach a class at Java University. My good friend Oliver Szymanski and I repeated our class from last year, updated with new content. We had 16 students, and they were fully engaged, learning about JSON, WebSocket, JSF and HTML5. After the class, which ran from 09:00 - 16:00, Ollie and I took in the Oracle OpenWorld Keynote and then headed over to the GlassFish party at ThirstyBear. This event has stood the test of time, becoming the one time of the year when the leading lights of the Java Community come together to compare notes and set plans for the big week ahead. The real action starts tomorrow. My agenda includes giving my Servlet 4.0 talk with Shing-Wai Chan and my JSF 2.3 talk with Manfred Riem, Ian Hlavats and Kito Mann, in addition to the requsite booth duty from 09:30 - 12:00.
I meant to mark this anniversary when it came up, but missed doing so. It's been ten years, so what's an additional five weeks going to mean. On 28 June 2004 I announced, with my first entry on this blog, the first part of Java to be released into open-source. That initial release of the JavaServer Faces reference implementation was the first step in the journey towards opening Java that completed in April 2009 with the removal of the last binary plug from the OpenJDK. For my part, I've been blessed to work on open source technology all these years and have enjoyed many collaborations with the best software development community in the world, the Java community. I hope we all can continue to create the future of Java in the coming years.