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:
- JetBrains IntelliJ
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
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.
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.
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.