| As with general 
              science and engineering, Java offers a number of benefits 
              in physics computations and also some shortcomings. 
             Benefits  The graphical capabilities of Java provide great flexibility and 
              a wide array of tools for implementing simulations. Such 
              graphical simulations can often illustrate a phenomena far more 
              clearly than just by studying the underlying equations. The portability of Java code allows theorists who collaborate 
              but work on different platforms to easily share code. Many physics 
              legacy 
              programs in Fortran and 
              C can benefit from attaching a Java graphical interface and also 
              by using Java's networking capabilities. Most of these legacy programs, 
              especially those involving extensive numerical computation programs, 
              represent huge numbers of person-hours of work and will never be 
              rewritten from scratch in another language. However, by giving them 
              a Java interface, their usability and accessibility vastly increases. 
              (Chapters 16-20 will 
              discuss how to use Java to interface to a legacy computational engine 
              over the web.) Experimentalists often work on hardware 
              systems that include a wide range of platforms: Linux workstations, 
              MSWindows PCs, embedded processors in remote sensors, etc. Using 
              programs that can run on all of these platforms can greatly simplify 
              software development. Here, as well, experimentalists can build networking programs with 
              Java that allow distributed sensors to share data, allow for remote 
              diagnostics and calibrations, monitoring of data as it is recorded, 
              and so forth. In Chapter 
              23 we will focus on embedded Java. Shortcomings 
             Until recently the lack of an official real-time specification 
              slowed the development and broad use of Java real time JVMs in many 
              data taking systems. Java in real-time applications have linked 
              with native code 
              (see Chapter 21) to carryout real-time operations. Now, however, 
              an official specification has been agreed upon and we can expect 
              to see a number of real time JVM's become available, especially 
              for small footprint, embedded platforms. The lack of a 2-D array, array index checking, and no complex primitive 
              type are inherent shortcomings in Java that can seriously affect 
              some highly computationally intensive computations. However, in 
              such cases, Java can still provide a powerful interface to a numerical 
              module written in C or Fortran. Similarly, linking to C or Fortran might overcome the general problem 
              of slow performance in the JVM. However, this problem has become 
              less acute with the development of sophisticated optimizing compilers 
              that transform Java bytecodes to native machine code. With such 
              compilers, it's possible that some Java programs can run even faster 
              than similar code in C or Fortran. Latest update: Dec.10.2003 |