Thursday, 3 August 2006
One Java coder's view of the world
The last episode of the Java Posse included a call for listeners' opinions of the new EJB3 spec. I got a bit carried away, going on to include my opinions on pretty much everything Java-related, and so I have decided to spin that off into an entry here to share with the world.
EJB3 - LOVE it. Both for persistence and the new session beans. Changed my home server from Geronimo to JBoss just because I was tired of waiting for it to come out on Geronimo (and also because now that RedHat owns JBoss a lot of my former qualms about the company have gone away). I also use the Glassfish that comes with the Netbeans 5.5 beta for development. The new EJB3 book from O'Reilly is also the best O'Reilly book I've read, although obviously that's very subjective.
But all is not well, because I think it may be 5 years before I get to use this (or JSF or Java 5 generally) at work. At any rate it's not a possibilty now. What are the top 3 J2EE environments in market share? I'm not positive but I think it's IBM, Bea, and Oracle. And IIRC none of them support EE 5 yet--and IBM seems downright glacial about bringing it to WebSphere. Add to that that companies in the region I work in are very slow to adopt new versions. For the project I'm doing now I have to use Struts 1.1 for J2EE 1.3 :-(
JSF - Creator is cool but I haven't learned enough of the plumbing yet. I think my next project will use Seam and I hope to get better at it. Clearly JSF is the way of the future.
DWR - Using this for my current project and it is gorgeous (especially next to Struts 1.1). It's in many ways the opposite of GWT--you can do everything in JavaScript, and behind the scenes it actually calls Java methods. (At least, that's one way to conceptualise it.) Anyway it makes it dead simple to get what you want done with almost no plumbing. I think eventually AJAX will be reduced to internals for JSF components, but in the mean time this is great. (Because of that prediction for the future, GWT and the other frameworks don't interest me so much.)
Spring - Used it on last project and on nearly all my personal projects. Very nice, but I'm rooting for EJB3 to become the more prevalent. It may not though, as EJBs have such a bad reputation.
Struts - Legacy code. Anyone who defends it is only defending the time they invested to learn it because they are unwilling to learn anything else.
NetBeans - At home I use the mobility pack on Linux (just for playing around) and the 5.5 enterprise beta on my mac. Really great for tools but the editor is just not as good as Eclipse. I typically use NetBeans as a crutch to learn new APIs or technologies well enough to code them by hand, and then move to Eclipse for the real coding. My hands are hardwired to emacs keybindings and Eclipse is a little more complete with its emacs compatibility mode as well.
.net - It may be a threat to Java SE but that's not what's interesting to me anyway (I am a Linux guy so I try to stick to the enterprise space so I can train at home with free tools). Microsoft forces you to either be dishonest or pay hundreds of dollars (keeping in mind that I don't even have a Windows XP license) to learn their platform, and neither option appeals to me. How can something that doesn't even run on most servers be considered a threat to Java EE?
certifications - I have SJCP and SCWCD, as well as 4 IBM certifications (2 in DB2, 1 in XML & Web Services, 1 for WebSphere AD). All were to strengthen my resume when I was looking for a job, and they did that. The sun ones were full of trick questions, but that forces you to really memorise the APIs in detail, and I actually did get a lot out of doing them. The IBM ones were much easier to pass quickly if you know what you're doing, which is more fair, but on the other hand I didn't get that much useful work knowledge out of doing them. In the future I'll probably look into something like TopCoder instead, although if an EJB3 cert comes out I'll probabaly have a go at it. Certifications are invaluable for people trying to break into the industry with a non-CS degree, but certainly not needed for people with years of professional experience. Even with a CS degree it's a good way to show you have the practical skills as well.
derby in the jdk - I wrote a (very insignificant) patch for derby, so if this means that I have contributed to the JDK in some sense then I'm happy :-) Derby also happens to have a very DB2-compatible SQL syntax which makes life simpler for me on a number of levels. It's a good tool that deserves the exposure it's getting.
Disclaimer: These are all just opinions, and a snapshot in time of them as well.




