# PL/Java

> implementation of the Java programming language for PostgreSQL database systems

**Wikidata**: [Q30973761](https://www.wikidata.org/wiki/Q30973761)  
**Source**: https://4ort.xyz/entity/pl-java

## Summary
PL/Java is a procedural programming language and plug-in that implements the Java programming language for PostgreSQL database systems. It is designed to enable the use of Java for writing stored procedures within the database environment. The project is open-source, distributed under the 3-clause BSD License.

## Key Facts
- **Entity Type:** PL/Java is classified as a domain-specific language, a procedural programming language, and a plug-in.
- **Primary Use:** It is utilized for writing stored procedures in PostgreSQL.
- **Base Language:** It is a dialect of the Java programming language (inception 1995).
- **License:** The software is distributed under the 3-clause BSD License.
- **Source Repository:** The code is hosted on GitHub at `github.com/tada/pljava`.
- **Official Website:** Documentation and information are available at `tada.github.io/pljava/`.
- **Latest Recorded Version (in source):** Version 1.6.0 (released 2020-10-19) and Version 1.5.8 (released 2021-09-27) are among the versions listed.
- **Google Knowledge Graph ID:** `/g/11df0x7t78`.

## FAQs
### Q: What is the primary function of PL/Java?
A: PL/Java allows developers to write stored procedures and database logic using the Java programming language within PostgreSQL database systems.

### Q: Under what license is PL/Java distributed?
A: PL/Java is distributed under the 3-clause BSD License, an open-source license.

### Q: Where can the source code for PL/Java be found?
A: The source code repository is located on GitHub at `https://github.com/tada/pljava`.

### Q: What programming paradigm does PL/Java follow?
A: It follows the procedural programming paradigm, implementing Java for database-specific tasks.

## Why It Matters
PL/Java serves as a critical bridge for integrating the Java ecosystem with the PostgreSQL database environment. By allowing Java to be used as a procedural language, it enables developers to leverage existing Java libraries, tools, and expertise when building complex database logic, rather than relying solely on standard SQL or other native procedural languages.

This capability is particularly significant for organizations that standardize on Java for their application stack, as it allows for a unified language approach across both the application layer and the database layer. Its implementation as a plug-in ensures that the database can be extended with Java's capabilities without compromising the modular architecture of PostgreSQL. The availability of a user manual and active versioning (spanning from 1.5.0 in 2016 to 1.6.0 in 2020) indicates a maintained and reliable tool for database developers seeking to utilize object-oriented programming features within their stored procedures.

## Notable For
- **Language Integration:** It is a distinct implementation of Java specifically tailored for the PostgreSQL architecture.
- **Extensibility:** It functions as a plug-in, extending the functional capabilities of the database server.
- **Open Source Licensing:** It utilizes the permissive 3-clause BSD License, facilitating wide adoption and modification.
- **Procedural Capability:** It brings the procedural programming paradigm to PostgreSQL via the Java language.

## Body
### Technical Definition
PL/Java is defined as an implementation of the Java programming language designed specifically for PostgreSQL database systems. Structurally, it is identified as a domain-specific language (DSL) and a plug-in component. It operates as a dialect of computer language derived from Java. Its programming paradigm is categorized as procedural programming, allowing for the execution of sequential instructions and logic flow within the database.

### Core Functionality
The primary utility of PL/Java is the creation of **stored procedures**. By installing this extension, database administrators and developers can write functions and triggers in Java that execute directly on the database server. This allows for complex data manipulation and logic processing to occur closer to the data, potentially reducing network overhead for data-intensive applications.

### Licensing and Governance
The project is governed by the **3-clause BSD License**. This license permits users to use, modify, and distribute the software with minimal restrictions, requiring only the retention of the copyright notice.

### Version History and Development
The development of PL/Java is documented through a series of releases, indicating ongoing maintenance and feature additions. The project maintains a public source code repository. Key release milestones found in the records include:

- **Version 1.5.0:** Released on March 29, 2016.
- **Version 1.6.0:** Released on October 19, 2020.
- **Version 1.5.8:** Released on September 27, 2021.

The repository structure suggests that development has been active on multiple tracks, maintaining updates for the 1.5.x series while releasing the 1.6.x versions.

### Resources
- **Official Website:** `https://tada.github.io/pljava/`
- **User Manual:** Available in English at `https://tada.github.io/pljava/use/use.html`
- **Source Code:** Hosted on GitHub (`github.com/tada/pljava`), with repository tracking starting around January 12, 2013.

## References

1. [Source](https://tada.github.io/pljava/licenses.html)
2. [Release 1.5.0. 2016](https://github.com/tada/pljava/releases/tag/V1_5_0)
3. [Release 1.5.1. 2018](https://github.com/tada/pljava/releases/tag/V1_5_1)
4. [Release 1.5.2. 2018](https://github.com/tada/pljava/releases/tag/V1_5_2)
5. [Release 1.5.3. 2019](https://github.com/tada/pljava/releases/tag/V1_5_3)
6. [Release 1.5.4. 2019](https://github.com/tada/pljava/releases/tag/V1_5_4)
7. [Release 1.5.5. 2019](https://github.com/tada/pljava/releases/tag/V1_5_5)
8. [Release 1.5.6. 2020](https://github.com/tada/pljava/releases/tag/V1_5_6)
9. [Release 1.5.7. 2020](https://github.com/tada/pljava/releases/tag/V1_5_7)
10. [Release 1.5.8. 2021](https://github.com/tada/pljava/releases/tag/V1_5_8)
11. [Release 1.6.0. 2020](https://github.com/tada/pljava/releases/tag/V1_6_0)
12. [Release 1.6.1. 2020](https://github.com/tada/pljava/releases/tag/V1_6_1)
13. [Release 1.6.2. 2020](https://github.com/tada/pljava/releases/tag/V1_6_2)
14. [Release 1.6.3. 2021](https://github.com/tada/pljava/releases/tag/V1_6_3)
15. [Release 1.6.4. 2022](https://github.com/tada/pljava/releases/tag/V1_6_4)
16. [Release 1.6.5. 2023](https://github.com/tada/pljava/releases/tag/V1_6_5)
17. [Release 1.6.6. 2023](https://github.com/tada/pljava/releases/tag/V1_6_6)
18. [Release 1.6.7. 2024](https://github.com/tada/pljava/releases/tag/V1_6_7)
19. [Release 1.6.8. 2024](https://github.com/tada/pljava/releases/tag/V1_6_8)
20. [Release 1.6.9. 2025](https://github.com/tada/pljava/releases/tag/V1_6_9)
21. [Release 1.6.10. 2025](https://github.com/tada/pljava/releases/tag/V1_6_10)