The only decision I have come to regret is using JPA, which is short for Java Persistence API (a specification for an ORM -- an Object-Relational Mapping), and where the most famous implementation is Hibernate. As far as ORMs go, Hibernate is probably fine, but I wish I had considered using something more light-weight and closer to the underlying database. As things stand, JPA mostly gets in the way, and I have had to resort to "native queries" (SQL) for our most performance-sensitive code paths.
I don't regret choosing JPA, as much as I regret choosing an ORM.
Also, as others have alluded to, Java is a stable choice. At the same time I chose Java EE and PostgreSQL, I chose AngularJS for our front end, which has been fully superseded by modern versions of Angular. We'll need to spend lots of time replacing AngularJS with React or Angular (we haven't decided yet), so that decision didn't really pan out.
On the server, though, I couldn't be happier with Java/Jakarta EE and PostgreSQL.
I haven't personally seen any green field Java EE code in the last 10 years or so!
Edit: Since I got downvoted for this (I would have thought) innocuous observation, I'll add the clarifying observation that Java is thriving. I'm specifically talking about Java EE, and Java EE as a platform at that, not as one-of-many libraries supporting the various other platforms.
It has also been sliced and diced in to multiple profiles, popular among them is Microprofile. It can be implemented with Apache tomcat instead of heavier Websphere/ Weblogic etc.
Another thing that happened is container term which in Java world would be Servlet/EJB containers is now associated with Docker containers. And Java enterprise containers fell out of fashion.
All these factor led do Java/Jakarta EE being also ran.
I’m sure you have. Nearly everyone is using JPA and Quarkus is using JAX-RS via RESTEasy and other parts of the microprofile part of EE.
> I'm specifically talking about Java EE, and Java EE as a platform at that, not as one-of-many libraries supporting the various other platforms.
So yes, it is still used very extensively, though I don’t think that the old application container model is used for new apps anymore.
I was a skeptic myself always thinking it's too heavy and too large and too slow, but after fate handed me a codebase of j2ee platform and seeing how reliable and no effort is put into maintaining it rather just focus on the application logic.
I would always chose java for any software that's expected to last 10 years plus and should work reliably.
Believe it or not, it's a very pleasant and modern experience and the technology is easy to understand (except for CDI, that took a while).
I didn't like that all the other frameworks had invented their own ways of doing things. Having a standard/specification with a voting committee from multiple organizations seems much more rational to me.