Skip to main content

Juneau Ecosystem

About​

Apache Juneau™ is a single cohesive Java ecosystem for marshalling Java objects to a wide variety of data formats and creating annotation-based REST end-to-end server and client APIs.

Key Features​

  • Universal Serialization - Marshal POJOs to 38 formats (26 in juneau-marshall, 12 RDF in juneau-marshall-rdf) from a single API: JSON (plus JSON5, JSONL, JSON5L, and JCS), XML, HTML, URL-Encoding, UON, OpenAPI, MessagePack, CBOR, BSON, YAML, TOML, HOCON, HJSON, CSV, INI, Markdown, MarkdownDoc, Parquet, Protobuf, Prototext, SSE, and PlainText, plus the 12 RDF variants (RDF/XML, RDF/XML-Abbrev, RDF/JSON, N-Triples, Turtle, N3, N-Quads, TriG, TriX, JSON-LD, RDF/Thrift, and RDF/Proto). SOAP envelopes (serialize only) are also supported.
  • End-to-End REST - Annotation-driven REST server and client that share a single API, with automatic Swagger/OpenAPI generation and self-documenting UIs
  • Transport-Agnostic REST Client - Pluggable adapters for Apache HttpClient 4.5/5.x, OkHttp, and Jetty 12, including HTTP/2 request/response multiplexing and server push
  • DTO Beans - Ready-made bean models for HTML5, Atom, HAL, JSON:API, JSON Patch, JSON Schema, OpenAPI v3, Swagger v2, RFC 7807 Problem Details, and MCP
  • Microservices - Lightweight, standalone microservices with embeddable Jetty 12 or Tomcat 10+, or Spring Boot integration
  • Configuration Management - Sophisticated configuration-file API (INI and YAML) with variable resolution
  • Bean-Centric Testing & Fluent Assertions - Powerful fluent-style assertion framework plus JUnit 5 extensions and test-time bean injection
  • Large-Dataset Streaming - BeanSupplier/BeanConsumer/BeanChannel and token/record streaming APIs for processing large datasets without loading all elements into memory; direct database integration via lifecycle methods (begin/acceptThrows/onError/complete)
  • Type Conversion - Lightweight, MarshallingContext-free converter framework with caching and broad type support
  • Model Context Protocol (MCP) - Built-in MCP server support for exposing REST resources to AI agents
  • Security - Content Security Policy (CSP) support, plus opt-in JWT, SAML 2.0, OAuth 2.0, and OpenID Connect authentication
  • No required dependencies - Core marshalling requires no external dependencies, making it ideal for uber-jars

Design Principles​

  • Cached and thread-safe - Bean metadata is cached and serializers are thread-safe, so one instance serves every request
  • Safe by default - Parsers are not susceptible to deserialization attacks
  • Lightweight - juneau-commons + juneau-marshall with no required external dependencies
  • No magic (KISS) - No auto-wiring, no code generation, no dependency injection — just add it to your classpath and use it
  • Exhaustively tested - Extensive test coverage with lots of up-to-date documentation and examples
  • Modern & portable - Requires Java 17+; all components are also packaged as stand-alone OSGi bundles

Ecosystem​

The Juneau ecosystem consists of the following parts, layered from the dependency-free core up to complete applications. Packaging, build tooling and the build's own test and distribution modules sit beside the layers rather than in them:

Maven ArtifactsDescriptionPrerequisites
juneau-core
juneau‑commonsCommon utilities and APIs used across the Juneau ecosystem (collections, I/O, reflection, settings, SVL, etc.)• None
juneau‑testFluent-style assertions, Bean-Centric Testing, and JUnit 5 extensions / test-time bean injection• JUnit 5
juneau‑configConfiguration File API• None
juneau‑marshallSerializers and parsers for JSON (various flavors), XML, SOAP envelopes (serialize only), HTML, URL-Encoding, UON, OpenAPI, MessagePack, CBOR, BSON, YAML, TOML, HOCON, HJSON, CSV, INI, Markdown, Parquet, Protobuf, Prototext, SSE, and PlainText• None
juneau‑marshall‑rdfSerializers and parsers for RDF/XML (various flavors), N3, NTriple, and Turtle• Apache Jena 5.x
juneau‑beanquery‑sqlShared JDBC BeanQuery context (dialect-agnostic)• None
juneau‑beanquery‑postgresPostgreSQL dialect for the shared JDBC BeanQuery context• None
juneau‑test‑utilsShared test infrastructure (commons-level; no juneau-marshall dependency)• None
juneau‑test‑marshall‑utilsMarshall-level shared test fixtures (bean tester, marshall-annotated POJOs, round-trip harness), used at test scope by downstream modules• None
juneau-bean
juneau‑bean‑atomDTO beans for the Atom 1.0 format• None
juneau‑bean‑commonShared DTO bean utilities and base types• None
juneau‑bean‑halDTO beans for HAL (Hypertext Application Language)• None
juneau‑bean‑html5DTO beans for HTML5 elements• None
juneau‑bean‑jsonapiDTO beans for the JSON:API format• None
juneau‑bean‑jsonpatchDTO beans for JSON Patch (RFC 6902)• None
juneau‑bean‑jsonrpcDTO beans for the JSON-RPC 2.0 envelope• None
juneau‑bean‑jsonschemaDTO beans for JSON Schema• None
juneau‑bean‑mcp‑v20250618DTO beans for the Model Context Protocol (MCP) revision 2025-06-18• None
juneau‑bean‑mcp‑v20260728DTO beans for the Model Context Protocol (MCP) revision 2026-07-28 (current)• None
juneau‑bean‑openapi‑v3DTO beans for OpenAPI v3• None
juneau‑bean‑rfc7807DTO beans for RFC 7807 Problem Details• None
juneau‑bean‑swagger‑v2DTO beans for Swagger / OpenAPI v2• None
juneau-rest (server)
juneau‑rest‑commonREST APIs common to client and server side• None
juneau‑rest‑common‑classicREST Common — Apache HttpClient 4.5-compatible facades• Apache HttpClient 4.5
juneau‑rest‑serverREST Servlet API• Servlet 5.0+
juneau‑rest‑server‑rdfREST Server RDF content-type support• Apache Jena 5.x
juneau‑rest‑server‑mcpModel Context Protocol endpoint (revision-neutral core)• None
juneau‑rest‑server‑mcp‑v20250618MCP endpoint adapter for revision 2025-06-18• None
juneau‑rest‑server‑mcp‑v20260728MCP endpoint adapter for revision 2026-07-28 (current)• None
juneau‑rest‑server‑reactiveJDK-native Flow.Publisher return-type support• None
juneau‑rest‑server‑reactive‑reactorReactor / RxJava 3 return-type bridge (opt-in)• reactor-core or rxjava
juneau‑rest‑server‑view‑jspJSP view-rendering bridge• Servlet container with JSP support
juneau‑rest‑server‑view‑thymeleafThymeleaf view-rendering bridge• Thymeleaf
juneau‑rest‑server‑view‑mustacheMustache view-rendering bridge• Mustache.java
juneau‑rest‑server‑view‑freemarkerApache FreeMarker view-rendering bridge• FreeMarker
juneau‑rest‑server‑springbootREST Spring Boot integration• Spring Boot 3.x
juneau‑rest‑mockREST Testing API• None
juneau-rest (auth and observability)
juneau‑rest‑server‑auth‑jwtJWT bearer-token validation (opt-in)• nimbus-jose-jwt
juneau‑rest‑server‑auth‑samlSAML 2.0 assertion validation (opt-in)• OpenSAML
juneau‑rest‑server‑auth‑oauthOAuth 2.0 / OIDC validation and client flows (opt-in)• Nimbus SDK
juneau‑rest‑server‑auth‑oidc‑rpOpenID Connect Relying Party login (opt-in)• Nimbus SDK
juneau‑rest‑auth‑oauth‑flowRole-neutral OAuth 2.0 grant-flow and OIDC discovery primitives (opt-in)• Nimbus SDK
juneau‑rest‑server‑metrics‑micrometerMicrometer MetricsRecorder bridge (opt-in)• micrometer-core
juneau‑rest‑server‑tracing‑otelOpenTelemetry TracerHook bridge (opt-in)• opentelemetry-api
juneau‑rest‑server‑management‑loggingManagement and structured logging support: dynamic log levels, log tail, and audit logging (opt-in)• None
juneau-rest (console, views and terminal)
juneau‑rest‑server‑console‑uiThemeable admin-console chrome: engine-agnostic theme, tags, and CSS (opt-in)• None
juneau‑rest‑server‑console‑ui‑freemarkerFreeMarker delivery for the console chrome (<@page>, <@card>) (opt-in)• FreeMarker
juneau‑rest‑server‑console‑ui‑freemarker‑testsUnit tests for the FreeMarker console chrome (build-only; not published)• None
juneau‑rest‑server‑datatablesDataTables server-side-processing query protocol adapter (opt-in)• None
juneau‑rest‑server‑viewsRich DataTables view toolkit: declarative view definitions plus a client runtime (opt-in)• None
juneau‑rest‑server‑views‑markdownOptional markdown-to-HTML rendering for the views toolkit (opt-in)• commonmark-java
juneau‑rest‑server‑widgetsDeclarative widget beans (dialogs, forms, action bars, badges) (opt-in)• None
juneau‑run‑reportTerminal-view events and test-report readers (Surefire, JUnit XML, Jest, Playwright); no REST server dependency (opt-in)• None
juneau‑rest‑server‑terminalTerminal region: a command's raw output rendered by xterm.js, fed by a byte-offset endpoint (opt-in)• None
juneau‑rest‑server‑busServer half of the console message bus: ServerBus, BusPolicy, and the session POST and SSE stream (opt-in)• None
juneau‑rest‑server‑bus‑websocketJakarta WebSocket transport for the console message bus; the servlet container supplies the WebSocket implementation (opt-in)• Jakarta WebSocket 2.2 container
juneau‑rest‑server‑terminal‑busBridge that connects terminal input to the server message bus (opt-in)• None
juneau-rest (client)
juneau‑rest‑clientTransport-agnostic REST Client API (JDK HttpClient by default); see Choosing a REST Client• None
juneau‑rest‑client‑classicClassic (Apache HttpClient 4.5-based) REST Client API• Apache HttpClient 4.5
juneau‑rest‑client‑apache‑httpclient‑45Apache HttpClient 4.5 transport adapter• Apache HttpClient 4.5
juneau‑rest‑client‑apache‑httpclient‑50Apache HttpClient 5.x transport adapter• Apache HttpClient 5.x
juneau‑rest‑client‑okhttpOkHttp 5.x transport adapter• OkHttp 5.x
juneau‑rest‑client‑jettyJetty 12 HttpClient transport adapter• Jetty 12
juneau‑rest‑client‑mcpModel Context Protocol client core (revision-neutral)• None
juneau‑rest‑client‑mcp‑v20250618MCP client adapter for revision 2025-06-18• None
juneau‑rest‑client‑mcp‑v20260728MCP client adapter for revision 2026-07-28 (current)• None
juneau‑rest‑client‑mcp‑authMCP client-side OAuth 2.1 token acquisition (opt-in)• Nimbus SDK
juneau-microservice
juneau‑microserviceMicroservice base framework• None
juneau‑microservice‑jettyJetty-based microservice implementation• Jetty 12
juneau‑microservice‑tomcatTomcat-based microservice implementation• Tomcat 10+
juneau‑microservice‑testJUnit 5 @MicroserviceTest extension: boots a whole microservice on an ephemeral port for integration tests, with @TestBean mock injection• JUnit 5
juneau‑microservice‑examplesExample and demo REST resources for the microservice (not shipped as a framework artifact)• None
juneau-sc
juneau‑sc‑serverServer Config Server API• Servlet 5.0+
juneau-secret-macos-keychain
juneau‑secret‑macos‑keychainOpt-in SecretStore backed by the macOS security keychain CLI• macOS
juneau-petstore
juneau‑petstoreComplete petstore showcase application (aggregator for the modules below)• Servlet 5.0+
• Spring Boot 3.x (springboot deployment only)
juneau‑petstore‑corePetstore shared domain model and REST resources• None
juneau‑petstore‑jettyPetstore Microservice (Jetty) deployment• Jetty 12
juneau‑petstore‑springbootPetstore Spring Boot deployment• Spring Boot 3.x
juneau-examples
juneau‑examples‑coreCode examples and tutorials• None
juneau‑examples‑mcpRunnable example of a Juneau MCP server and client (revision 2026-07-28)• None
juneau-shaded (packaging)
juneau‑shaded‑allComplete framework in one JAR
Ideal for Bazel and simplified dependency management
• Servlet API 6.1+
• Apache HttpClient 5.x
juneau‑shaded‑coreCore marshalling and configuration in one JAR• None
juneau‑shaded‑rest‑clientCore + REST client functionality• Apache HttpClient 5.x
juneau‑shaded‑rest‑serverCore + REST server functionality• Servlet API 6.1+
juneau‑shaded‑rest‑server‑springbootREST server + Spring Boot integration• Spring Boot 3.x
juneau-bundles (packaging)
juneau‑microservice‑jetty‑bundleAll-in-one Jetty microservice bundle• Jetty 12
juneau‑microservice‑tomcat‑bundleAll-in-one Tomcat microservice bundle• Tomcat 10+
juneau‑springboot‑bundleAll-in-one Spring Boot bundle• Spring Boot 3.x
juneau‑observability‑otlp‑bundleOTLP observability bundle — Micrometer + OpenTelemetry• micrometer-core
• opentelemetry-api
juneau-bom (packaging)
juneau‑bomBill of Materials POM: import it and drop explicit versions from your Juneau dependencies• None
juneau-terminal (build tooling)
juneau‑runBuild tooling, not a library dependency: the stdlib-only juneau_terminal.py wrapper that adds terminal-protocol markers and board output to Maven, pytest, Playwright, Gradle and npm runs, plus a toolkit .zip for push and release scripts. Attached as .py and .zip artifacts• Python 3
Build-only
juneau‑integration‑testsCross-module and MockRestClient-driven integration test suite• None
juneau‑distribDistribution artifacts and packaging• None

The current version of Juneau is 10.0.0-SNAPSHOT.

Import juneau-bom once and add the modules you need without versions; see Install Juneau. The ${juneau.version} property is 10.0.0-SNAPSHOT for these docs; the latest release on Maven Central is 9.2.0 (see Set the version).

Single-jar alternative. juneau-shaded-all bundles the modules in one jar:

<dependency>
<groupId>org.apache.juneau</groupId>
<artifactId>juneau-shaded-all</artifactId>
<version>${juneau.version}</version>
</dependency>

Or for Bazel:

maven_jar(
name = "juneau_all",
artifact = "org.apache.juneau:juneau-shaded-all:${juneau.version}",
)

For more specific use cases, consider using one of the other shaded artifacts listed above, or individual modules from juneau-core and juneau-rest.

If you would like to work with the bleeding-edge code, you can access the 10.0.0-SNAPSHOT version through the following repository:

<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<url>http://repository.apache.org/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>

Each of the components are also packaged as stand-alone OSGi modules.

In This Section​