I’ve been using Java for many years now, and I remember why I switched to it – I hated C++, and thought it was not a language well suited to enable humans to program. I have no problems with Assembly or C, but the strange kludge of a language that is C++… is just hard to stomach. Anyway, long since I discovered the joys of Java, I’ve been complaining about it’s lack of desktop integration (which is currently being addressed), and it’s lack of hardware graphics acceleration (which is currently being addressed) and it’s lack of a browser component (there are lots that you can buy), and it’s lack of a proper editor toolkit (again there are lots to buy now)… So my point is, I’d been complaining about it, since I need it to build apps that are graphically intensive, and crunch lots of data, and consume lots of web services. I was really pleased with Java 5 and 6, since they’ve introduced so many wonderful things in the language that I can’t live without already (enums, generics, inline class declaration, etc).
So I was happy using Java, but I wondered if there was something better out there, since I was a little frustrated with the lack of support for lots of things that I needed Java to do (I started working on ScreamingToaster platform in Dec 2006). Anyway, there are still lots of things that are missing – like media playback and capture out of the box, but things are looking up… I’d read lots of things online about PHP and Ruby and all that, so I always wondered if what people were saying is true – about Java being stuck with the innovators dilemma and whatnot…
So not to take anyone’s word for it, I learned PHP last night, since I had to add some functionality to WordPress, and it was an interesting experience. It’s funny, humans get used to things very quickly and become quite comfortable and forget that they are comfortable . I have to say, PHP was very easy to learn, but I was a bit confused by it’s syntax, since there are so many ways of doing the same thing. It’s not strongly typed, which I don’t like, but I wasn’t really doing anything complicated in the language. One neat feature was that it was easy to see my changes come to life instantly… just a browser refresh and I could see my changes. These are some of the positive things that I experienced.
Now, for the negative. I couldn’t get used to the fact that there wasn’t a compiler to check my syntax, and sadly I didn’t have any super IDE for PHP, so I was stuck with Dreamweaver CS3 and other tools that do syntax highlighting, but don’t warn me (like IntelliJ IDEA does). There was no refactoring support, again due to the lack of tools. But I ended up making tons of syntactical mistakes since there was no compiler. And the biggest issue I had was with utter lack of documentation – I have been so spoiled to the core with Java and Javadocs, and great documentation that comes with lots of software from Sun, Apache, etc. that I was lost… the idea of having to pull up a browser to do google searches for APIs just slowed my progress to a crawl.
So there you go. I still love Java. I love the fact that Javadocs exist! I love the fact that Java makes it easy for sane people to write decent software, relatively easily. I love the fact that I have tons of pro tools that make development a breeze (IntelliJ IDEA and JFormDesigner amongst many others). I love that I have ant. And I love that compiler.
I can’t see myself doing anything overly complicated in PHP. I like classes and packages, and JAR files, and dependency analysis, and all that stuff that comes with Java. Sure, Java on the desktop has a ways to go, but it’s getting there! I think that Java 6 is the best Java there’s ever been, and I’ve been coding in Java since JDK 1.0 beta! .
I don’t mean to say that scripting languages don’t have their place. They do. But when stupid people insinuate that Java is coming to an end, because of the "insert popular scripting language of the day", then it makes me laugh. There are things you can do in Java, relatively easily, that are going to be much much much tougher in these scripting languages. And Java is an easy and clean enough language. It’s best not to confuse the API or toolkit someone is using with the language, platform, and OS! I’ve seen that on blogs so often. Someone’s VM craps out and it’s Microsoft’s fault. Or they don’t like Websphere EJB stuff and now Java sucks! There are simple frameworks and not so simple frameworks, it’s not Java’s fault that someone is frustrated with their crap framework.
Java rocks. It’s one of the best languages out there, and it’s getting better, and more powerful. Java will be able to run all kinds of scripting languages soon, with Java7, so that will be interesting to see interpreted stuff running in a VM. Java is now open source, which is awesome! There is lots of work underway to make Java a viable platform for RIAs and rich desktop apps… the new Update N Java6 VM supports DirectX, and has a single threaded rendering pipeline, which is very performant! There’s also an OpenGL pipeline built with the same architecture.
There are lots of areas for improvement, like the JRE installation user experience and browser integration – but they are all being addressed. And there are efforts underway to have basic media playback using native players and codecs with Java7. And deep down inside, I wish Java had pre-emptive multithreading and not cooperative. And I wish SwingX was Swing.
Having said all this, I think that this article is crap – The Innovator’s Dilemma: It’s Happening to Java. I read it years ago, and it’s always rubbed me the wrong way. Java is stronger now than it’s ever been. And to say that scripting languages will replace it is laughable. This is as ludicrous as companies claiming their favorite portal web application to be a "platform". The word "platform" seems to be meaningless. Any web service constitutes a platform these days… but that’s another rant for another day.
|« SwingLabs SwingX 0.9.1 released||Review of 7 Ergonomic Keyboards »|