Penguin
Note: You are viewing an old revision of this page. View the current version.

This is a discussion of the relative merits of Ant verus make(1).

Problems with Ant

  1. Ant's relative youth means that many developers aren't familar with it.
  2. Ant's relative youth means that many development support applications (editors, IDE's, etc) don't support it.
  3. Ant's relative youth means that relatively few established projects use it.
  4. Moving an established project from ant to make (or visa versa) is non-trivial.
  5. Ant depends on Java.
  6. Ant lacks native support for non java-oriented ProgrammingLanguages? and packages (like GCC and Bison).

Problems with make

  1. Moving an established project from ant to make (or visa versa) is non-trivial
  2. make depends on the UNIX/Linux Shell or a reasonably approximation.
  3. Because make has been around since 1972, it has no native support for newer techniques (UnitTesting, gzip(1), bzip2(1), signing).
  4. The hidious tab problem, in which a tabs and spaces are visually indistinguishable but have very different semantics.

Benefits of Ant

  1. Ant's relative youth means that it natively supports quite a few newer techniques (UnitTesting, gzip(1), bzip2(1), signing, JavaDeps and JavaDoc).
  2. Ant handles multiple result files much better than make.
  3. Ant will run anywhere Java does.
  4. Ant is significantly more efficient than make for java-oriented things since they can be done without a fork(2) and without starting a new JVM.

Benefits of make

  1. Because make has been around since 1972, most developers are familar with it.
  2. Because make has been around since 1972, most development support applications (editors, IDE's, etc) have robust, built-in support for make
  3. Because make has been around since 1972, many established projects use make
  4. make will run anywhere the Shell will run.
  5. since make runs shell commands, you get all the power of the CommandLineInterface?. It doesn't really matter that make doesn't natively support bzip2, since you can pipe stuff to/from bzip2 in true unix fashion.
  6. Make doesn't depend on non-Free software such as a java runtime environment (which is also a fairly hefty download).

A dependency on the java runtime environment is not necessarily any better than a dependency on a (UNIX/Linux) shell. This is, in many ways, true. It is no better in an absolute sense, but it is different. There are situations (and projects) for which one is clearly better than the other. Using/demanding Ant and Java in all situations is no better than using/demanding make(1) and sh(1) in all situations, and if those running the project are unable or unwilling to evaluate where one is needed and one is to be avoided, there's probably not much hope for the project anyway. ---- StuartYeates

The following authors of this page have not agreed to the WlugWikiLicense. As such copyright to all content on this page is retained by the original authors.
  • JamieFlournoy
  • BrandonVanEvery
The following authors of this page have agreed to the WlugWikiLicense.

lib/plugin/WlugLicense.php:99: Warning: Invalid argument supplied for foreach()

lib/plugin/WlugLicense.php:111: Notice: Undefined variable: ignore_authors

lib/plugin/WlugLicense.php:111: Notice: Undefined variable: ignore_authors