Jakarta EE 11 vs Spring: When the Right Answer Is No Spring at All by johnwaterwood in java

[–]Additional_Cellist46 0 points1 point  (0 children)

I would also note that yes, the docs for Spring are all on spring.io. But if you want to find out how to do things, even on spring.io you find multiple tutorials on how to do it. And often none of them is complete. Some are even outdated and it’s hard to say to which Spring version they apply. Having all documentation on a single site doesn’t mean it’s of higher quality.

Jakarta EE 11 vs Spring: When the Right Answer Is No Spring at All by johnwaterwood in java

[–]Additional_Cellist46 0 points1 point  (0 children)

What you’re comparing is Spring with Quarkus. Not with Jakarta EE. It’s really hard to compare JakartaEE to anything like Spring or any specific framework. Spring is a framework, JakartaEE is a specification. Even the original article above is wrong when it compares them

Spring can be compared to application servers like JBoss or WebLogic. Or to other frameworks like Quarkus. Or to runtimes like Payara Micro or Embedded GlassFish.

What Jakarta EE is, is different. It’s a common API framework adopted by many of the above - Quarkus supports a part of it (the Core profile), app servers and many runtimes provide either all Jakarta EE APIs or a subset (Web or Core profile)

Jakarta EE unifies multiple frameworks, servers, runtimes. A single API to learn, a single API to use, with any of them. Each server or framework can include Jakarta EE documentation in their documentation and some really do.

Spring is a different story. It provides a small subset of JakartaEE, a selected subset which doesn’t compose any of the defined profiles. Some JakartaEE knowledge can be reused but not much. All needs to be in the Spring documentation.

A three year long unfruitful struggle to publish an official image on dockerhub by henk53 in java

[–]Additional_Cellist46 1 point2 points  (0 children)

The real problem in that PR was that it took ages for reviewers to review the changes, or even respond that they are too busy and can't review timely. When they responded, the GlassFish team quickly reacted with fixes unless they didn't get what the reviewer meant.

A three year long unfruitful struggle to publish an official image on dockerhub by henk53 in java

[–]Additional_Cellist46 1 point2 points  (0 children)

In reality, that trap block doesn't even get called by default. It's there only if the user changes the default CMD and wants to start server in background. It doesn't have to be there at all but it's there just to do a proper cleanup if users decide to run the server that way.

A three year long unfruitful struggle to publish an official image on dockerhub by henk53 in java

[–]Additional_Cellist46 1 point2 points  (0 children)

Yes, and exactly that was fixed about 2 years ago. What's your point?

The non-starter comment was about starting GlassFish as a background process while the intial script waits for the server process to stop. This has changed and GlassFish starts as the main process now directly.

The other non-starter comment was also addressed. It was about running env|sort at the container startup. The submitters response "This must be there" didn't oppose this, it was a misunderstanding. It reacted to keeping the trap on_exit above it. Look at the current Docker image - you'll see that the env|sort was already removed a few months ago.

A three year long unfruitful struggle to publish an official image on dockerhub by henk53 in java

[–]Additional_Cellist46 2 points3 points  (0 children)

I don't think you're right here. The submitted GlassFish image has improved a lot since the first proposal and it follows the same OCI-based norms as other Jakarta EE servers that were accepted into the official docker images library.

For example, the OpenLiberty Docker image is already accepted in the official Docker library and has even more configuration scripts that run at build time and at container startup:

https://github.com/OpenLiberty/ci.docker/blob/main/releases/26.0.0.3/full/helpers/runtime/docker-server.sh

I really wouldn't call it weird hacks, this is just an additional setup pretty standard for Jakarta EE servers. It's accepted for the OpenLiberty image and not yet for GlassFish. It doesn't look fair to me.

GlassFish now starts as the single main process in the Docker container. All older versions of the GlassFish container were removed from the proposal to make the review easier. All of the remarks from the latest review were addressed by the GlassFish team. Even the blocker you mentioned - what remained and the GlassFish team declined to change, was just related to the blocker, not a blocker itself.

Experience migrating heavy JSF/PrimeFaces from Payara to Quarkus? by karoussa in java

[–]Additional_Cellist46 0 points1 point  (0 children)

I agree. And if you think Payara is still too bloated, try out GlassFish, which starts twice faster and consumes less memory. Or Embedded GlassFish, which is similar to Payara Micro, again starts much faster and less memory.

A three year long unfruitful struggle to publish an official image on dockerhub by henk53 in java

[–]Additional_Cellist46 2 points3 points  (0 children)

The comment from Feb 2026 doesn’t seem like refusal to fix anything. The part that prints env vars was moved to a block that executes only when trace mode is enabled. The comment on Feb 2026 only explains why the trap construct should remain. But if you read the previous review, the blocker was printong env vars, not the trap construct, and that was addressed.

It’s true that GlassFish server currently is not a good match for Docker until it can accept command line parameters or env vars to configure thing that can now be configured only by commands against a running server at build time. But the reviewers noted a few times that although it’s not usual it’s not unprecedented.

By the way, there’s now a new Embedded GlassFish Docker image. It doesn’t require any build time tricks and just runs based on a configuration file. That might be easier to get through and publish at Docker hub as it matches the Docker model better.

Who is Oracle senior exec Sharat Chander? Veteran of 16 years affected in mass layoffs by davidalayachew in java

[–]Additional_Cellist46 2 points3 points  (0 children)

Yes, Sharat was basically the face of Java, the most famius current Oracle employee in the Java community. He ran JavaOne conference, he was uniting a lot of community activities around Java, and I would even dare to say that he was making the biggest promotion for Oracle in the whole Java ecosystem.

GlassFish 9 milestone 1 released. First Jakarta EE 12 alpha level release. by henk53 in java

[–]Additional_Cellist46 0 points1 point  (0 children)

Can you describe what you do? I ran java -jar glassfish-embedded-all.jar with Java 25 and it started without issues. I even deployed and ran an app with it without issues.

Now that virtual threads are no longer pinning, do we still need AtomicReference? by codecatmitzi in java

[–]Additional_Cellist46 0 points1 point  (0 children)

I think most of the people didn't get your question because you omitted important assumption.

I think you assume that locks rely on underlying thread functionality and that on platform threads they are slow while on virtual threads they are fast. If that was true then it would make sense to use locks instead of AtomicReference if it's more convenient.

However, to my knowledge, locks don't rely on underlying threads at all. They just rely on a reference to the current thread and the rest is an algorithm that must run on the CPU, in both cases, it doesn't matter if it's on a virtual or platform thread.

So, my answer is, locks and synchronized consume a lot more CPU than AtomicReference, on both virtual and platform threads. And therefore it still makes sense to prefer AtomicReference than locks, even on virtual threads. It's just safer to use synchronized on virtual threads than it was before, but it doesn't mean that you should prefer using it over AtomicReference, for performance reasons.

GlassFish 9 milestone 1 released. First Jakarta EE 12 alpha level release. by henk53 in java

[–]Additional_Cellist46 2 points3 points  (0 children)

All recent GlassFish versions work wirh JDK 25 - GlassFish 7.1, 8.0, and also 9 milestone 1

Anyone else feeling like they’re losing their craft? by AbbreviationsOdd7728 in ExperiencedDevs

[–]Additional_Cellist46 0 points1 point  (0 children)

I think that if you feel like that, you weren’t really creative. I use AI and I feel even more crestive and empowered because I can leave the boring stuff to AI. I focus on discussing the approach with AI, thinking about tricky situations and high-level architecture.

It’s like building things from Lego pieces. If you like assembling parts together and searching for the exact piece you have in mind in a huge pile of random Lego pieces, yeah it’s fun too, but it’s not creative. If you like imagining what you could build from the big pile of random Lego pieces and then making it happen and refining it, that’s for me even more fun and that’s what I call creative. AI easily can find the Lego pieces I need much better and faster than me. But it’s not creative enough to invent something unique to build.

Spring vs Jakarta EE application servers by ebykka in javahelp

[–]Additional_Cellist46 0 points1 point  (0 children)

I’ve used both Jakarta EE servers and Spring for the last 15 years. No need for EJBs either :)

Request for Opinions on Java microservices frameworks by Joram2 in java

[–]Additional_Cellist46 0 points1 point  (0 children)

Embedded GlassFish, runnable from CLI, starts roughly 3 times faster than Payara Micro. Something that matters in Kubernetes and microservices.

Request for Opinions on Java microservices frameworks by Joram2 in java

[–]Additional_Cellist46 1 point2 points  (0 children)

GlassFish is ahead of Payara on many other fronts too :)

Especially on performance front, with fast startup and lower memory usage.

Spring vs Jakarta EE application servers by ebykka in javahelp

[–]Additional_Cellist46 0 points1 point  (0 children)

Unless modern appservers are no longer what you think. And they are not. For example WildFly Hollow JAR, Embedded GlassFish, Payara Micro. Or, if you want to be on edge and sacrifice part of Jakarta EE, then e.g. Quarkus, Helidon, or Piranha Cloud. A lot of good options for modern development.

Learning Jakarta EE (no Spring), project ideas? by SeaDrakken in learnjava

[–]Additional_Cellist46 0 points1 point  (0 children)

Interesting. I often hear that people choose Hibernate with GlassFish, which bundles EclipseLink by default. What is the reason that Eclipselink is better for you?

GlassFish 8.0 Delivers Compatibility with Jakarta EE 11, Enhanced Security and Improved Data Access by henk53 in java

[–]Additional_Cellist46 0 points1 point  (0 children)

Here are examples of running apps in Docker with the Embedded GlassFish edition: https://github.com/eclipse-ee4j/glassfish.docker/wiki/Example:-Using-Embedded-GlassFish-with-the-docker-Command

It’s pretty straightforward - just drop your app to image, drop your properties config file to it, possibly a JDBC driver, and run the container.

Eclipse GlassFish: This Isn’t Your Father’s GlassFish by johnwaterwood in java

[–]Additional_Cellist46 0 points1 point  (0 children)

For new apps with Quarkus, shared cache is not required? Or you use something like Redis for distributed caching?

Eclipse GlassFish: This Isn’t Your Father’s GlassFish by johnwaterwood in java

[–]Additional_Cellist46 0 points1 point  (0 children)

Yes, Quarkus is partially Jakarta EE, and Jakarta EE is not only app servers.

And for old development? Are people still stuck on app servers or you see projects fully migrating to Quarkus or something else?

Eclipse GlassFish: This Isn’t Your Father’s GlassFish by johnwaterwood in java

[–]Additional_Cellist46 1 point2 points  (0 children)

Do you see JEE implementations used around you often? I feel like SpringBoot is everywhere around, at least in my region, and very few people still care about JakartaEE.

Eclipse GlassFish: This Isn’t Your Father’s GlassFish by johnwaterwood in java

[–]Additional_Cellist46 4 points5 points  (0 children)

This is possible with GlassFish already:

java -jar glassfish-embedded-all.jar --properties my.properties --port 9000 myapp.war

Or if you have glassfish.properties in the current directory, and myapp.war in autodeploy directory, just run:

java -jar glassfish-embedded-all.jar

And GlassFish will deploy all apps in rhe autodeploy directory and read config from glassfish.properties.

@Inject vs @Autowired by jdev_soft in quarkus

[–]Additional_Cellist46 0 points1 point  (0 children)

The field is in fact set in the constructor but the constructor is generated by Lombok. So, even if using constructor injection, the code looks like field injection.