Rational

Many programming languages were considered when designing DTSA-II and the EPQ library. Some people have expressed surprise at our final choice. While no doubt there are some downsides to Java, platform independence won the day. Over the years we've written too many programs that were lost when one platform became archaic. In particular, the original DTSA is slowly fading from people's memories as Apple moves further from supporting pre-OS X versions of the Mac operating system. By writing in a language that is supported by so many platforms and is the focus of so much interest in the IT community, we expect that DTSA-II/EPQ will be available for many years to come. While the Java virtual machine may impose overhead it also smooths the speed-bumps as technology progresses in both hardware and software. The upcoming transition from 32-bit to 64-bit CPUs is likely to kill many fine applications just as the transition from 8-bits to 16-bits and 16-bits to 32-bits have in the past. Similarly transitions from one operating system (or version of an operating system) to another have killed many applications. I've already run DTSA-II/EPQ without modification on 64-bit Linux (Ubuntu and SUSE) with the added benefit of over a factor of two increase in execution speed over 32-bit WinXP.

Why Java?

  1. Java is platform independent – GNU/Linux, Apple OS-X, Solaris or Windows

  2. Java syntax and language constructs are simple enough to encourage clear, readable coding

  3. Java compilers are reliable and produce predictable platform independent results (few surprises)

  4. Integrated garbage collection of memory resources simplifies algorithm development

  5. Java includes a mechanism (JavaDoc) for creating programmer's documentation directly from the source code

  6. A simple yet sophisticated framework for unit testing (JUnit) is available and is integrated with readily available development tools

  7. A full framework of professional-quality no-cost tools are available for Java development

  8. Integrating non-code resources into Java libraries is trivial and platform independent

  9. Extensive Java libraries make developing complex applications relatively straightforward

  10. Java is likely to remain a major player in the language world for the foreseeable future

  11. Java can scale to multi-processor and distributed systems

Why not?

  1. Java applications typically execute less fast than well written C, C++ or Fortran applications

  2. Memory usage in Java is usually less efficient than some alternatives

  3. The Java language is controlled by a single company (Sun Microsystems) - This is less so now that the Java language and implementation have been released under an open-source licence.

  4. It is more difficult to control hardware devices directly from Java