MVC vs JSF a bit of a different perspective

Now that both JSRs are in full swing I am going to offer you all a bit of a different perspective between the 2 technologies.

As I have stated before I view them both complementary to each other!

I want to talk a bit about the actual work of doing the JSRs themselves.

As part of the JSR we deliver a reference implementation, but in reality does the work stop there? No, it surely does not. For JSF we have years of work after the completion of any of its JSRs. So one part is working on a new JSR cycle. But in reality the buck does not stop there. I am talking about the nitty gritty of maintenance!

I have now been involved in maintaining the Oracle implementation of JSF, named Mojarra since December 2011. What have I learned? Maintaining a piece of software that is backed by a specification is HARD. It by no means is boring, nor is it NOT challenging. Quite the contrary because we have to deliver fixes that stay within the confines of the specification it is at times quite challenging.

Now offset this to the work that we are currently doing with the MVC specification. Is the MVC specification HARD? Yes, it is too! Weird huh? You would think writing a specification from scratch is easy as we have a clean slate. Well, because I have been involved in maintaining Mojarra whenever I look at the features we might or might not include in Ozark (the MVC reference implementation) one of the questions I ask myself is "Is there a potential for a lot of maintenance on this feature?". E.g in Ozark we have a SPI so people can plug in new ViewEngines. And we have had external contributors delivering some ViewEngines (a BIG thanks goes out to them). The question came up whether or not we should include them in the reference implementation. Since we simply cannot support all we opted for making the contributed ViewEngines community supported extensions and keep the 2 ViewEngines officially supported by Ozark to be JSP and Facelets. Why? Well, both of those are also JSR specifications!

Anyway, when you think about the JavaEE process and you wonder why sometimes things seem to go a bit slow, think about how long this software sticks around and that it has to meet the bar of TCK testing for every patch, bug fix or enhancement.

I hope you enjoyed a look at this perspective. Note of course this is MY perspective on things ;)

Posted March 13, 2015