I was recently fortunate enough to be able to attend the JAX London conference at Hammersmith. The JAX series of conferences have been going since 2001 although this was their first event here in the UK. The event itself was held over 3 days at the Novotel London West in Hammersmith; it consisted of multiple speakers, over a series of different “tracks”, covering a variety of topics. These different tracks covered agile development, architecture and Java enterprise development. In addition, there were a set of keynote sessions. One of the nice things about the structure of the tracks was that you were not “locked into” a particular track each day but could move from session to session as different subjects caught your interest.
Unlike other conferences that Smart421 frequently attends or presents at, this was more focused on developers, architects and to a lesser extend Project Managers (mainly on the agile side) whereas previously Smart421 has focused on seminars and conferences aimed at business decision makers.
The first session I attended was entitled “the busy developers guide to iconoclasm”. An interesting title to say the least, I went into this keynote not knowing what to expect. The main thrust of Ted Neward’s talk (an excellent speaker, by the way) was that with the expanding global job market, it is no longer sufficient for a successful developer to see himself as just a “code monkey”. Many emerging markets can provide coders at a rate far less than what any Western software developer would accept as a basic salary. In order to compete against this we need to bring more to the business than just providing code (even high quality code). The iconoclasts of the title are technology practitioners who were able to challenge preconceived ideas and succeed! These are people that just went their own way or did their own thing, these are people who made a success where others said “it can’t be done!” A suitable example was the rise of Apple Corporation thanks to the massive commercial success of the Apple iPod.
The idea of questioning what we accept as everyday decisions and the default “best practices” would be raised a few more times through out the conference. As new technologies arrive, the old ways may no longer be the best way forward. Every few years the best practices have been redefined, and the correct way of doing things has changed. Some of you will be able to remember when the mainframes ruled corporate IT. Since then we have moved to Client – Server being the “best practice”. This gave way to the “n-tier” architecture, then the web-enabled AJAX solution. Now, we have the rise of the Cloud. Procedural programming was superseded by Object Orientation. Now we can add Dynamic and Functional programming to that mix. Currently every enterprise solution starts with “a client application talks to a server which talks to a relational database”. This is the “default” option selected by business, architects and software companies as this is what they know, it’s familiar and it’s “what we have always done”. With these new paradigms we should be looking at this “default” option and asking “is it correct for this problem?” Does our data fit into the relational database model? Do we need concurrency across all our servers in the cloud right now? Can we survive with making our data consistent when it matters and not instantly?
With these shifts in thinking, we need to refocus on what is actually important to our applications. Entities such as “Transfer Object” are actually an oxymoron. What you are interested in is transferring data not objects. What defines your program is the data and the operations on the data, you are not really interested in the actual objects themselves. With the transfer object problem there is a real danger of exposing your data access details from yor data tier to your UI and presentation tier.
During the Tuesday evening there was an open panel discussion covering discussion on the future of Java, the JVM and the rise in newer languages such as Scala, Clojure, Groovy, Ruby, etc. With these new dyanamic and / or functional languages gaining more and more attention over Java there is some concern as to whether or not this was showing bad signs towards the future of Java as a whole. Dynamic languages, such as Ruby and Groovy, add scripting to the JVM platform and even feature interactive prompts unlike the current statically compiled Java language. Functional languages, such as Scala and Clojure, have been gaining more and more attention and provide features of interest that are not available in Java (e.g. closures). These languages have been gaining more and more attention instead of Java. One of the important things to gain from this was that these languages are being run on top of the JVM. Rather than replace Java, these languages are able to compliment Java by sharing the JVM. Any code written in a language like Scala is converted to byte code and run on the JVM, as is Java. Rather than seeing this as the death of Java, this shows how much power is available to the Java JVM thanks to these languages; do you require an object oriented solution? there is Java. Do you need to use a functional language? Well, we have Scala and Clojure running on the JVM! Dynamic language? You can have Groovy or Python on the JVM. Pick the tool that gives you the best solution to your problem.
When does a busy developer find time to learn or investigate one of these new languages? Well, this goes back to the opening of the event, if you are going to provide more value to your employer than an off-shore developer then you will need to invest in your own career yourself and spend some of your free time investigating these new languages. Anyway, you became a software developer because you enjoy coding right? And what could be more fun than learning a new language!
It would unusual to have a gathering of IT people without a mention of the cloud these days. Various parts of the architecture track focused on the cloud and cloud architectures. Without going into detail here on the differences of IaaS, SaaS or PaaS, the focus during JAX London was on the development of cloud solutions. When moving to the cloud there are several possible approaches depending on the amount of scalability required: is it a simple matter of adding more “tin”? do you require the use of parallel computing or are you going to use an already available platform? There was also some discussion on clustering and consistency of data across servers. When moving to a cloud solution, do you require all your data to be consistent across all your servers? If you can avoid this requirement then the overhead of maintaining every server in sync can be reduced or removed. Some examples of this are sites such as Amazon. The stock catalogue only needs to be update when you place your order, when you are browsing the site does it matter if the stock level drops from 80 to 60? When you are adding to your cart do you need a real time stock level of 54 items rather than the previous cached value of 62? Make sure your data is consistent only when it matters.
I found I gained a lot of useful information and insights into current Java development. The strength and quality of the speakers chosen only added to the event. If the opportunity would present itself I would be interested in attending a future event. The next JAX London conference is scheduled for 27-29 September 2010.




Today I attended
Following a long stint at one of our largest clients, mainly working on Service Management transformation and a review of their Enterprise Architecture capability, I moved into the role of Business Design Authority at a smaller, more dynamic client in October last year.