Awhile back, I read on somebody’s weblog that there are basically three ways to write modern business applications, and by that I mean applications written for internal usage in a company. The three are Microsoft .NET, enterprise Java, and open source Java. Those may not be the names he used, I can’t remember any more. To clarify, enterprise Java is Java development with expensive, unwieldy EJB containers like Weblogic and IBM WebSphere. Open source Java relies on things like Tomcat and the other Jakarta code. I’d personally throw JBoss into the enterprise category, even though it’s open source.
When I look at job listings for developers, it seems to me that the skills people ask for specifically beyond just Java, servlets, and EJB, are things like Weblogic, WebSphere, MQSeries, and other things in the enterprise family. The only open source Java things I see listed specifically are occasionally Tomcat and Struts. By nothing more than dumb luck, my development experience is fully centered on the open source Java world. Both the places where I’ve done Java development have eschewed the enterprise route in favor of going with servlet based applications. Unfortunately, I feel like to be as competitive as possible in the job market, I need to broaden my skill set. I’ve decided that I’m going to focus on improving my Java skills and learning more enterprise Java, so I’ve begun reading Mastering EJB II, which is pretty well regarded and is available for free on the Web for sampling.
I’d like to pick up some .NET knowledge, too, but first things first. The two big things I’m looking to learn right now are EJB, and UML. I’d like to know enough about both of them so that I can discuss them intelligently in interviews, and understand when they’re appropriate to use. I actually know some UML, mainly class diagrams, but I need to know more. And I’d like to know enough EJB to be able to look at projects and make a fact-based determination about whether using EJB makes sense. My impression right now is that EJB is the most misapplied technology in the Java world, but surely there has to be a category of project where EJB is most appropriate.
Working on learning new skills for the sake of a job search is never fun, but focusing exclusively on only one of the three platforms for business applications is a luxury I feel I can no longer afford.