I have to confess that I had absolutely no idea that Ant, the little build tool that could, would o as far as it did and make such a mark on the Java developer community. When I wrote he first version of Ant, it was a simple hack to help me solve a cross-platform build problem hat I was having. Now it’s grown up and being used by thousands of developers all over he planet. What’s the magic behind this? How did this little program end up being used by so any people? Maybe the story of how Ant came to be holds some clues.
Ant was first written quite some time before it was checked into Apache’s CVS servers. In
mid-1998, I was given the responsibility at Sun Microsystems to create the Java Servlet 2.1 pecification and a reference implementation to go with it. This reference implementation, hich I named Tomcat, was to be a brand new codebase, since the previous reference mplementation was based somewhat on code from the Java Web Server, a commercial roduct that was migrated from JavaSoft to iPlanet. Also, the new implementation had to be 00% Pure Java.
In order to get the 100% Pure Java certification, even for those of us working on the Java
Platform at Sun, you had to show Key Labs (an independent certification company) that you ould run on three different platforms. To ensure that the servlet reference implementation ould run anywhere, I picked Solaris, Windows, and the Mac OS. And not only did I want omcat to run on these three platforms, but I wanted to be able to build and develop on all three platforms as well as on Linux. I tried using GNU Make. And shell scripts. And batch files. And God knows what else. Each approach had its own unique problem. The problems stemmed from the fact that all of the existing tools had a worldview rooted in building C programs. When these practices were applied to Java, they worked, but slowly. Even thoughJava programs themselves can perform well, the startup overhead associated with the Java Virtual Machine is lengthy. And when Make creates a new instance of the VM with every file that needs to be compiled, compile times grow linearly with the number of source files in