Showing posts from 2020

Jakarta Security and Tomcat 10

Jakarta Security was introduceed as Java EE Security in Java EE 8. It facilitates portable application security that fully integrates with container security. This means that an application can provide an authentication mechanism, say for OATH2 or Auth0 and that mechanism is treated just like build-in container mechanisms like FORM. All existing security code, such as the container determining access to a URL based on web.xml constraints, and things like @RolesAllowed and HttpServletRequest.isUserInRole automatically work as expected. One of the compatible implementations of Jakarta Security is Soteria . Soteria has been designed as a standalone library, that can be integrated with multiple servers. It depends on CDI, and the lower level SPIs Jakarta Authentication and Jakarta Authorization . Soteria worked on Tomcat before , but there were some issues. For one, when adding a CDI implementation like Weld to Tomcat, the BeanManager ends up in the JNDI location java:comp/env/BeanM

Jakarta EE Survey 2020/2021

At OmniFaces we poll the community from time to time about Java EE (now Jakarta EE) and related technologies. With the transfer of Java EE to Jakarta EE now almost completed, people are now starting to think about Jakarta EE 10 , the first Jakarta EE release after Java EE 8 having new featues. As such it's a good time to poll the community again. In the 2020/2021 edition, there are 4 categories of questions again: Current usage of Java EE / Jakarta EE Servlet containers APIs related to Java EE / Jakarta EE The future of Jakarta EE Compared to 2018, we simplified some of the questions somewhat, omitting some of the less popular options to make it more manageable. We added questions about the future of Jakarta EE and MP together, the preferred Jakarta EE cadence, and generally updated the choices (such as adding Quarkus , which wasn't quite on the radar in 2018 and our own Piranha Cloud ). Jakarta EE provides the opportunity to revitalise and modernise Java EE,

Hiring the right people

A company's resources are typically not unlimited. Deciding for what next role to hire can be a challenging process. Does a company need extra engineers, or does it need more people on marketing? With a limited budget, choices will have to be made. A good and competent boss will often consult with the staff to discover where the need is most pressing. (click on the image for a larger version) Even larger version Stay tuned for the next instalment! Previous strip: Perfecting the business structure Next Strip: Just say no

Perfecting the business structure

In programming we learn that we should not overcomplicate the architecture of our code. Yes, larger code bases may need a little bit more structure and benefit from certain architectural constructs that would be totally out of place in smaller code bases. Sometimes though it's hard to resist using these constructs in code, since we imagine our tiny app being larger than it actually is, or because we think it soon will be. Interestingly, when structuring companies very similar pitfalls seem to exist. Poor OmniDev head of engineering Liz and her friend Jennefer, who's head of marketing, are about to find out: (click on the image for a larger version) Stay tuned for the next instalment! Previous strip: The productive standup Next Strip: Hiring the right people

Implementation components used by Jakarta EE servers

A while ago we looked at which implementation components the various Java EE servers were using. At the time this concerned mostly Java EE 6 servers, with a few Java EE 7 ones thrown in for good measure. Fast forward 6 years, and we have arrived at Jakarta EE 8 essentially (a re-licensing of Java EE 8 ). Most servers from the previous instalment have Jakarta EE 8 versions out. WebLogic has its Java EE 8 version officially out, with a Jakarta EE 8 version coming soon (there is no technical difference between these two really). TomEE has started to implement Java EE 8 and in its latest version has gotten quite far, but is not there yet. Resin remained at Java EE 6 with seemingly no plans to update these . JOnAS has disappeared off the face of the earth , and so has Geronimo as server (though as a provider of APIs and their implementations it has stayed alive). Without further ado, here's the matrix of Java EE 8/Jakarta EE 8 implementation components used by Java EE/Jakarta EE

New Jakarta EE 8 Certified server: Primeton AppServer V7

Somewhat as a surprise, a company called Primeton Information Technologies, Inc recently filed a certification request for a new Jakarta EE 8 compliant server called Primeton AppServer V7. In this blog we're going to take a quick look at what this server entails. As Jakarta EE is a very complete platform, from scratch implementations are rare to basically non-existent, so it's interesting to see what's exactly in Primeton AppServer V7. Within a Jakarta EE certification request, a link where the product (or a trial thereof) can be downloaded is mandatory, and Primeton indeed provided one . Today's Internet users normally have it easy. One clicks on a download link, and the software effortlessly transfers to your machine. Thanks to 500mbit+ speeds which are becoming increasingly common in this part of the world, most downloads take mere seconds. If you're from a certain age though, you may remember how different this was in the late 80s and early 90s. Dial-up m

Piranha 20.1.2 released!

Piranha 20.1.2 has been released :) In total 59 issues were done for this release, which mostly included work for Piranha Micro, but also includes improvements for Servlet compatibility among others. Note that Piranha is a work in progress and not yet ready for regular use, let alone production usage. Piranha itself is an upcoming Jakarta EE and MicroProfile runtime, currently in its early stages of development. Piranha's main goal is to use Jakarta APIs as much as possible as a library, using a flat class loader, and no concept of deploying applications, in other words without being an application server. Piranha Micro however builds on the core Piranha foundation to deliver something that comes closer to a server; it can run a single application in archive form, albeit it can't undeploy and redeploy (this is on purpose). Specifically for embedded use it features an isolated class loader. Contrary to a traditional application server where an isolating class loade

Jan 2020 update: Piranha Micro getting more compatible

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 Con