Sub-millisecond Ahead-Of-Time (AOT) report compilation. Drop existing .jrxml templates straight into a 15ms cold start container with 35MB RAM and cut your Kubernetes bill by 85%.
Tested on Kubernetes (EKS / AWS Graviton 3) generating 1,000-line electronic billing statements.
See how much you save on AWS EKS / GCP GKE compute nodes by ditching JVM bloat.
No Java/Groovy bytecode compilation at runtime. Closed-world AOT compliant with GraalVM Native Image.
If a broken JRXML is uploaded in production, the engine automatically serves the previous valid version without downtime.
Proprietary atomic cache synchronization over ReadWriteMany PVCs or Redis, updating all replicas in sub-milliseconds.
Token-bucket rate limiting, monthly billing cycle tracking, and API Key / OIDC JWT token validation out-of-the-box.
Native ZXing integration drawing directly into PDF vectors. Zero desktop AWT/X11 dependencies.
Generates high-speed .xlsx spreadsheets via streaming ZIP compression with zero OutOfMemory risks.
Add our official starter to your Maven or Gradle build for automatic bean configuration:
<dependency>
<groupId>com.gmr.reports</groupId>
<artifactId>gmr-reports-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
@RestController
public class InvoiceController {
@Autowired
private GmrSpringReportService reportService;
@GetMapping("/invoice.pdf")
public ResponseEntity<byte[]> getInvoice() throws Exception {
byte[] pdf = reportService.renderPdf("invoice", params, items);
return ResponseEntity.ok().contentType(MediaType.APPLICATION_PDF).body(pdf);
}
}
Run locally on Apple Silicon (M1-M4) or deploy to AWS Graviton with zero emulation overhead:
# Run Developer Edition container on port 8080
docker run -p 8080:8080 ghcr.io/gmreserarch-io/gmr-reports:latest
# Run JVM image for standard debugging
docker run -p 8080:8080 ghcr.io/gmreserarch-io/gmr-reports:jvm
# Access interactive sandbox
open http://localhost:8080/console
Compile to an ultra-lightweight 45MB native binary with sub-15ms startup:
# Build GraalVM Native Image
mvn clean package -Pnative -DskipTests
# Run static native executable
./target/gmr-reports-demo-1.0.0-runner
# Starts in 14.8ms with 35MB RAM footprint!
Deploy with horizontal autoscaling (HPA) and shared PVC synchronization:
helm install gmr-reports ./charts/gmr-reports \
--set autoscaling.enabled=true \
--set autoscaling.minReplicas=2 \
--set autoscaling.maxReplicas=20 \
--set persistence.enabled=true \
--namespace gmr-production --create-namespace
Built-in retry logic handling HTTP 429 rate-limit backoff:
// TypeScript / Node.js
import { GmrReportsClient } from "@gmr/reports-client";
const client = new GmrReportsClient({ apiKey: "gmr_live_pro_key" });
const pdf = await client.renderDynamicPdf({ jrxml, parameters, data });
# Python
from gmr_reports import GmrReportsClient
client = GmrReportsClient(api_key="gmr_live_pro_key")
pdf_bytes = client.render_dynamic_pdf(jrxml=jrxml, parameters=params, data=items)
$F{field}, $P{param}, $V{var} evaluated deterministically.
No. GMR Reports was explicitly engineered to ingest standard .jrxml files generated by Jaspersoft Studio. Bands, expressions, parameters, totals, and barcodes render drop-in without template redesign.
If a corrupted or invalid XML template is uploaded to a shared volume or hot-reloaded during live operations, GMR Reports detects the parsing failure, raises an alert, and seamlessly continues serving the last valid compiled version in memory. Production document flows never crash.
Yes! Our official Docker images on GHCR are multi-architecture (linux/amd64 and linux/arm64). In fact, GMR Reports can run in the OCI Always Free tier consuming less than 1% of the allocated 24GB RAM.
The Community Edition is free for evaluation and development with public artifacts on Maven Central. The Enterprise Edition provides air-gapped self-hosted Kubernetes Helm licenses, unlimited rendering, Redis/Hazelcast cluster sync, FIPS/banking compliance, and 24/7 dedicated engineering SLAs.
For evaluation and local microservices.
For growing SaaS platforms and billing apps.
For high-throughput electronic invoicing PACs.
For air-gapped banking and enterprise clouds.