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.
Java is platform independent – GNU/Linux, Apple OS-X, Solaris or Windows
Java syntax and language constructs are simple enough to encourage clear, readable coding
Java compilers are reliable and produce predictable platform independent results (few surprises)
Integrated garbage collection of memory resources simplifies algorithm development
Java includes a mechanism (JavaDoc) for creating programmer's documentation directly from the source code
A simple yet sophisticated framework for unit testing (JUnit) is available and is integrated with readily available development tools
A full framework of professional-quality no-cost tools are available for Java development
Integrating non-code resources into Java libraries is trivial and platform independent
Extensive Java libraries make developing complex applications relatively straightforward
Java is likely to remain a major player in the language world for the foreseeable future
Java can scale to multi-processor and distributed systems
Java applications typically execute less fast than well written C, C++ or Fortran applications
Memory usage in Java is usually less efficient than some alternatives
The Java language is controlled by a single company (Sun Microsystems)
It is more difficult to control hardware devices directly from Java
The Java language is controlled by a single company