Java APIs, Libraries & Toolkits

Java SE 8.0
(figure reproduced from Java Platform Standard Edition 8 Documentation; web site; see how it was expanded compared with Java SE 5.0)


Concurrent Programming

Real-Time Programming

  • JSR 282: Real-time Specification for Java (RTSJ) version 1.1
    Evolution of JSR 1: Real-time Specification for Java (1.0).
  • - Real-Time for Java Expert Group
    RTSJ project.
    The Real-Time Specification for Java (PDF), by Greg Bollella et al., Addison-Wesley, 2000.
  • Java Se Real-Time
    The Sun Java Real-Time System 2.0 (Java RTS) is a substantially enhanced release of Sun's first conformant commercial implementation of the Real-Time Specification for Java (JSR-001). Implementations of the RTSJ make standard Java technology more deterministic and enable it to meet rigorous timing requirements for mission-critical real-time applications. Java RTS 2.0 is available for evaluation licensing.
  • Javolution
    Javolution: biblioteca para desenvolvimento de sistemas tempo-real (realtime) e embarcados (embedded). Javolution prov� um conjunto de classes de alto desempenho e com comportamento altamente tempo-determin�stico, para conformidade com ambiente tempo-real, cole��es e estruturas fundamentais, manipula��o de texto, E/S e XML. Traz tamb�m as classes Struct e Union para maior correspond�ncia com aplica��es C/C++. Introduz Contextos espec�ficos (para logging, performance, concorr�ncia, persist�ncia, seguran�a etc.) para separa��o de aspectos de programa��o.
    H� distribui��es da biblioteca Javolution para as plataformas Java ME CLDC 1.0+ e CLDC 1.1+, Java SE 1.4, 5 e 6, e gcj (GNU Compiler for Java). Javolution � software de c�digo aberto distribu�do sob licen�a BSD.
  • aicas - Realtime Java Technology
    Realtime Java Virtual Machine - JamaicaVM, object oriented software development environment, and analysis tools for safety critical systems.

Time & Date

  • JSR 310: Date and Time API
    This in-progress JSR will provide a new and improved date and time API for Java. Submited by Stephen Colebourne, creator of Joda-Time library.
    The main goal of JST-310 is to build upon the lessons learned from the first two APIs in Java SE (Date and Calendar) and on experience gained from the Joda-Time project, to provide a more advanced and comprehensive model for date and time manipulation.
    The new API will be targeted at all applications needing a data model for dates and times. This model will go beyond classes to replace Date and Calendar, to include representations of date without time, time without date, periods, durations, and intervals.
    Announcing JSR 310 - Date and Time API, Stephen Colebourne's Weblog, 30/jan/2007.
  • Joda Time
    By Stephen Colebourne. Joda-Time is an open-source project to provide a quality Java date and time API. Joda-Time is the de facto standard date and time library for Java prior to Java SE 8. Current interfaces and implementations include: DateTime (immutable replacement for JDK Calendar) and DateMidnight; LocalDate, LocalTime and LocalDateTime (no time zone); Chronology and DateTimeZone (ISO 8601 and other chronologies, calendar systems and time zones); Interval, Period and Duration (intervals and time periods); plus formatting and parsing.
    SourceForge Project: joda-time.
  • TimeAndMoney Java Code Library
    This is a project to develop code for manipulating basic concepts in recurring domains such as time and money. Use this open source Java code library to make key low-level domain logic more expressive, more maintainable, and less error-prone.
  • CalendarDate
    Simple, small and effective java date implementation.
  • ISO 8601
    ISO 8601 - international standard for representation of dates and times. From Wikipedia, the free encyclopedia.
    ISO 8601:2004(E) from ISO (ZIP-PDF, 228KB), Third edition 2004-12-01. ISO8601 Yahoo Groups (files).
    A summary of the international standard date and time notation, by Markus Kuhn.
    ISO 8601 - Links, by Hans-Jochen Vogel. dmoz Open Directory: ISO 8601.
    International Date Format Campaign (IDFC).


Scanners, Parsers, Syntatical and Lexical Analyzers

Java tools to creating from interpreters for expressions, macros and domain-specific languages (DSL), up to full compilers.

    ANTLR, ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.
    Getting started with ANTLR. ANTLR Documentation, ANTLR API (Java, C, Python C#, Objective-C), ANTLR FAQ and Articles.
    ANTLRWorks: The ANTLR GUI Development Environment.
    ANTLR Parser Generator pages by Ian Kaplan.
  • JavaCC
    JavaCC is a parser/scanner generator for java. JavaCC: Documentation Index - the JavaCC grammar file (.jj) syntax.
    The JavaCC FAQ, maintained by Theo Norvell at Memorial University of Newfoundland.
  • JFlex - The Fast Scanner Generator for Java
    JFlex is a lexical analyzer generator (also known as scanner generator) for Java, written in Java. It is also a rewrite of the very useful tool JLex developed by Elliot Berk at Princeton University. JFlex is designed to work together with the LALR parser generator CUP by Scott Hudson, and the Java modification of Berkeley Yacc BYacc/J by Bob Jamison. It can also be used together with other parser generators like ANTLR or as a standalone tool.
  • JLex
    JLex is a lexical analyzer generator, written for Java, in Java. JLex was developed by Elliot Berk at Princeton University. It is now maintained by C. Scott Ananian.
    See also FLEX Compiler Infrastructure, Program Analysis and Compilation Group at MIT.
  • CUP
    LALR Parser Generator in Java. By Scott Hudson, Frank Flannery, C. Scott Ananian. CUP is now maintained and improved at the Technical University of Munich.
    BYACC/J is a Java extension of the Berkeley v 1.8 YACC-compatible parser generator.
  • JEP - Java Math Expression Parser
    JEP is a Java library for parsing and evaluating mathematical expressions. With this package you can allow your users to enter an arbitrary formula as a string, and instantly evaluate it. JEP supports user defined variables, constants, and functions. A number of common mathematical functions and constants are included. By Singular Systems.
  • Java Expressions Library (JEL)
    JEL is the library for evaluating a simple single line expressions in Java.
  • See also: Tools: Scanners, Parsers, Syntatical and Lexical Analyzers

Scientific Programming

  • JScience
    Java tools and libraries for the advancement of sciences.
    Project vision: To provide the most comprehensive Java 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 on-line services (webstart) for scientific calculations and visualizations.
  • LinAlg API
    The LinAlg API provides classes and methods for linear Algebra i.g. for Vectors (2D and 3D), Matrices, Complex Numbers. Released under GPL v2 and CDDL licences. By Alexander Schunk (blog).
  • Uncommons Maths
    Random number generators and other mathematical utilities. By Project.
    A Java Programmer's Guide to Random Numbers - Part 1: Beyond java.util.Random; Part 2: Not just coins and dice, by Daniel Dyer, May 2008.
  • Colt
    Colt Project provides a set of Open Source Libraries for High Performance Scientific and Technical Computing in Java.
  • JAMA: A Java Matrix Package
    JAMA is a basic linear algebra package for Java. This software is a cooperative product of The MathWorks and the National Institute of Standards and Technology (NIST) which has been released to the public domain.
  • Java for Scientific Computing

Java ME - Mobile & Wireless