Skip to main content

Discovering Java outside of Sun

Posted by joconner on July 23, 2008 at 2:29 AM PDT

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:

  1. Companies don't always use the latest JDK for their flagship products.
  2. Teams like the Eclipse IDE.
  3. 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.

Comments

dirtyqwerty you say you don't see "declarative markup, some codecs and a better browser plugin/JRE" as being enough to make JavaFX valuable. What do you think it *would* take?

Where I work we are still using Java 1.4. I would love to move to Java 5 but we can't yet because: 1. All our Java code is maintained in the same IDE. 2. Some of it is in a web application. 3. That web application runs in a version of Websphere which uses Java 1.4. So, I have to upgrade Websphere to the next version before moving to Java 5. That's not a trivial task given that it's our corporate web site. I do plan to get to that soon, hopefully by the end of this year. But we're actually a pretty flexible IT organization. I can easily see that there are organizations who will be using Java 1.4 for the next ten years.

I agree with what people are saying about IDEs. However, I would contend that all quality judgments of IDEs (or coding practices in general) be prefaced with "In my situation...". I've used all three and despite what samkass says, I'm no where near as productive in IntelliJ as I am in Eclipse. So for what I am doing, IntelliJ is a waste of money both in the purchase price and my time to bring myself up to a point that I'd be comparably productive as I am with Eclipse, and me using it because someone declared it the best IDE would be a disservice to my employer. Obviously that's not the case for samkass. I've also seem some wicked coders who could be just as productive in vim without all the fancy bells and whistles of an IDE. You can't unilaterally declare one IDE the winner. You may be able to declare one IDE a winner for your particular environment/project/team, but change even one aspect and your judgment would be totally invalid.

"In fact the vast majority of big projects use 1.4" According to some recent polls (non scientific, of course) the percentage of 1.4 installations could be much smaller than many people think (including me until I saw the polls). See for instance http://java.dzone.com/news/jdk-version-poll-results - being not scientific (but a commenter referred about similar results of another poll by JavaHispano) you have to take it with a lot of salt. In any case, I find it interesting, and things are not true just because some people are keeping on repeating them on blogs and forums. For what concern FLOSS, I agree zealotry should be left at home and people should just evaluate things objectively. For what concerns me, and many other people I know, FLOSS is perfectly good to do the job. We wouldn't see the huge expansion it has been enjoying for years if its only benefit would to be free (like in free beer). For what concerns me, only non-FLOSS product I always recommend is JIRA; all of my projects, and the projects of my customers, ranging from the enterprise server to the desktop are entirely developed and mostly run with FLOSS. I'm not questioning about IDEA superiority; but the point that is used by a tiny fraction of people means something in my opinion, after all it's a market thing. Also, a 10x increase in the NetBeans community in the latest two years probably means something :-)

@jwenting: could it be that you lost you job because your company or yourself were not able to adpat the chagned rules? Otherwise I can not explain those unqualified hate-attacks you always start as soon as somebody mentions open-source...

We've been told to use Websphere, I think its a terrible decision, because we've been waiting a year for Java 6 compatibility. We're probably going to use Glassfish in the end.

I also living in a 1.4, exactly because of Websphere as well. For me anything higher as 1.5 is only allowed for personal projects.

Welcome on Planet Earth after you visit SUN :) Until now i never saw any product depending on Java 6.

I won't jump in the middle of this discussion except to clarify one thing. samkass's comment about the coffee cup loading screen. The Java logo is merely the default loading screen. The applet plugin has long supported setting your own image to replace the Java logo. This is the responsibility of the app developer/deployer. In recent versions of the JRE we also support PNGs and animated GIFs. I'll have a blog coming out soon showing how to do this using some fun animated gifs (and, no, they don't involve 3d rotating fire. :)

John, you only have to be hired again by Sun and preach to your former colleagues what you have learnt in the real world! Reality is so different of what Sun engineers and marketers think to know or make us believe, that's not surprising that so many Sun project ends in failures. Look at the new kid on the place: JavaFX. They created a ghost to take a place in the competition after the big players Flash, WinFX, XUL, but apart for the name, nothing is there one year after the announcement. And how much time designers will have to wait before having decent tools to use it? And how much time Java programmers will have to wait for a high level bridge between JavaFX scenes and Swing, for instance? And there are so many examples: Java closures, NetBeans, open source... Sun has moved from an innovative company to a competition follower, without listening any more to its best friends: developpers and customers.

I knew it, I live on another planet. 1) I am using JDK 1.6 for almost all my projects. 2) All of my colleagues are using Netbeans and loving it, exept for one who is still complaining about the missing Brief keymap. 3) We use Swing for all our Frontends. Ok, we dont write standard Web client stuff, but use Java for industrial automation. I also have to maintain 1.5 compatibility because we still have machines that run NT. But for 24/7 availability nothing Beats Java/swing imho. Most of our machines run 6 Month or more without restart and in 8 years i only had a handfull of Java related crashes or bluescreens. Try this with your favourite RIA toolset/browser. So in contrast to all this "Swing sucks. Use ..". Comments i just want to say: "thanks sun, keep up the good work."

John...Where have you been the last 4 years???????? I am a J2EE developer and....I HATE APPLETS. Life is just easier....They kill my machine....Flash is another machine killer...but not as much as java In fact Java is FORBIDDEN in our projects in the client side... All these "swing" things, just sucks...But this was a fact 8 years ago.. Even Netbeans 6.1 kill the memory or my machine... John, John,,, where have you been the last years? The problem with Sun company is thay they never listenend the people...Nobody loved Swing and even then..keep on keep on I love Eclipse... look so.......native

In my company we are using swing (since 1.3) and java web start since 1.5 for internal deploying. We got some issues in web start cache, but I must say that swing is great, maybe memory hog, maybe not, but it's really extensible ! We've done a GUI library on top of swing that is really productive for client-server apps !! I know that on J2EE side things are really the opposite ! My thougts are that client side front ends for j2ee must rely on some technology like javaFX, but with a separate runtime, not J2SE, a JFXjre runtime that just brings a component GUI with it (LWUIT phoneME tiny gui toolkit) and some tools to work with it. if javaFX wants to succeed it needs his own runtime and tools ! Anyway I love Swing !!

Eclipse is superior to Netbeans ? Rather I think that Netbeans is superior to Eclipse for Java projects (Eclipse platform may be better than Netbeans, but I have no experience in this area...). I think that people are judging Netbeans by their experience on old versions (3.0 ?), or even they never tried Netbeans at all, because everybody around them says that Eclipse is superior. Or because Eclipse is the standard in their company.

We're in the same boat as Vorgi. Java 5 and 6, Netbeans, all Swing RIA's. Mostly internal apps, but some external applets built the same way. From our perspective, what's the difference between requiring a specific JRE version versus requiring a specific browser version/vendor? It takes half the time to build the rich swing app and there's only one language to know... Java, so it is a no brainer here.

Intranet client/servers here. Nobody loves Swing??? Are you nuts??? 1.6 Swing clients - looooooooove swing on the client side. ZERO lines HTML/javascript... Thank you very much. Of course we are on a controlled Intranet so no need for webstart / applets / web pages. I'll take a standalone GUI app (doesn't have to be Java) over a browser 9 times out of 10, for mail and stuff you need from anywhere, sure, but otherwise why oh why would you go browser if you are just a few minutes install away from something SOOOO much better? Most servers are actually C++ here but we have managed to squeeze in a few java servers lately, those are stuck on 1.5 for now. Haven't been able to look into JavaFX much, seems like most FX demos are about painting silly stuff rather than doing "real" applications. Yeah I know, a lot of web developers think that is cool, but the fact is more often than not it's just annoying and not adding value. Anyway I wish Sun would spend more time on standardizing support blocks like AppFramework, SwingX , better LayoutManager, FormBuilder, et.c. Oh and it's Eclipse as far as I can take it. Played with Netbeans at various times (Profiler, UML, Matisse is nice) but I still like Eclipse better for regular hacking. Never used IntelliJ, and I hear I'm missing out. Ah well. Still do most my DB stuff running sql-oracle in XEmacs though, It's surprisingly hard to beat free text search, editable buffer and query history v.s populated table views of data. At least for me, maybe I'm just old.

For years real Java programmers tried to tell Sun what is going wrong with client and desktop Java. Sun was and is unwilling to listen. Client and desktop Java is dead because of Sun not listening. And with JavaFX Sun has decided to once more kick desktop programmers in the nuts, degrading Swing to "plumbing" (Amy Fowler) . For a long time now I have ported a bunch of Java desktop applications to C++ plus a cross-platform GUI library. It is such a relieve! Suddenly users no longer complain about all the Java idiosyncrasies. If only all users would upgrade to the latest 100% Java-free versions. Until then I have to deal with desktop Java maintenance. It is like stepping in dog poo and not getting it out of the grip sole.

Where i work we're allowed to use pretty much anything java. We're using Eclipse and jdk 1.5. None of our client apps are java. Java is just too much bloat and not enough bang for what we need. Take JSF vs GWT as an example of where java gets it wrong. After spending a full day w/JSF I was just starting to understand all of all the configs, the backing beans, the life cycles, the el, etc. I had little to nothing to show off in terms of UI. It's a huge learning curve just to spit out some plain old web 1.0 HTML pages to the client. After spending a full day w/GWT I had an Ajax based DHTML app w/GWT RPC making back end calls. I had written custom components in just a few minutes of using the API. All this, and it took far less computing resources on the backend. If given a few weeks I could probably do w/JSF what I did w/GWT, but why would I do that? Maybe for my resume to get a nice paying job at a bank, but for getting the job done at my current employer? It's no contest. As far as plugin based RIAs go, I have my doubts about JavaFX. I just don't see a declarative markup, some codecs and a better browser plugin/JRE as being the second coming of swing/applets. Flash is king and JavaFX would have to have a major value add to displace it. It will be years before JavaFX is even comparable to Flash, nevermind overtakes it.

Sorry I missed IDE. We use JBuilder Foundation !!!! we neglected netbeans coz there's NO WAY TO EDIT OUR JBUILDER Forms with MATISSE !!!!! we got tons of them we cannot stay all day migrating JBuilder stuff by hand even if it works !!!!! at home I use netbeans and I love it a lot ! the only feature I miss is editing generated Matisse code by hand like JBuilder jbinit() stuff! cheers !

why attack someone who's not glowing with praise for all things open source, "linuxhippy"? The only job I lost was when the CEO ran off with several million Euros from the company bank accounts, leaving the company bankrupt. Can't see how that's influenced in any way by open source, unless the banking systems had safeguards programmed into them using open source libraries which failed to trigger failsafes, which is quite a stretch (and anyway, given his position in the company he had the authorisation to make those withdrawals).

I'll use open source when and where appropriate, and shun it where not. In contrast to the zealots however I fully realise that it's NOT always the right solution, and often comes at a price that's hidden in extra manhours needed to implement a solution using open source products because those products tend to be less polished and often need fixing or modification to make them fit your environment (or you need to do even more work to beat your environment into a shape the open source product likes).

To some extent that's also true of commercial products, but there the effort is usually covered by a service agreement with the company selling you the product and therefore immediately visible rather than discovered in cost overruns and missed deadlines.

Anyone that says Swing is not good, is because doesn't know what is talking about. I use swing for 2 years and it is great. I'm coming from a delphi world, so my expectations were high, because Delphi was really a good tool back at 1998-2004. The problem is the learning curve indeed(someone said this on the above comments). We developed a huge application, and really cool. Swing is the only gui toolkit that give me all the freedom that I need. I have my software running on windows, linux, mac. I have developers developing on 3 OS too, Yes I had some problems to be able to do it, but it is the best multplataform you can find. Java is awesome, I know you have to code a lot, I know people says Python this, ruby that, but with if you stick with JAVA you can do anything you want, to run almost everywhere. Talking about JAVAFX I totally agree with another comment, I would rather see sun investing o swing, swingx, matisse then JAVAFX. Come on guys netbeans is great, not perfect but great, you can work almost in any kind of project out of the box, just install and you are good to go. Matisse has some issues, but still the best GUI we have. So Java 6 is really cool, but JAVA 5 is great too, actually I like to think that java started on java5(desktop side I mean). So in my opinion John you are not crazy, and keep going with netbeans, swing and java. People need to understand that Java it is not just good, but it is everything that we have against .NET. Java is free, is open source, has a Damn good community, has a lot of documentation, so let's stop being lazy and get over that learning curve. That's all that I can say guys. This is my opinion and my experience.

Anyone that says Swing is not good, is because doesn't know what is talking about. I use swing for 2 years and it is great. I'm coming from a delphi world, so my expectations were high, because Delphi was really a good tool back at 1998-2004. The problem is the learning curve indeed(someone said this on the above comments). We developed a huge application, and really cool. Swing is the only gui toolkit that give me all the freedom that I need. I have my software running on windows, linux, mac. I have developers developing on 3 OS too, Yes I had some problems to be able to do it, but it is the best multplataform you can find. Java is awesome, I know you have to code a lot, I know Python this, ruby that, but with you stick with JAVA you can do it anything, to run almost everywhere. Talking about JAVAFX I totally agree with another comment, I would rather see sun investing o swing, swingx, matisse then JAVAFX. Come on guys netbeans is great, not perfect but great, you can work almost in any kind of project out of the box, just install and you are good to go. Matisse has some issues, but still the best GUI we have. So Java 6 is really cool, but JAVA 5 is great too, actually I like to think that java started on java5(desktop side I mean). So in my opinion John you are not crazy, and keep going with netbeans, swing and java. People need to understand that Java it is not just good, but it is everything that we have against .NET. Java is free, is open source, has a Damn community, has a lot of documentation, so let's stop being lazy and get over that learning curve. That's all that I can say guys. This is my opinion and my experience.

@ewin what GUI library is that?

And, of course, that's why I created my open-source projects.. to be free at least few hours a week... :)

The biggest problem with Eclipse is that it offers so many "perspectives" of a project that one can get lost in the various "views".

I don't know why you 'Sunny' guys complain about perspectives that much (Tim also complained about it a few years ago). Is it really a big deal? Even though I particularly don't use the perspectives that much (must of the time I use only the Java perspective; eventually some other like DbViewer), I don't see any major annoyance with them (if you messed up the perspective, just reset it).

You guys should focus on the real issues of Net"Look mom, this is how Linux fonts looked like 12 years ago!"Beans.

My thoughts mostly echo jwenting's. Buying the best IDE in the marketplace is a great investment. IntelliJ is so much more productive than either Eclipse or NetBeans that it pays for itself very rapidly. For us NetBeans' lack of support for Perforce would knock it out of contention immediately, but even if it could integrate into our environment it's so much worse than IntelliJ that you'd spend WAY more billable hours pandering to it. It's often been my opinion that with a few notable exceptions, "free" software is only free if your time is worthless. As for deployment to clients on Java, we do it. But we ship our product on DVD and it's a vertical product. Put a "tiny" applet on a web page? Well, there's no such thing as a tiny applet. Once you kick Java in, Sun insists on sharing your products branding with coffee cups during the extensive load times, etc., and it's like killing a fly with a sledgehammer. JDK 6u10 is a tiny baby step towards making things better on the client, but it's more like the entry toll than going very far down the road. I'm not sure Sun realizes how far behind they are.

If you have the privilege to try latest web technologies, you are probably working in a mid-size company with certain freedom around..

If you are looking for real depression, try a job in a giant Bank .. ant then you will see a lot of people migrating COBOL and other ancient technologies to Java.. that would be in the most optimistic case JDK 1.4, the latest version running in the expensive IBM mainframes (yeah, there are a lot of mainframes in the basement :) ...

From the last few year, the only open source project from Sun that is really shaking the market are under the Glassfish umbrella....

JavaFX is a future bet and Swing is not suitable for browsers. I know, webstart, etc... but nobody wants to rely their business on the risk of installation problems..

Few years ago I was able to sell to my boss a WebStart solution.. it worked, and I loved to produce that, but I should confess we had a lot of customers with configuration problems (around 10% of them)...

Keep watching my friend, outside Sun things are much more difficult... and you will never use the latest technology.. the market walks at least two or three steps behind, ever..

Theoretically we know Java 1.4, 1.5, and 1.6 is compatible as long you do not use those keyword of newer version such as 'enum'. But sometime for code that use restricted library, upgrade to newer version will break the code. I had seen code that use 'com.sun.xml.messaging.saaj.soap.impl.ElementImpl' and compile with JDK 1.4, failed to run on JRE 1.6. It is because in Java 1.6, the class had been moved to 'com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl'.

problem? It's not a problem. 1.5 is superior to 6 in stability and tools support so that's what's being used. In fact the vast majority of big projects use 1.4 (and some 1.3 still) simply because the cost of porting it to 1.5 (6 is never even considered, see above as to why) is not warranted.

And Eclipse is superior to Netbeans, just as IntelliJ is superior to Eclipse. Your insistence on using "free" software has cost your team a lot of money to no measurable gain. That's a disservice to your employer for vanity's sake and religious zeal rather than sound business reasons, would for me be a reason to not want you in my team however good a resource you might be otherwise.

That's a lesson you apparently still need to learn (though you seem to be learning it to some extent): businesses do what they do because it makes economic sense to do so, not because it fits with someone's idea of what the world should look like.

John, you will not beleive - have the same problems! They don't want to go from Java5 to Java6 only because they ARE NOT SURE about backward compatibility! And about Eclipse - I have 10 members in team, I am only one to use NetBeans (hate eclipse). One guy is using eclipse and he really knows what he is doing. Others are using eclipse just because someone once gived them eclipse and on that server eclipse templates are stored. I'm totally confused with politics "why not", because looks like people just don't care about software they are using, no one of them wants to search for better ways, better practices, better solutions...