Rational

Many programming languages were considered when designing NISTMonte. Some people are surprised by 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. 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 NISTMonte will be available for many years to come. While the 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 NISTMonte without modification on 64-bit Linux (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)

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

  5. The Java language is controlled by a single company