We're currently hard at work with our Piranha runtime implementation. Piranha is a new Jakarta EE and MicroProfile runtime build from scratch. A distinguishing feature is that it's build from the ground up to use Jakarta EE and MicroProfile as a framework, which means without any (application) server bits. This is essentially how you would use a mock framework for Jakarta EE, except that with Piranha it's the actual runtime.

Piranha Micro takes the framework bits and with a minimal amount of glue code assembles these into what resembles a more traditional Jakarta EE Server (including an HTTP stack and the ability to run a single war archive). We'll be blogging about some interesting features this version of Piranha has soon. For now just a small status update, and that's that we're working hard on compatibility.

Last month we passed the MicroProfile JWT TCK (which infers a certain minimal level of compatibility with CDI, Jakarta REST and MicroProfile Config). This month we've been looking at the Java EE 7 samples suite. This is an older, but still very valuable resource to both test implementations and learn how to use the Jakarta EE (Java EE) APIs.

We're happy to announce that Piranha Micro is passing all of the appropriate JASPIC (Jakarta Authentication) tests, and a large number of the Servlet and JAX-RS (Jakarta REST) ones. The JASPIC ones are particularly nice to pass, since Piranha uses the (largely) new OmniFaces implementation called Eleos for this. Furthermore, the plain Servlet Security tests are under the hood powered by Eclipse Soteria which is a compatible implementation (CI) of Jakarta Security. To the best of our knowledge, this is another unique feature of Piranha (more about this in a later blog). Note that skipped tests for JASPIC are about EJB, which Piranha doesn't support yet.

The results from running Java EE 7 samples against the latest snapshot from master ( 20.1.0-SNAPSHOT ) are shown below:



[INFO] Reactor Summary for Java EE 7 Sample: jaspic 1.0-SNAPSHOT: [INFO] [INFO] Java EE 7 Sample: jaspic - common .................. SUCCESS [ 1.044 s] [INFO] Java EE 7 Sample: jaspic ........................... SUCCESS [ 0.284 s] [INFO] Java EE 7 Sample: jaspic - basic-authentication .... SUCCESS [ 7.600 s] [INFO] Java EE 7 Sample: jaspic - custom principal ........ SUCCESS [ 7.132 s] [INFO] Java EE 7 Sample: jaspic - programmatic-authentication SUCCESS [ 4.075 s] [INFO] Java EE 7 Sample: jaspic - lifecycle ............... SUCCESS [ 5.602 s] [INFO] Java EE 7 Sample: jaspic - wrapping ................ SUCCESS [ 4.041 s] [INFO] Java EE 7 Sample: jaspic - register-session ........ SUCCESS [ 5.756 s] [INFO] Java EE 7 Sample: jaspic - async-authentication .... SUCCESS [ 0.272 s] [INFO] Java EE 7 Sample: jaspic - Status codes ............ SUCCESS [ 5.535 s] [INFO] Java EE 7 Sample: jaspic - dispatching ............. SUCCESS [ 5.546 s] [INFO] Java EE 7 Sample: jaspic - dispatching JSF CDI ..... SUCCESS [ 4.076 s] [INFO] Java EE 7 Sample: jaspic - ejb-propagation ......... SKIPPED [ 0.290 s] [INFO] Java EE 7 Sample: jaspic - ejb-register-session .... SKIPPED [ 0.238 s] [INFO] Java EE 7 Sample: jaspic - jacc-propagation ........ SUCCESS [ 5.495 s] [INFO] Java EE 7 Sample: jaspic - invoke EJB and CDI ...... SKIPPED [ 0.228 s] [INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary for Java EE 7 Sample: servlet 1.0-SNAPSHOT: [INFO] [INFO] Java EE 7 Sample: servlet .......................... SUCCESS [ 0.754 s] [INFO] Java EE 7 Sample: servlet - simple-servlet ......... SUCCESS [ 5.634 s] [INFO] Java EE 7 Sample: servlet - async-servlet .......... SUCCESS [ 0.215 s] [INFO] Java EE 7 Sample: servlet - servlet-filters ........ SUCCESS [ 3.674 s] [INFO] Java EE 7 Sample: servlet - cookies ................ SUCCESS [ 4.096 s] [INFO] Java EE 7 Sample: servlet - error-mapping .......... SUCCESS [ 4.037 s] [INFO] Java EE 7 Sample: servlet - event-listeners ........ SUCCESS [ 4.178 s] [INFO] Java EE 7 Sample: servlet - metadata-complete ...... SUCCESS [ 3.986 s] [INFO] Java EE 7 Sample: servlet - web-fragment ........... SUCCESS [ 0.147 s] [INFO] Java EE 7 Sample: servlet - nonblocking ............ SUCCESS [ 0.174 s] [INFO] Java EE 7 Sample: servlet - protocol-handler ....... FAILURE [ 13.564 s] [INFO] Java EE 7 Sample: servlet - resource-packaging ..... FAILURE [ 1.939 s] [INFO] Java EE 7 Sample: servlet - file-upload ............ SUCCESS [ 3.205 s] [INFO] Java EE 7 Sample: servlet - programmatic-registration SUCCESS [ 3.977 s] [INFO] Java EE 7 Sample: servlet - security-basicauth ..... SUCCESS [ 4.037 s] [INFO] Java EE 7 Sample: servlet - security-digest ........ SKIPPED [ 0.283 s] [INFO] Java EE 7 Sample: servlet - security-form-based .... SUCCESS [ 4.133 s] [INFO] Java EE 7 Sample: servlet - security-clientcert .... SKIPPED [ 0.394 s] [INFO] Java EE 7 Sample: servlet - security-clientcert-jce SKIPPED [ 0.395 s] [INFO] Java EE 7 Sample: servlet - security-programmatic .. SUCCESS [ 4.084 s] [INFO] Java EE 7 Sample: servlet - security-deny-uncovered SUCCESS [ 3.997 s] [INFO] Java EE 7 Sample: servlet - security-allow-uncovered SUCCESS [ 3.998 s] [INFO] Java EE 7 Sample: servlet - security-annotated ..... FAILURE [ 3.975 s] [INFO] Java EE 7 Sample: servlet - security-basicauth-omission SUCCESS [ 4.000 s] [INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary for Java EE 7 Sample: jaxrs 1.0-SNAPSHOT: [INFO] [INFO] Java EE 7 Sample: jaxrs ............................ SUCCESS [ 0.557 s] [INFO] Java EE 7 Sample: jaxrs - async-client ............. SUCCESS [ 5.177 s] [INFO] Java EE 7 Sample: jaxrs - async-server ............. FAILURE [ 4.058 s] [INFO] Java EE 7 Sample: jaxrs - beanvalidation ........... FAILURE [ 4.178 s] [INFO] Java EE 7 Sample: jaxrs - beanparam ................ SUCCESS [ 4.105 s] [INFO] Java EE 7 Sample: jaxrs - client-negotiation ....... FAILURE [ 4.240 s] [INFO] Java EE 7 Sample: jaxrs - db-access ................ FAILURE [ 3.567 s] [INFO] Java EE 7 Sample: jaxrs - dynamicfilter ............ SUCCESS [ 4.885 s] [INFO] Java EE 7 Sample: jaxrs - fileupload ............... SUCCESS [ 4.671 s] [INFO] Java EE 7 Sample: jaxrs - filter ................... SUCCESS [ 4.226 s] [INFO] Java EE 7 Sample: jaxrs - filter-interceptor ....... SUCCESS [ 0.186 s] [INFO] Java EE 7 Sample: jaxrs - interceptor .............. SUCCESS [ 0.163 s] [INFO] Java EE 7 Sample: jaxrs - invocation ............... SUCCESS [ 0.149 s] [INFO] Java EE 7 Sample: jaxrs - invocation-async ......... SUCCESS [ 0.169 s] [INFO] Java EE 7 Sample: jaxrs - jaxrs-client ............. FAILURE [ 4.458 s] [INFO] Java EE 7 Sample: jaxrs - jaxrs-endpoint ........... SUCCESS [ 4.332 s] [INFO] Java EE 7 Sample: jaxrs - jsonp .................... SUCCESS [ 4.377 s] [INFO] Java EE 7 Sample: jaxrs - link ..................... SUCCESS [ 0.268 s] [INFO] Java EE 7 Sample: jaxrs - mapping-exceptions ....... SUCCESS [ 4.113 s] [INFO] Java EE 7 Sample: jaxrs - paramconverter ........... SUCCESS [ 4.300 s] [INFO] Java EE 7 Sample: jaxrs - readerwriter ............. SUCCESS [ 4.483 s] [INFO] Java EE 7 Sample: jaxrs - readerwriter-json ........ SUCCESS [ 0.204 s] [INFO] Java EE 7 Sample: jaxrs - request-binding .......... SUCCESS [ 0.149 s] [INFO] Java EE 7 Sample: jaxrs - resource-validation ...... FAILURE [ 4.474 s] [INFO] Java EE 7 Sample: jaxrs - server-negotiation ....... FAILURE [ 4.112 s] [INFO] Java EE 7 Sample: jaxrs - simple-get ............... SUCCESS [ 3.982 s] [INFO] Java EE 7 Sample: jaxrs - singleton ................ SUCCESS [ 5.907 s] [INFO] Java EE 7 Sample: jaxrs - readerwriter-injection ... FAILURE [ 2.542 s] [INFO] Java EE 7 Sample: jaxrs - jaxrs-security-declarative SUCCESS [ 4.497 s] [INFO] ------------------------------------------------------------------------

Arjan Tijms