Introduction
This post will contain my recommendations for various tools, plug-ins, and API’s for Java developers. These are the tools that I believe if a Java Developer was stuck on an island, he/she would need. Although honestly, I guess if you are stuck on an island, you probably need electricity and an Internet connection first, but I digress.
I have a strong preference for open and free programs, but in some cases I make an exception.
If you would like to know a recommended solution or tool for a category not mentioned, please click Ask Brian for a Recommendation to contact Brian. If you have a suggestion for another tool that you believe is essential for Java Developers or disagree with my recommendations, please comment on this blog.
Core Toolkit
Application Logging API
This is a no-brainer. I use log4j on every Java project. It is the best logger available for Java due to its simplicity, flexibility, and reliability.
Integrated Development Environment (IDE)
I have used just about all of the major commercial and open-source Java IDE’s. At this point, without any doubt my IDE preference is Eclipse. I prefer Eclipse due its openness and flexibility. The performance and stability has improved significantly over the years, which is why I moved away from costly commercial IDE’s. The abundance of plug-ins for Eclipse also help make it a great IDE.
I can’t imagine any reason to purchase a commercial Java IDE, but if you do, I recommend IntelliJ IDEA. This is the IDE that I used for years until finally making the switch to Eclipse.
Integrated Development Environment (IDE) Plug-ins for Eclipse
If you use Eclipse, I highly recommend JAutodoc. It is an invaluable tool that makes documenting code a breeze. It provides the ability to add Javadoc and file headers to your source code and is extremely configurable.
Java Application Server – Although, I prefer Apache Tomcat for most projects if you don’t need the full J2EE stack implementation (which most business line web applications and sites do not). It is reliable, scalable, lightweight, and fast. If you need the full stack implementation, I prefer Apache Geronimo (open-source baseline for IBM WebSphere) or JBoss.
I can’t imagine any reason to purchase a commercial Java Application Server, but if you do I recommend Oracle BEA Weblogic.
Merge/Compare for Windows
I installed and evaluated countless free and commercial merge/comparison utilities. Although I use to be a big fan of Araxis Merge, now I use WinMerge exclusively. It is reliable and has all of the core features that you need including folder and file comparison, merging capabilities, and nice visual comparison.
Tail for Windows
If you develop any application, you need a good tail program to monitor log files. Of course if you are developing on the Linux or Unix platforms, you already have one. However, for whatever reason, Windows does not have a tail program included. I installed evaluated countless programs, but without a doubt the best is Tail for Win32
Text Editor for Windows
If you need a stable, reliable, and feature rich text editor for the Windows platform that is free, I highly recommend Notepad++.
If you are willing to pay for a text editor, which I am not, then I recommend TextPad. TextPad is stable and has more features than NotePad++, but it also costs money.
UML Modeling
Although, I tend to prefer open-source solutions over commercial, in this category, I will make an exception. For UML Modeling, I highly recommend Altova UModel. It is simply an amazing product that provides all of the UML functionality that most developers need. It costs only a few hundred dollars depending on the edition that you purchase. It supports C# and Java, which is a big plus for me because I do both .NET and Java programming. It just works, what else can I say.
Version Control
My favorite version control system is Subversion. I have to admit, at first I didn’t like Subversion due to its stability problems, but it has matured into a very stable and reliable product. It’s advantages over CVS, which is certainly a decent source code management system, are known and vast. There are Subversion plug-ins for all major IDE’s including Eclipse and Visual Studio.
Accessories (Nice to haves)
Dynamic PDF Generation
I use iText on many projects to dynamically generate PDF documents or to add watermarks or overlays to existing PDF documents. The API is consistent, the code is well-written, and most importantly it is well-documented. I used iText in several production solutions without any problems.
Office Document Creation and Manipulation API
If you need to create or manipulate an Office document using Java, the absolute best API that I found is Apache POI. I tried several others, but concluded Apache POI is the best. I have used Apache POI on several solutions that are currently in production. There are a few quirky issues with the Apache POI API, but it is stable, fast and reliable.
Web Control Toolkits
I recommend the following control toolkits:
XSL Formatting Objects (XSL:FO)
I use Apache FOP frequently. It is not as robust and scalable as some commercial XSL:FO implementations, such as Antenna House, RenderX, or Arbortext Publishing Engine, but it implements the core of the XSL:FO standard. It is definitely maturing into a stable and reliable product. The XSL:FO is more fully supported with the recent major rewrite that addressed compliance and performance issues. I used it in several production solutions without any problems.
If you prefer a commercial solution, I recommend any of the XSL:FO engines listed above. I have used all of the above commercial solutions in production scenarios and you can’t go wrong with any of them. Although there are plenty of die-hard fans of the different products, I find all the three products listed above to be viable and formidable products.