Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [] A Composable Platform Over Profiles

Most Java EE adopters I know of today value compatibility and some do indeed switch implementations. GlassFish is the latest unfortunate case but honestly people have switched to JBoss from WebSphere/WebLogic for years. So there is definitely a significant and important population that values compatibility.

That's why it is important to continue to ship predefined profiles in addition to mandating modularity.

Sent via the Samsung Galaxy S7, an AT&T 4G LTE smartphone

-------- Original message --------
From: James Roper <james@xxxxxxxxxxxxx>
Date: 5/1/18 3:24 PM (GMT-05:00)
Subject: Re: [] A Composable Platform Over Profiles

I think this raises some interesting questions around the goals of Jakarta EE.

How important are (or were) the portability aspects? Is switching app servers/vendors something that is common to do for Java EE deployments? In my experience it's not, the ability to switch vendors is a perceived value for many users, but one that never actually gets exercised in practice, however my experience may not be representative.

However, there is another aspect to portability, and that's third party (eg open source) libraries and technology building on Java EE - the fact that a single library can run on many different vendors implementations is highly valuable and probably one of the biggest contributors to Java EE's success. That said, there's not a lot of cases that I've seen where open source libraries that depend on Java EE depend on the whole of Java EE, they tend to depend on a limited subset of specs. This I think would be generally compatible with a composable palette approach to Jakarta EE, as you suggest. There's certainly some scenarios where there may be problems, but in practice I would expect those to be rare and manageable.

Another major goal and advantage of Jakarta EE, as I see, is portability of developer skillsets, which enables companies to select a particular implementation, but be able to hire skilled developers from a much larger pool of experience over many implementations. A composable palette approach doesn't impede this goal at all.

I'm certainly for this direction.

On Wed, 2 May 2018 at 04:11, Jason Greene <jason.greene@xxxxxxxxxx> wrote:
Over the years there has been vigorous debate about what makes the perfect profile. “Should spec X be included or not?” “Should we create a “plus” variant of the web profile?" “How many profiles is too many?" “How many is too few?" Recent threads you can see the topic rising again with Stable and Legacy profile proposals, and debate about whether or not JAX-WS should be part of the platform.

A related issue is that EE compliance is overly strict. An implementor must ship exactly what a profile defines, with limited exceptions on variation. As an example, a certified web or full implementation can’t ship a newer version of the Servlet API, even though it’s fully backwards compatible. The default run mode / config of the implementation is also not allowed to enable a subset of the profile, even though the implementor’s primary audience may not need all of the specified technologies.

The idea behind a rigid platform certainly had merit, and it arguably led to the very strong level of portability across containers we enjoy today. However, this one-size-fits-all approach just no longer fits the current state of software, with developers expecting a high degree of application specific tailoring.

I argue that a better approach would be to define the platform as a palette of composable standards[1], where profiles define only what must be available for a developer to choose from, and only limit the version of a given standard to the minimum that must be provided[2]. Under this model there is less of a need to define a perfect profile, since it can be freely adjusted by the developer to fit his or her needs. Instead, all that matters is that we have a sensible array of choice.

[1] It’s worth noting that this would require the TCK to be split up, as discussed previously, to facilitate the flexibility required in testing a near arbitrary combination of standards.

[2] For clarity, the full and web profiles would still be versioned (8.0 etc) as today, this is just a rule softening to support variation.

Jason T. Greene
Chief Architect, JBoss EAP
Red Hat

_______________________________________________ mailing list
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

James Roper
Senior Octonaut

Lightbend – Build reactive apps!
Twitter: @jroper

Back to the top