There are two types of Java programming language application programming interfaces (APIs):

  • The official core Java API, contained in the Android (Google), SE (OpenJDK and Oracle), MicroEJ. These packages (java.* packages) are the core Java language packages, meaning that programmers using the Java language had to use them in order to make any worthwhile use of the Java language.
  • Optional APIs that can be downloaded separately. The specification of these APIs are defined according to many different organizations in the world (Alljoyn, OSGi, Eclipse, JCP, E-S-R, etc.).

The following is a partial list of application programming interfaces (APIs) for Java.

APIs

NameAcronymDescription and Version HistoryAvailable from
Java Advanced ImagingJAIA set of interfaces that support a high-level programming model allowing to manipulate images easily.
Association for the standardization of embedded platformsE-S-R consortium
Java Data ObjectsJDOA specification of Java object persistence.
Android APIGoogle
JavaHelpA full-featured, extensible help system that enables you to incorporate online help in applets, components, applications, operating systems, and devices.
Java Media FrameworkJMFAn API that enables audio, video and other time-based media to be added to Java applications and applets.
Java Naming and Directory InterfaceJNDIAn API for directory services.
Jakarta PersistenceJPAA specification for object-relational mapping.
Java Speech APIJSAPIThis API allows for speech synthesis and speech recognition.
Java 3DJ3DA scene graph-based 3D API.
Java OpenGLJOGLA wrapper library for OpenGL.
Java USB for Windows(none)A USB communication of Java applications
RestFB(none)Facebook API wrapper in Java.
Twitter4j(none)Java library for the Twitter API
Discord Java APIJDAJava library for the Discord API
MixinSpongePoweredThis library adds ability to change existing code
Wikipedia4jllmjavaIt's a library that you can use to search and retrieve documents from Wikipedia
OshioshiLibrary for working with Computer components and their parameters
GuavaGoogleA set of core Java libraries for collections, caching, primitives support, and more.
Apache CommonsApacheA collection of reusable Java components, including utilities for collections, math, IO, and more.
Log4jApacheA widely used Java logging library.
JUnitJUnitA widely used testing framework for Java.
Caffeine(none)A high-performance caching library for Java.
Lombok(none)A Java library that reduces boilerplate code with annotations.
SLF4J(none)A simple logging facade for Java, often used with Logback or Log4j.
Retrofit(none)A type-safe HTTP client for Java and Android.
OkHttpSquareAn HTTP client for Java with features like connection pooling and GZIP compression.
GsonGoogleA library for converting Java objects to JSON and back.
JacksonFasterXMLA high-performance JSON processing library.
KryoEsotericSoftwareA fast and efficient object graph serialization framework.
Apache KafkaApacheA distributed event streaming platform.
Netty(none)An asynchronous event-driven network application framework.
Vert.xEclipseA reactive toolkit for building distributed applications.
Spring FrameworkSpringA powerful framework for building Java applications.
Micronaut(none)A lightweight framework for building microservices and cloud-native apps.
Hibernate(none)A powerful ORM (Object-Relational Mapping) framework.
Forge(none)A popular Minecraft modding API for Java Edition.
NeoForge(none)A community-driven fork of Forge for Minecraft modding.
Fabric(none)A lightweight, modular Minecraft modding toolchain.
Quilt(none)A community-driven fork of Fabric with additional features.
NameAcronymJava package(s) that contain the API
Jakarta ActivationJAFjakarta.activation
Jakarta Mail(none)jakarta.mail
Jakarta MessagingJMSjakarta.jms
Jakarta FacesJSFjakarta.faces
NameAcronymAvailable from
Jakarta XML RPCJAX-RPCand
XQuery API for JavaXQJand
NameAcronymAvailable from
Connected Limited Device ConfigurationCLDCReference implementation is
Java Telephony APIJTAPI
STM32 Java technologySTM32Java
MicroEJ embedded platformMicroEJ

Following is a very incomplete list, as the number of APIs available for the Java platform is overwhelming.

Rich client platforms

Office_compliant libraries

Compression

  • LZMA SDK, the Java implementation of the SDK used by the popular 7-Zip file archive software ()

JSON

Game engines

Real-time libraries

Real time Java is a catch-all term for a combination of technologies that allows programmers to write programs that meet the demands of real-time systems in the Java programming language.

Java's sophisticated memory management, native support for threading and concurrency, type safety, and relative simplicity have created a demand for its use in many domains. Its capabilities have been enhanced to support real time computational needs:

  • Java supports a strict priority based threading model.
  • Because Java threads support priorities, Java locking mechanisms support priority inversion avoidance techniques, such as priority inheritance or the priority ceiling protocol.

To overcome typical real time difficulties, the Java Community introduced a specification for real-time Java, JSR001. A number of implementations of the resulting Real-Time Specification for Java (RTSJ) have emerged, including a reference implementation from Timesys, IBM's WebSphere Real Time, Sun Microsystems's Java SE Real-Time Systems,[1] Aonix PERC or JamaicaVM from aicas.

The RTSJ addressed the critical issues by mandating a minimum (only two) specification for the threading model (and allowing other models to be plugged into the VM) and by providing for areas of memory that are not subject to garbage collection, along with threads that are not preempt able by the garbage collector. These areas are instead managed using region-based memory management.

Real-Time Specification for Java

The Real-Time Specification for Java (RTSJ) is a set of interfaces and behavioral refinements that enable real-time computer programming in the Java programming language. RTSJ 1.0 was developed as JSR 1 under the Java Community Process, which approved the new standard in November, 2001. RTSJ 2.0 is being developed under JSR 282. A draft version is available at JSR 282 JCP Page. More information can be found at RTSJ 2.0

Windowing libraries

Physics libraries

  • JBox2D
  • JBullet
  • dyn4j

See also

External links