List of Java APIs

{{Short description|none}}

{{Multiple issues|

{{Citation style|date=December 2017|details=Violates Wikipedia:External links: "Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article."}}

{{more citations needed|date=December 2017}}

}}

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

class="wikitable" style="text-align: centre"
Name

! Acronym

! Description and Version History

! Available from

Java Advanced Imaging

| JAI

| A set of interfaces that support a high-level programming model allowing to manipulate images easily.

|

Association for the standardization of embedded platforms

| E-S-R consortium

| [http://www.e-s-r.net here]

Java Data Objects

| JDO

| A specification of Java object persistence.

Android API

| Google

| [https://developer.android.com here]

JavaHelp

|

| A full-featured, extensible help system that enables you to incorporate online help in applets, components, applications, operating systems, and devices.

| [https://javaee.github.io/javahelp/ available here]

Java Media Framework

| JMF

| An API that enables audio, video and other time-based media to be added to Java applications and applets.

|

Java Naming and Directory Interface

| JNDI

| An API for directory services.

Jakarta Persistence

| JPA

| A specification for object-relational mapping.

| [https://jakarta.ee/specifications/persistence/ available here]

Java Speech API

| JSAPI

| This API allows for speech synthesis and speech recognition.

|

Java 3D

| J3D

| A scene graph-based 3D API.

| [https://web.archive.org/web/20070611104000/https://java3d.dev.java.net/ available here]

Java OpenGL

| JOGL

| A wrapper library for OpenGL.

| [http://jogamp.org/ available here]

Java USB for Windows

| (none)

| A USB communication of Java applications

| [https://sourceforge.net/projects/javausbapiforwi/ available here]

RestFB

| (none)

| Facebook API wrapper in Java.

| [https://restfb.com available here]

Twitter4j

| (none)

| Java library for the Twitter API

| [http://twitter4j.org/en/index.html available here]

Discord Java API

| JDA

| Java library for the Discord API

| [https://github.com/DV8FromTheWorld/JDA available here]

Mixin

| SpongePowered

| This library adds ability to change existing code

| [https://github.com/SpongePowered/Mixin available here]

Wikipedia4j

| llmjava

| It's a library that you can use to search and retrieve documents from Wikipedia

| [https://github.com/llmjava/wikipedia4j available here]

Oshi

| oshi

| Library for working with Computer components and their parameters

| [https://github.com/oshi/oshi available here]

Guava

| Google

| A set of core Java libraries for collections, caching, primitives support, and more.

| [https://github.com/google/guava available here]

Apache Commons

| Apache

| A collection of reusable Java components, including utilities for collections, math, IO, and more.

| [https://commons.apache.org/ available here]

Log4j

| Apache

| A widely used Java logging library.

| [https://logging.apache.org/log4j/ available here]

JUnit

| JUnit

| A widely used testing framework for Java.

| [https://junit.org available here]

Caffeine

| (none)

| A high-performance caching library for Java.

| [https://github.com/ben-manes/caffeine available here]

Lombok

| (none)

| A Java library that reduces boilerplate code with annotations.

| [https://projectlombok.org available here]

SLF4J

| (none)

| A simple logging facade for Java, often used with Logback or Log4j.

| [https://www.slf4j.org available here]

Retrofit

| (none)

| A type-safe HTTP client for Java and Android.

| [https://square.github.io/retrofit/ available here]

OkHttp

| Square

| An HTTP client for Java with features like connection pooling and GZIP compression.

| [https://square.github.io/okhttp/ available here]

Gson

| Google

| A library for converting Java objects to JSON and back.

| [https://github.com/google/gson available here]

Jackson

| FasterXML

| A high-performance JSON processing library.

| [https://github.com/FasterXML/jackson available here]

Kryo

| EsotericSoftware

| A fast and efficient object graph serialization framework.

| [https://github.com/EsotericSoftware/kryo available here]

Apache Kafka

| Apache

| A distributed event streaming platform.

| [https://kafka.apache.org/ available here]

Netty

| (none)

| An asynchronous event-driven network application framework.

| [https://netty.io available here]

Vert.x

| Eclipse

| A reactive toolkit for building distributed applications.

| [https://vertx.io available here]

Spring Framework

| Spring

| A powerful framework for building Java applications.

| [https://spring.io/ available here]

Micronaut

| (none)

| A lightweight framework for building microservices and cloud-native apps.

| [https://micronaut.io available here]

Hibernate

| (none)

| A powerful ORM (Object-Relational Mapping) framework.

| [https://hibernate.org/ available here]

Forge

| (none)

| A popular Minecraft modding API for Java Edition.

| [https://files.minecraftforge.net/ available here]

NeoForge

| (none)

| A community-driven fork of Forge for Minecraft modding.

| [https://github.com/NeoForged/ available here]

Fabric

| (none)

| A lightweight, modular Minecraft modding toolchain.

| [https://fabricmc.net/ available here]

Quilt

| (none)

| A community-driven fork of Fabric with additional features.

| [https://quiltmc.org/ available here]

class="wikitable"
Name

! Acronym

! Java package(s) that contain the API

Jakarta Activation

| JAF

| jakarta.activation

Jakarta Mail

| (none)

| jakarta.mail

Jakarta Messaging

| JMS

| jakarta.jms

Jakarta Faces

| JSF

| jakarta.faces

class="wikitable"
Name

! Acronym

! Available from

Jakarta XML RPC

| JAX-RPC

| [https://jakarta.ee/specifications/xml-rpc/ here] and [https://github.com/eclipse-ee4j/jax-rpc-ri here]

XQuery API for Java

| XQJ

| [http://xqj.net/ here] and [http://jcp.org/en/jsr/detail?id=225 here]

class="wikitable"
Name

! Acronym

! Available from

Connected Limited Device Configuration

| CLDC

| Reference implementation is [http://java.sun.com/products/cldc/ available here]

Java Telephony API

| JTAPI

| [http://www.oracle.com/technetwork/java/jtapi-136088.html available here]

STM32 Java technology

| STM32Java

| [http://www.stm32java.com available here]

MicroEJ embedded platform

| MicroEJ

| [https://www.microej.com/ available here]

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 ([http://www.7-zip.org/sdk.html available here])

;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