What would you like to see on an Advanced Java Course?

Most people building systems run into the following problems again and again:

  • How to capture Business rules , in a way that both the Business users and the computer can understand.
  • How to capture the flow of actions in a system, in a way that both Business users and the computer can understand. This flow is across multiple users, and may extend over days or weeks.
  • How to deliver a system to the user (e.g. Via the Web), but to give the user a rich interface , similar to what they are used to on the desktop.
  • How to maintain and enhance older systems , now that Java has been mainstream for more than years.
  • How to take advantage of the new Features afforded by Java 5 and EJB 3, and what business problems to the solve.
  • How to build components for reuse in all environments (Web , Enterprise, Command Line and Desktop).
  • How to map information in a Java System to and from a Database (Persistent Storage or Legacy System).
  • How to deliver value to the business at every point in the project.
  • How to use the many resources and solutions already available in the Java community.

It’s to address problems like these , that I’ve been asked to put together a Advanced Java training. It’s early days yet, but I’d like to get your input as to what you’d like to see on such a course.

Java Logo
Full details of the Advanced Java course are available on the knowledgebase / Wiki. Leave your comments here.

Update: I posted a similar question on the (technical) O’Reilly Books Java blog. If you’re interested in seeing the responses , click here.

Enterprise Java Developer Wanted

A good friend of mine needs an Enterprise Java Developer, to be based in Dublin Ireland (sorry , no Teleworking). It’s a contract position and the project is high profile and sounds quite interesting. The main reason I’m passing on it as the exact location is the only place where I cannot get to easily from Drogheda! One man’s poison is another man’s meat (or something like that).

With that information (i.e. next to none at all) I’m going to ask you if you’re interested. Yes , I could put all the buzzwords (the usual Spring , Ajax, JSF, EJB , Hibernate), but to be honest I don’t know where the technology road will take this project.

One small catch. We need to weed out all the muppets that are out there. So, you need to have been blogging about Java for the last couple of months. If you’re interested , leave a comment and I’ll pass on your details.

Masters / Msc in Web 2?

This post was originally titled ‘Readers Wives Questions’

Mike from Galway writes …

I read your blog regularly so I thought you might have
some insight to a specific topic i’m currently researching in GMIT,
Galway. My current research title is “An Evaluation of the Uses of
Object-Oriented Web Application Frameworks in the Irish Services
Sector”. This basically involves examining the usages of web
technology, services and SOA in service companies, such as [name]
Insurance

I’m in the process of doing a masters myself and I still haven’t got a final title for the dissertation! There are a couple of areas that I think are worth covering:

  • Does innovation stop at the firewall? How are the raft of publically available Web2 / SOA innovations going to be adopted by business?
  • Is SOA too complicated? Why has Google moved from SOAP to a more simple (but still XML-Web based) API?
  • Is Security scaring people off? Do current security solutions (based on simple human based web interactions) cut it with the more complex machine based transactions?
  • Is it a ‘Winner Takes all’? Connecting to a web service takes time and (some) money. Will there be a series of ‘mini microsofts’ in each sector, with nobody willing to (spend money) to connect to the company in 2nd place?
  • Do Business people know (or need to know) what SOA is? What is the ‘killer application’ that we have them knocking at the IT department’s door to do an implementation.
  • Are the skills widely available to do SOA / Web Services implementations? What are the preferred technologies to use?

Anybody else have any suggestions? I’m guessing that Mike would be very interested in hearing from Irish companies currently doing an SOA implementation. Email me at PaulB [at-sign] firstpartners.net , and I’ll pass any contact details onto him. Otherwise, just leave a comment!

Java and those pesky Google APIs

Recently one or two people disagreed with what I had to say about the impact that the Google, Amazon (and other) API’s will have on Java. Considering the ratio of positive to negative comments (about 3 for and 30 violently against), I obviously need to express myself in a clearer way. The link to the original post is at the end of this article, read on before you consider flaming me.

Amazon Web Services Logo

So , deep breath , here goes.

Compare the the way you develop now , with the way you built software 10 years ago. Do you remember having to manage your own memory? Or the pain of trying to deploy your software on different machines without a JVM? Or the hassle of trying to write distributed software using Corba? Or using a text editor instead of the fine IDE’s (Eclipse, Netbeans or JDeveloper – take your choice) that we have today? Would you consider building your software without a tool like Ant or Maven?

(Shudder). Things have moved on ,and I am very glad they have. Likewise, the way we develop 10 years into the future will be very different. I don’t know what the future will look like, but here’s a simple guess.

The biggest trend today is the move from software running on your computer , to software being delivered over the web. I’m not talking about the buzzwords being thrown about regarding ‘Service Orientated Architecture’ or ‘Enterprise Service Bus’. I’m talking about simple API’s that are available for use over the web today. Like the API’s and products from Google – including their Documents and Spreadsheets, and their Authentication service.

‘Everything should be made as simple as possible, but not one bit simpler’ – Albert Einstein

‘You Ain’t Gonna Need it’ – Anon, XP Mantra

As a good Agile Developer you’d probably agree with these quotes. But what if the most simple way of doing things was not to develop in Java at all? Most people don’t build their own operating system – they use Linux, Windows or OS X instead. Most people don’t write their own Java Server – they use Tomcat, JBoss or your server of choice. The pattern is the same. A small, dedicated core of developers builds the product, and the rest of us say ‘thank you very much’ and use it to get things done.

This range of ‘off the shelf’ solutions is increasing all the time , even before the online services arrived on the scene. As a Java developer , you’ve said ‘thank you’ , downloaded the latest version and integrated it into your solution. The time you save means you deliver other cool features instead. Java is very good at this ‘download and integrate’ process – not only is it a key benefit of Object Orientated Software, but Java has the widest range of solutions available (if you don’t believe me , just check out Sourceforge).

Java can also let us build our solutions (either partly or fully) around the online API’s. Java has great networking and XML handling ability already. In time this will become as normal as the idea of using a JVM. Great – we use these API’s pretty much like we do libraries today, and we can continue developing pretty much as before, right?

Wrong.

Remember, what is the most simple way of doing things? What if the most simple way of doing things was not to use Java but to use a more simple language (like Ruby or PHP) instead? Until now there were a couple of advantages that Java had over these ‘simple’ (and that’s a compliment) languages. When using online API’s these advantages disappear, or worse, become a liability.

  • Scalability and Robustness. Enterprise Java is massively scalable (it’s one of the reasons for it’s complexity). But can even you outscale Google?
  • Security. Enterprises haven’t (yet) learned to trust the security of online applications. This trust will be hard earned over time. But already you can make the argument that you data is safer with Google / Amazon / other service provider than on your average virus-ridden home PC.
  • Language Ties. To use the Java libraries you needed a JVM somewhere in your solution. Once you had a JVM , you might as well write your own solution in Java. But when the product you are extending is hosted elsewhere, you are free to code in the (most simple) language of your choice.
  • Always on. As long as you have a connection to the web, your programs can use the API’s. Scripting languages like Ruby and Python can claim to be even more portable. Not only can they run natively in most environments, they can also be deployed via a JVM if that is your choice (under the guise of JRuby and Jython)
  • Features. Need a feature that you don’t have in your scripting language? Just borrow it from Java by running in the JVM. How can Java win a ‘features arms race’ against that?

So do we face a form of developer apartheid, where a ‘hard core’ of Java Experts develop web API’s that the rest of us use via scripts? Let me know what you think. Like the original blogpost said, it may not be the end of Java, but perhaps the end of Java as we know it.

Irish Blogger lynched on O'Reilly site for comparing Google Spreadsheets with Java

There are times when Web2, blogging , feedback from readers and the wisdom of crowds is great. And there are times that it’s extremely painful.

OnJava Logo
Like this Blogpost I wrote over on the O’Reilly site. Do Google Spreadsheets mean the end of Java?

I expected some people to disagree with me , but at least disagree for good reasons. The key point, that Web 2, it’s applications (of which Google spreadsheets is only ) and their API’s will fundamentally change the way we solve business problems using IT has been lost in the knee-jerk reaction.
Copy of the blog post here.

Back to the future with Java and Retroweaver

Java 5 (also known as Java 1.5) was a fairly major release that makes using Java a lot quicker , easier and cleaner (click here for a full list of the new features, including Meta-Data , concurrency, Generic Types, Profiling , integrated JMX Admin facilities and XML support as part of the java core.).
RetroWeaver Logo
The problem is that a lot of Application Servers still require the previous (1.4) Version. Even if you’re running on a Server (such as JBoss) that does fully support Java 5, the chances are upgrading an existing application will take a lot of time , mainly in testing effort to make sure nothing has broken. As Java matures, running on older versions will become more and more of an issue.
So, how do you get the benefit of the latest features , without losing the known stability of the previous version. One solution is Retroweaver which allows you to write in Java 5, and deploy in Java 1.4.
Thanks to Joe Walker’s Blog (Him of DWR fame) for putting me on to this one.

MSC Masters in Advanced Software Engineering

First week of masters course in software engineering.

This weeks training was on refactoring – Notes to follow , but broadly using fowlers book on refactoring (http://www.martinfowler.com). Fairly industry standard stuff , but might give you pause for thought before diving in and copying/pasting left right and centre.

On a practical side , the course uses a lot of Java / J2EE , Eclipse and Tomcat, with quite a high level expected in these (e.g. the refactoring group assignment expected these to be built on a bare machine before the refactoring proper could begin – easy enough if you’ve done it before , but not really the object of the course!!)

The course itself is on UCD’s Belfield campus , and is run for 3 weeks a year (part time) with exams in June.