Java APIs, Libraries & Toolkits
(figure reproduced from Java Platform Standard Edition 8 Documentation; web site; see how it was expanded compared with Java SE 5.0)
-
Java
-
Java Platform, Standard Edition (Java SE) 16, 11 LTS, 8.
JDK Mission Control (JMC). Java Advanced Management Console (AMC).
Java Platform, Standard Edition Documentation - Java Platform, Enterprise Edition (Java EE)
- Java Embedded: Java Platform, Micro Edition (Java ME) & Java Card
-
Java Platform, Standard Edition (Java SE) 16, 11 LTS, 8.
-
Oracle Open JDK
For end users and developers looking for free JDK version, Oracle OpenJDK offers the same features and performance as Oracle JDK under the GPL license.
All Java Development Kit (JDK) & JDK Mission Control (JMC) builds.
Oracle Customers and ISVs targeting Oracle LTS releases: Oracle JDK is Oracle's supported Java SE version for customers and for developing, testing, prototyping or demonstrating your Java applications. -
Java Platform Migration Guide - Version 1.3 to 5.0 (PDF)
White Paper by Sun Microsystems, for J2SE. -
Apache Commons
The Commons Proper - A repository of reusable Java components. Originated from Jakarta project, Apache Commons is a big complement to the Java SE API, essential for common tasks not covered by the standard Java API. Before start implementing some basic programming feature which you did not find in Java API, look if it already exists in Apache Commons, avoid “reinventing the wheel”. Attributes, BeanUtils, Betwixt, Chain, CLI, Codec, Collections, Configuration, Daemon, DBCP, DbUtils, Digester, Discovery, EL, Email, FileUpload, HttpClient, IO, Jelly, Jexl, JXPath, Lang, Latka, Launcher, Logging, Math, Modeler, Net, Pool, Primitives, Resources, Transaction, Validator, VFS.
Using the Jakarta Commons, Part 1, article by Vikram Goyal, ONJava, Jun/2003. Part 2, Part 3 (Jul/2003).
See also: Java Projects: Apache.
Log
-
Apache Commons Logging
Formerly Jakarta Commons Logging (JCL). Commons Logging provides a Log interface and LogFactory that is intended to be both light-weight implementation and an independent abstraction of other logging toolkits, such as JDK logging API (JSR-47) and Log4J. De facto standard for logging API.
Commons logging User Guide, Technology Guide. Its use is as simple as these two steps: create a class log attribute and log messages. -
Log4j Logging Services
A reliable, fast and extensible logging library for Java. By Apache Software Foundation.
-
HotWork Solution - Log4j
Log4j User Guide - In Portuguese. - The complete log4j manual (in PDF format) ($)
- Log4J Tutorial, by Ashley J.S Mills, 2002, University Of Birmingham, UK.
- Log4j delivers control over logging, by Ceki Gülcü, JavaWorld Magazine, November 2000.
-
HotWork Solution - Log4j
-
Java Logging APIs
The Java Logging APIs introduced in J2SE 1.4, in package java.util.logging.
- An Introduction to the Java Logging API, by Brian R. Gilstrap, 19/jun/2002, O'Reilly ONJava.com.
-
Lumberjack - The Java Logging API for JDKs prior to 1.4
The Lumberjack project provides an open source (covered by the GNU Lesser Public License) implementation of the logging APIs first introduced in JDK 1.4 that will work for JDK 1.2 and 1.3. -
Acelet - Super Logging: Audit Log & Limpid Log
Super Log combines Limpid Log and Audit Log under one roof as logging system for Java SE and EE, to recording events and messages. It is written entirely in Java and dynamically re-configurable at runtime. Audit Log and Limpid Log are free, open source software, under GNU GPL v2. -
Effective logging practices ease enterprise development
By Charles Chan, Ambrose Software, 09 Aug 2005, IBM developerWorks. - Google Directory: Java Class Libraries: Logging
Concurrent Programming
-
Lesson - Concurrency: Doing Two or More Tasks At Once
In Java Tutorial on-line, Trail: Essential Java Classes. -
Java Parallel Processing Framework
JPPF is an open source Grid Computing platform written in Java that makes it easy to run applications in parallel, and speed up their execution by orders of magnitude. See also Java Parallel Processing Framework 1.4, by Laurent Cohen, 2008-08-23, for Javalobby DZone. -
Writing multithreaded Java applications
Learn to avoid problems common in concurrent programming. By Alex Roetter, software engineer, 01 Feb 2001. IBM developerWorks on Java technology.
Java theory and practice: Thread pools and work queues, by Brian Goetz.
IBM Multithreaded Java programming forum. -
Java Threads articles by Brian Goetz
At programming-x.com. -
Thread: State Diagram [In Portuguese]
Image depigting the diagram of possible states and transitions between them, for Java threads. By M�rcio d'�vila. The diagram presents only the normal flow of transitions, don't including interrupt situations, which drive to theInterruptedException
exception. -
Java Thread Primitive Deprecation
Why are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit deprecated? Explanation in Java 2 Platform Standard Edition (J2SE) 5.0 Guide. - Book:
Java Threads (358 pp.)
Authors: Scott Oaks, Henry Wong. Publisher: O'Reilly Media, 3rd Edition, September 2004. ISBN: 0-596-00782-5. - Book:
Java Thread Programming (528 pp.)
Author: Paul Hyde. Publisher: Sams, August 1999. ISBN: 0672315858. -
J2SE 5.0 Concurrency Utilities
Packages java.util.concurrent, java.util.concurrent.atomic, java.util.concurrent.locks. Concurrency Utilities Overview.
Refer to JSR 166. -
Concurrent Programming Package
Package util.concurrent, by Doug Lea, author of book Concurrent Programming in Java. Superseded by JSR-166, which have been released as part of J2SE 5.0 ("Tiger"), mostly in new package java.util.concurrent. - Book:
Concurrent Programming in Java: Design Principles and Patterns (411 pp.)
Author: Doug Lea. Publisher: Addison-Wesley, 2nd Edition, October 1999. ISBN: 0-201-31009-0.
Sun Java Series. -
Concurrent Programming Using Java
By Stephen J. Hartley. -
Java Concurrency and Threads
References at Software Technologies, SwTech.com.
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). -
RTSJ.org - Real-Time for Java Expert Group
RTSJ java.net 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).
Internationalization
-
Internationalization: Understanding Locale in the Java Platform
Article by John O'Conner, September 20, 2005, Sun Developer Network (SDN). -
Core Java Internationalization
Sun Developer Network (SDN) - Core Java. Java Internationalization FAQ. - See also: Tools: APIs: Internationalization
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
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
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 uncommons.org 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
-
Java Platform, Micro Edition (Java ME)
Formerly: Java 2 Platform, Micro Edition (J2ME). -
Crisp Wireless
Formerly Micro Java Network. -
SCMAD Certification Center
Helping You Pass the Sun Certified Mobile Application Developer (SCMAD) Certification. SCMAD Overview, SCMAD Objectives, Mock Exams, Study Guides, Study Notes, SCMAD Community, SCMAD Experiences, J2ME Documentation, J2ME Tutorials, FREE J2ME Books, J2ME Glossary, J2ME FAQs, J2ME Examples, J2ME Tools, J2ME Resources, J2ME News. - Bill Day's Java ME Archive
-
J2me Forums
Discussion board for Java™ Micro Edition (Java ME) technology. Former J2me.org. - jGuru J2ME FAQ
- J2ME Software Repository
-
360Mobile.us
Mobile device technology and development. Former CoreJ2ME.com. -
MIDlog
MIDlog, a J2ME client for weblog systems. Remote blogging with Blogger.com, Movable Type and others.
Other
-
ffident - Java metadata extraction / file format identification library
This library identifies file format from their content. It works with magic numbers, like Unix file command. By Marco Schmidt. Free library distributed under the LGPL. Requires Java 1.4 or higher.
ffident at geocites. -
Antelmann.com Java Framework
Package of some useful Java projects, by Holger Antelmann, freely available on the basis of the GNU General Public License (GPL). Access to CDDB (FreeDB) Internet service, Strategy game programming, Network programming, Generally useful utility classes, among others.
Antelmann.com Downloads.