

 To provide the most
comprehensive Java^{TM} library for the scientific
community.
 To create synergy between all
sciences (e.g. math, physics, sociology, biology, astronomy,
economics, etc.) by integrating them into a single architecture.
 To provide the best online
services (webstart) for scientific calculations and
visualizations.




 Implementation of Units of Measurement services.
 A
coordinates module compliant with
OGC/ISO
specifications for the development and deployment of geographic applications.
 A rigourous mapping of mathematical
structures
(e.g. Group, Ring, Field, VectorSpace ) to Java interfaces.
 A
linear algebra module, which includes a first (and I believe unique)
parameterized matrix
class capable of resolving linear system of equations involving
any kind of elements (e.g. Complex, ModuloInteger, RationalFunctions)
 A functions
module for symbolic calculations and analysis.
 Different types of numbers
such as real
numbers of arbitrary and guaranteed precision, or the always
exact rational
numbers.
 Support for exact or arbitrary precision
measurements
(also strongly typed).
 Support for Standard , Relativistic ,
HighEnergy , Quantum and Natural physical
models.
 A monetary module
for precisionguaranteed calculations and currencies conversions.




Tutorial and Code Examples
JScience is for:
 LowLevel Concurrency:
To take advantage of multicore processors automatically.
Our benchmark indicates that on a dualprocessors
our
Matrix<Float64> or Matrix<Complex> multiplications
are the fastest around (for a pure Java library).
 Stack allocation:
To reduce garbage collection, decrease memory footprint and increase scalability.
 RealTime Behavior and Compliance:
JScience can safely be used with
RTSJ VMs without resulting into memory clashes or illegal access exceptions.
 Persistency/Networking:
Fastest XML marshalling/unmarshalling around!
 Easy and typesafe configuration management with the Configurable class.
(e.g.
javolution.context.ConcurrentContext#MAXIMUM_CONCURRENCY to adjust concurrency)

JScience is composed of several OSGi bundles
(jsciencemathematics, jsciencephysics, etc.). These modules can also be used as standard java libraries.
Here are the benchmark results
on a DualCore CPU (T2050) @ 1.60 GHz running Windows XP.

JScience bundles are
free; permission to use, copy,
modify, and distribute these modules is freely granted, provided
that copyright notices are preserved. 



Packages/services to be added in 2012:
 org.jscience.mathematics.transforms (FFT)
 org.jscience.physics.nuclear
 org.jscience.mathematics.integration
 org.jscience.computing.geneticAlgorithms
 org.jscience.cognitive.neuralnetworks
 org.jscience.statistics.randomizers
 org.jscience.astronomy.ephemeris
 org.jscience.history.calendars
 org.jscience.chemistry.elements
 org.jscience.biology.molecules
 and more...
Feel free to let us know if you are interested in developping
new packages. It is very easy:
 Document if possible with use cases examples in the package description.
 Integrate with others packages (using physical units, mathematics numbers, functions etc..)
 License your code under the JScience BSD License.
 Conform to our Coding Standard
 Subsribe to the users@jscience.java.net mailing list
New packages are submitted through enhancement issues at
java.net and by attaching the source code to the issue. Then the code gets reviewed, hopefully approved and
integrated. 






 October 19, 2011: JScience 4.3.1
Bug fixed version; thanks to HansPeter Stoerr
 October 3, 2007: JScience 4.3/4.4
JavaWorld Article: Introduction to JSR275: Measures and Units
 Added Decimal [4.3.0] (renamed from DecimalMeasure) [4.4.0]
 Added Vector [4.3.0] (renamed from VectorMeasure) [4.4.0]
 Fixed issues:
61 [4.3.1],
32,
33,
34,
38,
39,
41,
55,
58,
[4.3.0]
 August 27, 2007: JScience 4.2
JSR275 Draft Review Actions:
 Add conversion method to Measure class:
Measure.to(Unit<Q> unit)
 Add Measure factory method for
double[] and BigDecimal
 Add
SystemOfUnits class.
 Rename
Unit.getSystemUnit() to Unit.getStandardUnit()
 Provide convenience method
Unit.alternate(String)
 Add
MeasureFormat (with direct support for CompoundUnit)
 Provide
UnitFormat.getInstance() and UnitFormat.getUCUMInstance()
 Unit converters A and B are equals if
A.concatenate(B.inverse()) is identity.
 Unit.asType(Class) raises a ClassCastException when dimensions mismatch.
 June 12, 2007: JScience 4.1
Fixed Issue 52 (matrix multiplication) [4.1.2]
Upgraded to the latest Javolution V5.1 [4.1.1]
Added FloatingPoint numbers of fixed arbitrary precision
Reference implementation for the JSR275 : Measures and Units
Refactored package/classes to use singular form, org.jscience.physics.measure.Measure
renamed org.jscience.physics.amount.Amount (to avoid name clash with javax.measure ).
Support for dense or sparse vectors.
Our benchmark indicates that on
dualcore processors our Matrix<Float64> or Matrix<Complex> multiplications
are the fastest around (for a pure Java library), by about 2x!
 October 5, 2006: JScience 3.2
JSR275 new packaging (javax.measure.*)
Binary for 1.4 (created using Retroweaver)
 July 15, 2006 : JScience 3.1.6
Updated/corrected physical constants
(CODATA 2002) [3.1.3]
Added RationalConverter for exact unit conversion [3.1.0]
Automatic removal of terms with zero coefficients for polynomials [3.1.0]
Fixed defects 27, 28, 29 (java.net issues database) [3.1.0]
 March 2, 2006 : JScience 3.0
Major upgrade of the library to leverage JDK 1.5 class paramaterization capabilities.
Rigourous mapping of mathematical structures (e.g. Group, Ring, Field, etc.)
Fixed defects 17, 19, 20, 21, 25 (java.net) [3.0.2]
Added new quantities for flow rate and viscosity [3.0.1]
 October 11, 2005 : JScience 2.0
Javolution classes included into the JScience binary (.jar)
 January 26, 2005: JScience 1.0
Upgrade to Javolution 2.2 [1.0.3]
Upgrade to Javolution 2.0 [1.0.2]
Upgrade to Javolution 1.1 [1.0.1]
Spinoff of Java(TM) Addition to Default Environment [1.0.0]




