Pragmatica is a set of necessary libraries to write Java application in a modern style. At present, it consists of the following components:
- Pragmatica Core - minimal set of classes for Pragmatic Functional Java style.
- Proactor - implementation of the low level infrastructure for fast task scheduler and io_uring - based asynchronous I/O.
- Async I/O - implementation of Promise-based asynchronous API and basic utility classes.
Together these libraries provide all basic components necessary for completely asynchronous I/O operations, including network communication and file processing.
At present Pragmatica does not have higher level elements like support for SSL/TLS or HTTP protocol.
Only minimal set of I/O operations is supported at the moment. Support for remaining operations available via io_uring API is planned for next releases.
Beside Pragmatic Functional Java following articles might help to understand motivation and various elements of the whole approach.
- We should write Java code differently describes core considerations behind the whole approach.
- Beautiful World of Monads explains basic building blocks used across the whole Pragmatica - monads.
- The Backend Revolution or Why io_uring Is So Important tries to explain importance of the io_uring API, present in recent Linux kernels. This API is the foundation of the Async I/O part of the Pragmatica.
- Pragmatica uses Java 17. There are no plans to support older versions of Java.
- Pragmatica Core has no specific requirements.
- Pragmatica Proactor and Pragmatica Async I/O components require Linux kernel version at least 5.6. Best results could be achieved with kernel versions 5.16 and up. Other operating systems are not supported and there are no plans for such a support.
Note that if you want/need to use other operating system to work on Pragmatica code or build binaries, you can use Pragmatica Builder Image.