Creating A Thick Java Application – in 2009?

Has the web become so pervasive that thick client applications are obsolete? Of course we all use a few thick client applications – Office, Photoshop, Nero,  and CCleaner are good examples, but how many of us actually still have the tools at hand to efficiently code an app up from scratch. I need to write a thick client application that will serve as a utility tool for my programming work with mobile applications and sensor data streams. It has been a long time since I had to do this since I’m primarily in the internet space. Since I do most things in Java that is where I’ll start.

In the Java space there’s a pretty extensive list of tools out there, but in my mind I think there are three tools to check out:

  • Eclipse
  • JetBrains IntelliJ
  • NetBeans

Sure there are other tools – but these are really the most widely used and respected tools out there. Two of these are open source and one is a commercial tool. If you’ve read other posts of mine you will know that I am an Eclipse user, but I’ll try to be fair. I’m looking for some pretty basic requirements:

  • IDE Must run on Windows and Linux
  • Editor must have code lookup features, code highlighting, and all that kind of stuff
  • Strong set of examples, documentation, and/or tutorials
  • GUI designer and drag-drop widget layout

Eclipse 3.4

This is going to be quite short…sorry Eclipse you are out. It seems amazing to me, but Eclipse seems to have “lost” its Java client designer tools called “VPE”. They have been left behind with Eclipse 3.2 and the project seems dead. It is really quite amazing that this is the case since for quite a long time Eclipse and NetBeans were competing head to head with Swing vs. SWT.

NetBeans 6.7

I started using NetBeans because they have some nice J2ME tools. Similarly their tools for Java client creation are pretty nice. A complete IDE with a great set of examples and a sophisticated GUI toolset. NetBeans is simple to install and simple to get going…amazingly better probably (or maybe simpler is a better description) than Eclipse.

Once you are in NetbBeans there is a wizard approach to building an application that gets you going. What is really nice about NetBeans is that the GUI pallents include a lot of components for menus, dialogs, the typical screen gadgets, and layouts. Really nice. You’ll see this is the screen shot below:

The interface is pretty nice and it is responsive. If you notice that hint bar just above the GUI screen here – this is pretty cool. It really helps the newbie (and probably annoys the crap out of the long time user). There’s a source and design button, if you switch to source you can edit the code directly, but…there’s always a but. You’ll notice regions of code that are “generated”. If you edit these and switch back and forth to deign and source views your changes will be obliterated.

Ok – I’ll admit that I’m a control freak. I hate that…I always have. Remember Tango…or NetObjects Fusion, or Dreamweaver 1.0…ugh. Always messing up my code :-(. In this case I guess this might be ok since I really am just starting and building quick and dirty apps, but for the future this is something to watch out for.

Other things I like:

  • Building and managing configurations is pretty simple and powerful
  • There’s a decent library manager – this is critical to Java and maintaining your sanity
  • There’s decent support for refactoring, versioning with subversion, and debugging/profiling
  • Tons of plugins for different kinds of development.

Overall a decent tool with a lot of advanced features in the GUI designer. I think this not only is one of the best GUI designers in Java, but it really does move up into the big leagues and challenge Visual Studio tools from Microsoft.

IntelliJIDEA 8.1

The guys at JetBrains have been at it for quite a while. Prior to Eclipse I was using IntelliJ for Java and J2EE development. I have not looked at it in quite a while, but it was a no brainer to go back to this tool and take a look. This is a commercial tool and it will run you $299 to use it for commercial purposes.

IDEA is a full featured Java development environment with all the bells and whistles. The shot below you can see is very similar to NetBeans, but I think the UI is clearer and more efficient.

There are also a lot of sliders and tabbing on the menus that really make getting around your project very easy. The GUI designer was pretty intuitive, after a quick on-line tutorial for about 5 minutes I was then able to get in and lay things out with a decent layout manager (jFormsGoodies) assign actions and action listeners, and then get into my real task of writing the logic.

Refactoring has always been a big part of why IntelliJ is cool and it still is. With a click you can change class names, packages, method signatures extract interfaces, and a bunch of other things. Another powerful tool for grinding out code is the ALT-INSERT key combination. Hitting that key combination will bring up a pop-up menu with a bunch of really nice insert options to generate common code snippets like getters/setters, the toString() method for the current class and more.

IntelliJ also includes functions to help the coder optimize code: import optimization, code analyzers, reformat functions, and more. These can really help turn a prototype into a polished piece of software.  Here’s a quick view of what that looks like:

What’s the deal?

For general Java development with a GUI designer it seems there are two excellent choices that are pretty close. It will be interesting to see what happens with Eclipse and Java development. It seems that Eclipse has left the space to NetBeans and IntelliJ. For me I prefer IntelliJ. I think it is easier to use, has a cleaner interface, and has a lot of functions to help me improve my code. It is very close however and many people will find the $299 a barrier. Either choice is a good one. After I get done with this project I’ll take have to take a look at mobile development iwth both of these tools. NetBeans is the long-time player there so it will be interesting to see if IntelliJ can compete.

8 Comments

  1. AnonymousGerbil

    “Overall a decent tool with a lot of advanced features in the GUI designer. I think this not only is one of the best GUI designers in Java, but it really does move up into the big leagues and challenge Visual Studio tools from Microsoft.”

    Geez, I checked out just earlier GUI designer for netbeans and it was so abysmal I had to check what decade it’s were living at. Delphi and visual basic had better GUI designers in mid 90’s and that’s not exageration. I am pretty much shocked if netbeans thing really is one of the best GUI designers for java. No wonder no one make any decent GUI apps with java.

    Reply
  2. Beren (Post author)

    What makes it “abysmal”? It seemed fairly simple to use. I was able to go in and create forms, layout parts, assign actions, and generate an application with no training or experience…or even reading the documentation. Sure there are things I don’t like, but hardly abysmal.

    I don’t agree there are no good Java GUI apps. Just yesterday I was looking at an application that I thought was really nice and asked what it was written in. I was sure it must be Win32 C++ or C#, but no – it was Java!

    The mystery to me is how are people doing it?

    IntelliJ is pretty nice – I’ve found that I can do just about anything with it. That’s what I use now for this kind of thing.

    This is also a pretty nice tool:

    http://www.jformdesigner.com

    VB and Delphi had their problems too. Ugh…object pascal…the BDE…ugh. I won’t go there with VB…ick.

    Reply
  3. AnonymousGerbil

    What makes it abysmal? It just lacks so much functionality from plain designer point of view compared to C#, VB.NET or Delphi it’s not even funny. Results need tweaking here and there and still look (to my eyes) unprofessional(ish, kinda), compared to simple neat clean look Visual Studio GUI designer does without any jumps through hoops. It brings in painful memories from 90’s when other GUI designers were still as lacking.

    I am well aware of certail – let’s say – unniceties on languages, especially in VB. I had to do vb3 – vb6 coding for work not even that long ago because of legacy apps and I was ready to almost strangle those responsible from abysmal language itself.

    But back to GUI design, I haven’t tested IntelliJ so no idea about it’s GUI designer. Only been testing Eclipse and NetBeans for GUI and growing gray hairs our from that experience. Will take a peek into that JFormdesigner thing though.

    I seriously can’t think of that much any existing Java desktop apps with nice gui at all. Open Office might be exception, I think it’s java app.

    For j2me (mainly game coding stuff) stuff I actually been liking to use Netbeans (reason why I grabbed it in the 1st place). It’s sometimes bit slow, but will do perfectly fine it’s job 🙂

    Reply
  4. Beren (Post author)

    I was using NetBeans for J2ME, but I’ve moved over to eclipse since both RIM and Motorola are using this and Nokia stuff all works fine in Eclipse. I prefer Eclipse in general over NB.

    I guess I still don’t get what makes it “abysmal” – to me that means horrible. I wouldn’t say its horrible…cluttered and a bit clunky…but I think all these tools are pretty clunky. Tools being IDE’s in general including Visual Studio. Just look at the hassle in setting compiler options and build paths in VC++. Yikes. 15 years and that’s the best we can come up with?

    Java program with nice GUIs : IntelliJ, Eclipse, FreeMind, VirtualBox, ThinkingRock, Qarbon’s ViewletBuilder is pretty nice – I suppose there are others.

    Well – I can name just as many bad ones. I’m convinced the best apps are not built with designers anyway – they are built by hand. I doubt anyone laid out MS Excel or Eclipse in a visual designer.

    beren

    Reply
  5. AnonymousGerbil

    What makes it abysmal (yes, horrible) is all those little things it’s missing if you’ve just gotten used to good/great GUI designers. It’s bit like having 100mbit net connection and then all the sudden you’d have to use dialup. It “works”, but just ain’t pleasant.

    Still that list of java apps with nice gui, very short… I believe bit torrent client azureus is java too, though.

    With GUI designer C# or Delphi has, it’s extremely easy to make great GUI quite fast. If you’d try to make same GUIs by hand it would be much harder task.

    Hmm, I actually think I should test Eclipse for j2me stuff just out of curiousity.

    Reply
  6. Delphi developer

    You can use Delphi XE for this. Its’ 2010 now ))))))

    Reply
  7. Beren (Post author)

    Uh yeah – it is…so ironic that you mention Delphi.

    Reply
  8. Pingback: Google’s WindowDesigner for Eclipse 3.6 « Tarn Aeluin

Leave a Reply