Tools of the Trade
I’m a Computer Scientist by training. My specialty is solving problems. Most of the time, solving that problem involves programming. Thus the importance of having the propers tools to solve problems.
I’ll admit that I’m a fan of Java. Although I understand the power and flexibility of C and C++, I can easily say that I prefer error messages with more information that “Core Dump”. I won’t deny the power of the Visual Studio suite, although it is limited to one operating system. And Python does have its advantage, even though it doesn’t always scale nicely in large applications. But when I’m faced with the hard choices, it’s Java all the way. For one thing, it’s got a huge collection of top notch tools.
Eclipse is one of the most elaborate IDE (integrated development environment) available for Java. It’s pretty much a love/hate relationship: people either love it or hate it. If you are looking for a simple Java editor, this is not it. Eclipse provides a Java programmer with all the tools he could need including a Project Manager, a Debugger, CVS/SVN integration, auto complete code prediction, numerous refactoring tools and much much more. In addition, Eclipse can easily be extended given its plug-in architecture. When I first used Eclipse at version 2.x, I hated it. It was slow, bulky, and I didn’t really understand it. Version 3.x solved a lot of those problems, providing a much faster and intuitive interface. However, it’s hard to understand how much Eclipse can help you until you watch an experience Eclipse user. You’ll never want to go back to another editor (unless you’re one of those vi(m) fanatics).
Any good programmer will tell you, make your application work first and then optimize it. Why? Because you need to make sure you are optimizing the bottlenecks. A good profiler will allow you to analyze the execution of your application and find those bottlenecks, whether they be CPU, memory or IO related. When working with Java, there’s no better profiler than JProfiler. Although I usually prefer to stick to open source tools, I haven’t found a tool that will match the power and the ease-of-use of JProfiler. This tool has literally saved me hundreds of hours of optimization work pointing out my applications bottlenecks. Newer versions even integrate nicely into Eclipse. I would recommend this tool to any serious Java developer, especially when performance counts.
Compiling a Java application is a simple matter of using the javac command. However, things get somewhat complicated when the project spans multiple packages and uses numerous libraries. The situation becomes even more complicated when dealing with multiple platform specific subtleties. You can solve these problems, and many others using Ant, the automated build tool. Using XML instruction files that are much simpler than “makefiles”, Ant allows you to automate the compilation of your project, along with any related tasks. Ant detects which files has changed, as to compile only what needs to be compiled. This is a great plus when you have a project with thousands of class files. It can also jar, copy, delete, create directories, javadoc, zip, and much more. Ant is written in Java, so it can be easily expanded. This is a must have tool for any serious Java project.