Why Standards Are Hot, Or Why I Still Like Java EE
I started with Java before the advent of EJB, Servlets and Java EE. And it was a huge mess. You had to implement business code agains (too) many, completely different, not even similar application servers. You didn't had any chance to take even a simplistic server side application from one product and install it on another. Some application servers were half "native" and half "pure Java". Also it was absolutely impossible to be knowledgable in more than two products.
The introduction of Servlets, JNDI, EJBs, JMS, JDBC, RMI simplified the development, but the portability still suffered. You could not rely on the availability of a give API on all servers.
The old J2EE brought ...simplicity. With the advent of J2EE in 1999 you knew what you could expect of a certified server. Ironically: J2EE was too simple and incomplete.
For me J2EE and later Java EE brought simplicity and productivity, and I always was puzzled by developers stating "J2EE is too complex" and implementing home-grown infrastructure instead.
In 2014 Java EE 7 is still the most productive, and simple platform:
- Java EE is probably the best documented platform. The documentation, specification, samples and even the reference implementation are free and available on the release day.
- You "only" have to learn the APIs. All the documentation is free.
- The core programming model is based on injection and dependency injection JSR-330 used by many other frameworks in the same way, even the exact same annotations (thanks to Rod Johnson and Bob Lee for this).
- You cannot escape JMS, JPA, Servlets sometimes JAX-RS and JCA. Even if you choose a Java EE alternative, you will have to learn these specs. At the same time you can learn Java EE programming model based on Convention over Configuration and Dependency Injection in few minutes.
- All modern Java EE Application Servers can be installed in seconds. IDE integration is also very good.
- Because the server comes already with all the "plumbing", your WARs are going to be skinny and the turn-around cycles very fast.
- The Java EE community is vibrant. JUGs and conference sessions are sold out and Java EE articles are very popular.
- After the commercial support for GlassFish was cancelled, many of my clients decided to move to WildFly or TomEE. The "migration" went surprisingly smooth.
- I don't have to discuss "best of breeds" technologies or constantly bundle APIs "à la carte". At the very first project day you can start implementing the business logic. Without any initial overhead. Java EE effectively prevents meetings and superfluous discussions.
- It is hard to find any other leaner platform. With Java EE you can build either complex applications, or simplistic CRUD use case with the minimal amount of code.
- It is good to know, that I'm not alone. Many startups this year chosen Java EE ...because of productivity.
[See also an in-depth discussion in the "Real World Java EE Patterns--Rethinking Best Practices" book (Second Iteration, "Green Book"), page 7 in, chapter "A Brief History of Java EE"]
See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting
it is very use full for me...
Posted by lavanyaraja on December 20, 2014 at 07:43 AM CET #
Gongrats for the post, I mostly agree on the points found here one thing though, you are mentioning that a lot of startups are using JEE, can you please be a little more specific about who is using it?
Can you share some of the use cases?
I think this would be really interesting, since (in my opinion) many think that startups are shifting away from JEE due to lack of flexibility (thus most of the talks about JEE being dead).
Posted by Maximos on December 20, 2014 at 05:34 PM CET #
"The core programming model is based on injection and dependency injection JSR-330 (thanks to Rod Johnson and Bob Lee for this)": you forgot Gavin King, didn't you?
Posted by Thai on December 22, 2014 at 04:39 PM CET #
Gavin King was involved in JSR-299 (https://jcp.org/en/jsr/detail?id=299) not
in the @Inject spec (https://jcp.org/en/jsr/detail?id=330).
JSR-330 is used by Maven, Spring, Eclipse etc. JSR-299 is CDI and builds on
thanks for your comment!,
Posted by Adam Bien on December 22, 2014 at 07:36 PM CET #