Beyond Java. What happened next

A few years ago (2005), Bruce Tate wrote ‘Beyond Java’ where he tried to glimpse into the future and guess at the next big thing. He used criteria including language features, community, marketing and killer apps to help with his analysis.

In some ways the book is a thinly disguised introduction to Ruby for Java developers. However he correctly predicted that Ruby, and particularly Rails would gain significant traction. He also identified that static typing, which was such a help for so many many years, wasn’t always appropriate and in some ways was starting to hold us back. Any pretenders to Java’s throne would likely incorporate dynamic typing.

Just as interesting to me are the areas where history took an unexpected turn. Here are a few of the developments since the book came out.
  • Python reinvented itself with Python 3
  • Objective C is now one of the biggest languages on the back of the iPhone and iPad.
  • Javascript is now recognised as a first class programming language, and may even have its killer app in the form of Node.js
  • C# started to diverge from Java, adding functional elements including lambda’s and features such as the var keyword which start to blur the distinction between static and dynamic typing
In addition there is plenty of buzz around many languages that either didn’t exist then or have started to go mainstream… examples include Lua, Scala, Clojure, Erlang and F#.
Also interesting is how, even with all thats new, the Tiobe programming index still shows Java in number 2 position, while Ruby and Python are at 11 and 9 respectively (as of Nov 2012).

The big challenge for people like me is what to focus on. The only thing thats clear to me is that the future is polyglot programming, and that other than that, I can’t predict it.

I think that beyond the static languages, the big three to have familiarity with today are Javascript, Python and Ruby. I love Pythons simplicity and Ruby’s flexibility. I’m still coming to grips with Javascript, there’s plenty of power and plenty of pitfalls, though maybe more on that in a future post.
Beyond that, an excellent resource to explore other languages is (funnily enough) another book by Mr Tate, called ‘Seven Languages in Seven weeks’. He covers Ruby (of course), as well as Io, Prolog, Scala, Erlang, Clojure and Haskell.

None of which solves the problem of where to focus. I need more hours in the day…


This blog is an attempt to formulate some of my thoughts on Software and occasionally other topics. For years I read other other peoples blogs without feeling the need to contribute. Eventually though, something snapped – in a world of millions of nations of one, there is room for one more.

To get going though, it’s interesting to me how literally some people take blog posts. I think the limitations of the medium, along with the fact that it takes a lot of skill to communicate your ideas effectively mean it’s often easier to give simple rules than to attempt to describe all possible nuances.

So since I’m not a professional author, and don’t have the time or skill to clarify every nuance, here’s my get-out clause… Whenever you see ‘must’, ‘always’ or ‘never’, please mentally add the caveat ‘except when there’s a good reason to do otherwise’. 🙂