1 post tagged “melbourne”
Yesterday morning I went to see Martin Fowler give an address about his thoughts on the future of Software Development in the 21st Century.
It was amusing to discover that he didn't come up with the title of the
talk himself, but that the title was dreamt up by some Victorian
Government department, and Martin Fowler basically was requested to
fill the gap on this subject. Nevertheless, it proved to be a useful
topic because it attracted a broad audience of managers, business
leaders and of course software developers.
I was surprised that he was such a good public speaker, running up and down the isles to answer questions from the audience and also throwing in a respectable amount of humour. The event was sponsored by Enterprise Java Victoria and so obviously the event was focused on Java and on Martin's perspectives of where Java had come from, where it sits now, and where it's future lies in the software development industry. There was so much content in Martin's talk that it will be hard to summarise everything so I will concentrate on what I found important or most relevant.
A key aspect of his talk was the notion of domain specific languages and about how that notion will become more prevalent across the industry. We already have domain specific languages such as SQL. However there is a move to allow developers to easily leverage specific languages to solve specific problems where that language is more appropriate. Java itself is reportedly moving towards this capability by providing support languages like Javascript and possibly even VB.Net! With the emergence of AJAX you can see why such a facility may be useful, having Javascript on the client call through to Javascript on the server. Obviously there is always a danger that some projects or developers will abuse these new tools, and do things that were outside the original intention, however that danger exists in any project where technological understanding low. There's a online video by Martin Fowler specifically about this subject. Also check out the entry on wikipedia.
Martin also talked about domain specific applications. He talked about how applications will start to become very specific in their nature, they will seek to solve a specific problem and concentrate only on solving that problem domain. This is a particular feature of many open source projects, mainly because they are supported by a small number of developers in their spare time, and they just don't have the resources to build huge all encompassing applications. This I think is a good thing because they will generally be very good at what they do and will tend to be less buggy due to their inherent reduced complexity.
During the talk he also introduced a term that I hadn't heard used before in relation to software development. That of an ecosystem. The notion of the Java platform as an ecosystem signifies for me the evolution that the language has gone through. It seems that an evolution of language through to platform through to ecosystem is useful way to describe the evolution of Java. I first started using Java in 2002, at that time trying to explain to people the difference between Java as a programming language and Java as a platform was a daunting task. With amazing class libraries that come with both the standard and enterprise editions of java, add to the the capabilities to support other domain specific languages, and it starts to become clear how the notion of Java as an ecosystem come becoming more and more appropriate. The java platform really is becoming a vast collection of interdependent entities that all relate and support each other in a myriad of complex yet specialised relationships.
Martin also discussed the negative aspects of Java, in that some more accomplished developers will argue that it makes a programmers life too easy. With it's memory management and non-support of closures it basically removes a lot of power that you would otherwise have. However I also think this is a key benefit of Java, it makes it more accessible, whilst reducing the risk of fundamental software bugs related to poor memory management. Memory management to me is a complete black box and I would have no idea where to start so Java for me is a very useful tool for software development. I just don't see why I should have to bother with all that stuff when Java seems to be able to handle it well most of the time.
Another key point of Martin's talk was the importance of the contribution of Open Source software over the last 10 or so years. The emergence of frameworks such as Spring and Hibernate. Martin expressed his opinion that these frameworks have been instrumental in dragging Java out of the quagmire that was EJB. Spring and Hibernate have drastically simplified the persistence and management and use of objects within an application, something that EJB only served to make drastically complicated. They have also reduced the significant reliance on having "enterprise" level EJB containers and seriously expensive application servers such IBMs Websphere. The barriers to entry for EJB and EJB containers were so huge that many developers just found it too hard to learn the complexities of development for these technologies. Spring and Hibernate have made it possible for developers to create J2EE applications using lightweight containers such as Tomcat and Resin sitting on top of databases like MySQL. This can only be a good thing for Java because it makes it more accessible.
The discussion on open source also inevitably led onto how this effects the vendor propriety languages and platforms like Microsoft .Net. I feel that with the huge contribution from the open source community, it's going to be seriously difficult for .Net to keep up the pace. Where are the significant and innovative contributions to software development that have been built in .Net? Sure there's nHibernate and Spring.NET, but they're just offshoots of the successful Java implementations. With Java becoming open sourced itself in late 2006, I just can't see a future for .Net when Java is leading this innovation. Java has a huge advantage in being one or two years ahead with such amazingly useful frameworks like Spring. JUnit and test driven development is yet another example of this. The realisation of test driven development as a key component of application development is becoming the mainstream now, and this will be a significant part of development in the coming years.
Overall, Martin's talk was very inspirational and informative and I hope to get the chance to hear him speak again in the future. It's nice to see important figures like this coming out to Australia's "back waters" and it's great to see the numbers of people that were interested in hearing him speak.