Discovering Java outside of Sun
After leaving the protective cocoon of Sun Microsystems, I have discovered a Java world I never knew. Of course, the blogosphere hinted that this world existed, but I didn't care. I barely noticed since that world had little relevance to me in my comfy space at Sun where it was always ok to use the latest release of the JDK and NetBeans. What is that world...a world where Java is NOT the primary business focus, where Java is just another tool, and where it's not even the shiniest tool either!
I've discovered several facts since marching out into the lone and dreary world outside the Santa Clara or Menlo Park offices:
- Companies don't always use the latest JDK for their flagship products.
- Teams like the Eclipse IDE.
- Java isn't always the preferred rich client.
Companies don't always use the latest JDK
How can it be true? I wouldn't have believed it had I not actually worked with this team for the last 6+ months. The company's primary product runs on a Resin app server, and that runs on a 1.5 version of Java. 1.5...when 1.6 has been around so very, very long? What can this mean? Why? Eh, it turns out that, well, Java 1.5 has everything the company needs at this time. Well what about 1.6? Maybe one day...if we need it.
Teams like Eclipse
When I first arrived, the team used IntelliJ. When we decided to go to a freely available IDE (partly as a result of my nagging), the options were NetBeans and Eclipse. All along, my plan was to move myself and everyone else to NetBeans. Unfortunately, NetBeans didn't stay in the race long because of a problem with UNC paths and spaces in project path names. Maybe that's fixed now, maybe not. This team won't find out anytime soon. They're too busy coding and fixing bugs from the Eclipse IDE. The move to Eclipse was smooth, practically uneventful. Dare I even complain? The biggest problem with Eclipse is that it offers so many "perspectives" of a project that one can get lost in the various "views".
The end result is that Eclipse allowed this team to use their existing source code structure to create Eclipse projects. NetBeans threw one too many hurdles up. Right or wrong, it didn't take much to throw it out of contention. And the group just wasn't in the mood for making something work. Eclipse seemed to meet needs immediately.
Flash, not Java, as the rich client
No Java 6. OK, fine, use 5 then. You want Eclipse instead. Brother! Sure, go ahead...despite my insistence that NetBeans can work equally as well. But Flash as the client! Come on, we have to be reasonable. Java is a perfectly good rich client platform, right? Apparently not in this shop. I blogged about this briefly before, and no one has budged on their opinion since then either. Sigh...another battle lost before I could even get a good head of steam.
Is there a silver lining?
Sure there is. Despite working without Java 6, NetBeans as my IDE, or Swing (or maybe Java FX), I'm learning loads about Spring, Hibernate, and web application development. I'm learning that web application software teams love Java, but they tend to relegate it to the backend, business logic space. Rich client apps? No way. How about Java Web Start? No need. So, how about just a little, teeny, tiny applet then? Get outta here. Flash, flex, swf files...sure, but no Java on the front end. This particular team won't even consider Java there. I can't even begin to argue against Flash at this point.
3 battles lost. So, really is there anything good here. Again, sure there is. From my one perspective, sitting in my cube at a web-oriented, software-as-a-service company, it seems clear to me that Java definitely hasn't lost any ground on the server side. Maybe it's even gaining momentum there.
But what of Java on the client side? If Java ever had any momentum on the desktop, that momentum has all but sputtered out -- at least here. What I need is a few good tales of client side Java. Somebody please raise my spirits and tell me I'm just going through a particularly dark phase of my career! Maybe I'll wake tomorrow morning to find that companies really are producing desktop Java apps, Java 6 is everywhere, and NetBeans is *the* IDE of choice among all developers.
[Added after original post]
At 2 in the morning, my brain doesn't speak in complete sentences. Thoughts jump randomly. So now after a couple hours of sleep, I've gone back through this post and made some very minor edits just to clarify.