Java is the new assembler - this is something I find myself saying from time to time. By assembler, I mean assembly language, something just slightly more advanced than programming by writing machine code directly, but still a tedious and time-consuming way to get a result (albeit a result with potentially high computational efficiency).
I first said this to shake up a few Java developers in their self-satisfaction about Java being the best tool for the job, almost regardless of what the job is. Java is not a bad tool in many ways, but I still see Java developers spending far too much time developing far too little. Even though Java makes more productive use of a developer's time than its predecessors did (machine code, assembly language, C, C++), it's still not good enough. We still have a long way to go.
I spent some years as a multimedia developer, and I was impressed by Macromedia's tools, particularly Director (but also Authorware and Flash). With Director, people whose skills were more artistic than analytical could put together completely usable multimedia applications. This was because it had a well thought out visual interface, rather than being purely text based (like, you know, Java is). Sometimes you needed a hardcore developer to do some back-end plumbing (like connecting the application up to a database), but Director made efficient use not only of an individual developer's time, but also of developers and staff generally.
I remember a recent presentation (but can't remember where it was) which pointed out that only the top few percent of people have the skills to be hardcore software developers, yet software tools remain focussed on giving more features to those few percent, rather than on trying to increase the number of people who can particpate in the software development process. It can be really hard to get good staff at the best of time, so I'm very much in favour of broadening the spectrum of who can make worthwhile contributions to the development of software. It will make things cheaper, and give more career options to more people. Hardly a bad result for society, you'd have to agree.
Java isn't it. Java isn't that tool which opens up the software development world to at least the top 10%, maybe the top 20%. Java is a step along the way, perhaps, although anything based on a purely textual format is always going to be elitist, just as Emacs is elitist (although loved and cherished by some of those elite). So let's not be complacent about where we are. There's a lot of work to do to make software cheaper to build without reducing quality. Part of that cost reduction is around widening the range of people who can join in. The top few percent will always have to be responsible for the most difficult parts of the problems, but right now, a lot of them are just burning up their time and energy doing simple things with unnecessarily elitist tools.
Java is still the new assembler.