Archive

Tag Archives: OpenJDK

Josh Long, Richard Warburton and myself were having an interesting conversation on twitter about standardisation early today, specifically related to the Java Community Process (JCP), which is the mechanism for developing standard technical specifications for Java technology. Josh asked a question that I often get asked “what does JCP standardisation offer?” (I’m paraphrasing here slightly). This is a totally fair question, and I thought it deserved a little more explanation than I could craft on Twitter.

Innovation and Standardisation; Ying and Yang

The key thing to remember about the JCP process is that it is not about innovation. Quite the opposite in fact. For a standard to be created there must have an initial requirement or problem, significant innovation creating solutions, ideally some competing ideas and implementations, plenty of evaluation and discussion, and ultimately an agreed approach on how to meet the requirement. This process takes time, and it is only at the second from final point the JCP can start creating standards. This is the biggest misunderstanding I encounter when running JSR hack days around the world, particularly with junior developers, as they think the JCP is some mystical think tank who crank out the latest and greatest innovative frameworks (I appreciate calling EJB ‘latest and greatest’ is very ironic 🙂 ).

It’s also worth mentioning at this point that the work of the JCP is now undertaken in the open (I do appreciate the fact that it didn’t used to be, but JSR-348 has made great progress to abolish the ‘behind closed door’ work). This openness provides a platform that allows anyone who wants to get involved to be able to contribute opinions and ideas to the process, and if a standard will cause problems (or is evolving in a problematic fashion) then the community can rise up and publicly duke this out with the spec leads (no Duke pun intended!)

Now on the flip side to this there exists organisations like Spring.io/Pivotal who are all about innovation, and are constantly pushing the boundaries of what a language or framework can do. Personally I love this. I have an entrepreneurial background, and I thrive on innovation and playing with the latest tech and bleeding-edge frameworks as do many of the companies I work with. The Spring framework really does excel here, and this is why I made the transition to coding in Spring back when the framework was at version 1.X and I was really struggling with building J2EE applications. However, as a consultant I appreciate that not all my clients (or the industry in general) think like this, or desire this level of innovation or disruption.

Many companies are inherently risk adverse (sometimes with good reason) and they want to ensure any investment in technology or training their people in a specific technology offers a long-term return on investment (ROI). Such organisation also often desire portability of application/code, and although the practical implementation on the Java platform of this philosophy may not have been perfect in the past, I’ve personally moved several large(ish)-scale Java EE applications across differing application servers with minimal effort. In my mind this is where standardisation can offer enormous benefits, particularly if the standardisation work is undertaken out in the open. On a related note, last year within the London Java Community (LJC) we undertook a community survey of our members, and many Java developers were in favour of standards such as those offered by the JCP (check out the result here http://londonjavacommunity.wordpress.com/2013/09/16/the-java-community-process-survey/)

Horses for Courses…

I strongly believe that innovation and standardisation are far from mutually exclusive, and in fact are very much mutually beneficial (perhaps to the level where one cannot exist without the other, but this is just my opinion). Without innovation we wouldn’t be the embracing the benefits offered by the latest incantation of Service Oriented Architecture (SOA), currently being labelled as ‘microservices’, lead by the likes of Spring Boot, Dropwizard and Ratpack in the Java space. I am very much enjoying working in this space, and the fact that I don’t have to follow any kind of specification results in some very agile, flexible and effective applications.

However, you don’t have to look too far to see the problems that an absence of standardisation can surface. Earlier in the year Facebook announced that it was attempting to create a specification for PHP, as none had existed up until this point, and this made it difficult to decide what the ‘correct’ behaviour of any particular PHP runtime should be. Recently the AngularJS team announced a new version of their framework, and suggested that there will most likely be no clear migration path between the current 1.X and new 2.X versions. This will surely stifle innovation and hamper maintenance of code within companies who have invested significant resources into version Angular JS 1.X (not to mention the problem of dealing with thousands of lines of code that are currently running in production). There are a couple of other related examples that spring to mind, but I won’t mention them as I hope readers will follow my intentions. On a related topic, I’m also very interested to see what will happen with the .NET platform now that Microsoft have open sourced the underlying code with an MIT/Apache2 licence…

Summary

So in summary, I think there is most definitely a place for innovation and standardisation, and I believe both are very useful. This is why I choose to publicly evangelise the Spring platform (and write stacks of code in Spring Boot), and at the same also support the great efforts of the JCP and the OpenJDK which help to drive the future of a standards-based Java platform.

I would be keen to hear other’s thoughts, and so please feel free to comment below 🙂

Disclaimer: I am a member of the OpenJDK Adoption group, and also contribute to the excellent work undertaken within the JCP via the London Java Community JCP committee. However, in contrast 90% of the Java code I write when consulting is currently Spring-based (specifically Spring boot of late), and I publicly evangelise the superb innovation undertaken by the Spring framework team.

I’m very excited to be part of Oracle’s JavaOne event again this year, and I can’t wait to head over to San Francisco at the end of September!

This year I’ll be presenting a solo session on “Cloud Develop’s DHARMA: Redefining done for Cloud applications” (which is an improved version of the talk at gave at Skillsmatter earlier this year), and three other joint Birds-of-a-feather (BOF) sessions on OpenJDK Adoption, the JCP Process, and “How to make your Java User Group and Java More Awesome”

You can find details of all of the talks on my JavaOne conference profile page here.

 

I'm speaking at JavaOne

I’m speaking at JavaOne – Join me!

 

Last year at JavaOne I was fortunate to be invited to talk to theserverside.com’s Cameron McKenzie about a range of topics, and you can find a link to the recordings below [please note that some of the editing in the videos is a bit wonky, as it appears that I am not always answering the question asked – I can assure that you I was answering appropriately during the actual interview itself 🙂 ]

I look forward to catching up with old friends (and making new ones) at this year’s JavaOne, and so if you are there please come and say hello!

Just another piece of shameless self promotion, but you can catch me at the Geecon conference in Krakow, Poland next week (May 14th-16th), where I’ll be joining Heather Vancura, Richard Warburton and Arun Gupta on a panel discussing the adoption of OpenJDK, the Java Community Process (JCP) and the Java Specification Request (JSR).

You can find out more about the session and the speakers here. I look forward to seeing you at Geecon!

 

I had the pleasure of being interviewed by Oracle’s Java Evangelist Stephen Chin, alongside my fellow OpenJDK associate Mani Sarkar at the awesome JavaLand conference. The main focus of the discussion was how to get involved in hacking on the OpenJDK, the Reference Implementation of the Java JDK/SDK. Check it out

 

If you want to learn more then check out the ‘Getting Started with Hacking on the OpenJDK’ or send me a tweet!

 

As promised, here is a link to the slides for the “Using Java to Build Java” BOF session that Steve Poole and I presented on Monday 23rd September at JavaOne 2013. It discusses our initial work on the “Betterrev” application, which is a new (in-progress) way to contribute to the OpenJDK codebase. Enjoy!

 

Can’t see the presentation slides? Please click here http://www.slideshare.net/dbryant_uk/javaone-2013-using-java-to-build-java-betterrev-bof

The original pitch for the presentation is included below:

“With the rise of GitHub and the recent move of the Eclipse foundation to a social coding model, more and more people are wondering why participation in OpenJDK (the open source reference implementation of Java SE) isn’t keeping up with the times. A small group of people from the LJC and Adopt OpenJDK are trying to solve this problem by building Betterrev.

Betterrev is a platform that enables social participation in Openjdk, that works by hooking up repositories into Atlassian Bitbucket – ‘Github for mercurial’. Its goal is reduce barriers to entry and participation in OpenJDK. Down the line we’re hoping to tie into a build and test platform, so that community contributors can have their patches tested on any system from a macbook air, to an IBM mainframe.”