We will highlight here a sample of the Java software libraries
(i.e. packages) available to support program development in physics.
The math software will, of course, be useful in any technical programming.
Chapter 12: Tech
section has a page with a sample of General
Science & Technical Programming Libraries and the Java
Resources page provides additional links to math and physics
Java software on the web. Note that the NIST
Java Numerics - Libraries page, in particular, holds a long
list of links to Java numerical analysis packages.
Most of the following packages are free.
Physics/Science Analysis
Packages
- COLT
"a set of Open Source Libraries for High Performance Scientific
and Technical Computing in Java". Developed at CERN for analysis
of high energy physics data.
- " This distribution provides an infrastructure for
scalable scientific and technical computing in Java. It is
particularly useful in the domain of High Energy Physics at
CERN: It contains, among others, efficient and usable data
structures and algorithms for Off-line and On-line Data Analysis,
Linear Algebra, Multi-dimensional arrays, Statistics, Histogramming,
Monte Carlo Simulation, Parallel & Concurrent Programming.
It summons some of the best concepts, designs and implementations
thought up over time by the community, ports or improves them
and introduces new approaches where need arises. In overlapping
areas, it is competitive or superior to toolkits such as STL,
Root, HTL, CLHEP, TNT, GSL, C-RAND / WIN-RAND, (all C/C++)
as well as IBM Array, JDK 1.2 Collections framework (all Java),
in terms of performance (!), functionality and (re)usability."
- API
Documentation
-
FreeHEP
Java Library
"The goal of the FreeHEP library is to encourage the sharing
and reuse of Java code in High Energy Physics. Although some
of the code is fairly specific to HEP, other code is more generic
and could be used by anyone. To maximize reuse we strive to
keep the dependencies between various packages in the FreeHEP
library to a minimum, so you can use which ever parts interest
you without being forced to use the entire library."
- JAIDA
"Java implementation of the Abstract Interfaces for Data
Analysis (AIDA); it is part of the FreeHEP library. Java programmers
to quickly and easily create histograms, scatter plots and tuples,
perform fits, view plots and store and retrieve analysis objects
from files. JAIDA can be used either in a non-graphical environment
(for batch processing) or with a GUI to be used just to display
plots."
-
Java
Analysis Studio
General purpose, open-source, data analysis tool developed at
the Stanford Linear Accel. Center. Uses JAIDA libraires
- jscience.org
"JavaTMTools and Libraries for the
Advancement of Sciences." Includes classes for physics, math,
and finance. Math capabilities include linear algebra, symbolic
math analysis, and number types. Physics classes provide for models
of physical quantities plus tools to handling units.
- JSci
A science API for JavaTM
- "Abstract math interfaces
- Linear algebra (support for various matrix and vector types)
- Statistics (including probability distributions)
- Wavelets
- Newtonian mechanics
- Chart/graph components (AWT and Swing)
- MathML DOM implementation
- Lots more..."
- API
Documentation
- Mantissa
(Mathematical Algorithms for Numerical Tasks In Space System Applications)
"Mantissa is a collection of various mathematical tools aimed
towards for simulation. It is not a complete mathematical library
like GSL, NAG or IMSL, but it contains various algorithms useful
for dynamics simulation and 3D geometry computation."
- EPIC
- Software - Java
Oceanographic and meterological data analysis software libraries
- Mirage
"Mirage is a Java-based software tool for exploratory analysis
and visualization of images and numerical vectors from an arbitrary
application domain. The tool shows projected images of points,
point classes, or proximity structures in one, two, or higher
dimensional subspaces, in linked views of tables, histograms,
scatter plots, parallel coordinate plots, graphs, and trees, and
over image or hypertext backgrounds. It also facilitates flexible
plot configuration, manual or automatic classification, and intuitive
graphical querying. Analysis and visualization operations are
controlled by a small, interpreted command language. "
Math
Packages
- JMathTools
- "collection of independant packages designed to fit common
engineering/scientific computing needs For now, JMathTools contains:
- JUMP
- "Java Ultimate Math Package". "
- Java-based extensible high-precision math package. Includes
support for computations based on fractions. Support is included
for converting to floating point numbers and BigDecimals.
- API
Documentation (Vers.0.5)
- JAMA
: A Java Matrix Package
This NIST library "is a basic linear algebra package for
Java. It provides user-level classes for constructing and manipulating
real, dense matrices. It is meant to provide sufficient functionality
for routine problems, packaged in a way that is natural and understandable
to non-experts. It is intended to serve as the standard matrix
class for Java, ..."
- Matrix Toolkits for
Java (MTJ)
"The Matrix Toolkits for Java (MTJ) is a comprehensive collection
of matrix datastructures, linear solvers (direct and iterative),
least squares methods, eigenvalue- and singular value decompositions.
MTJ is designed to be used as a library for developing numerical
applications, both for small and large scale computations..."
- javax.vecmath
in Java3D
API
Provides a number of vector and matrix classes.
Random
Number Generation
- RngPack
- "RngPack is a pseudorandom number generator package for
Java. Pseudorandom means that the "random" numbers are generated
by a deterministic mathematical process, not by a fundamentally
random physical process such as radioactive decay or Johnson noise.
RngPack contains base classes that add value to random number
generators, four research grade generators, as well as a wrapper
for Java's built in random number generator and a demonstration
application"
- SSJ:
Stochastic Simulation in Java
SSJ is a Java library for stochastic simulation, developed in
the Département d'Informatique et de Recherche Opérationnelle
(DIRO), at the Université de Montréal. It provides facilities
for generating uniform and nonuniform random variates, computing
different measures related to probability distributions, performing
goodness-of-fit tests, applying quasi-Monte Carlo methods, collecting
(elementary) statistics, and programming discrete-event simulations
with both events and processes.
- randomX
package for Java
"an upward compatible superset of the standard Java API class
java.util.Random. Unlike the standard Random class, randomX defines
an abstract superclass which supports derived classes based on
a variety of random and pseudorandom byte stream generators. The
derived class need only supply methods to construct a new generator
and return successive bytes; randomX provides all the higher level
functionality of the standard Java Random class. (A derived class
is, of course, free to override randomX's implementation of the
higher level methods, where appropriate.)..."
Most recent update: Nov. 19, 2005
|