https://www.theserverside.com/tip/High-Scalable-Distributed-Architecture-with-EJB-Spring-Framework
https://www.lightbend.com/white-papers-and-reports/java-ee-to-cloud-native-modernization
this explains in detail as to why java ee is dead, i should write an article on this...
java tpr model itself is not great for scaling...,
in the layered architecture,
ejb is at the business logic level.ejb is designed for handling business logic of the application
ejb 1.0 (with remote interfaces) was focussed towards distributed business logic computing but was not firewall friendly.
with ejb the presentation logic and business logic coudl be deployed seprately .
also many simpler applications do not required this...
ejb provide
distributed computing capability where you can scale the business logic layer with the help of ejb..
ejb is largely more toward monlithic applications (they handle the business logic layer) ,
hence scalability of ejb architecture compared to cloud native arhcitectures is very much iffy...
dsitributed transactions (they are not considered good , with kind of traffic modern apps face distributed transactions are not good..)
with web traffic hitting exponential levels distributed transactions are bad from performance perspective.
https://www.j2eeonline.com/entity-bean-transactions/module2/management-distributed-transactions.jsp
@@@@@ """""""The EJBs that are invoked within the context of a transaction may be in the same or different containers in the same or different servers."""""""
The mechanism that makes this work involves sending the transaction context with each message that passes from clients to EJBs.
This is transparent to the bean instance. It implies that the stubs, skeletons, and drivers are all transaction-aware.
asynchnous call
- the rise of cloud services, now you have many services avaliable as saas, a single application server which is doing a ton of things when superscalable services
are avaliable in cloud does not make sense.., function as a service, cloud driven microservices...
cloud native architecture gives a kind of elasticity(sale up and scale down ) which is hard for ee to provide...
-the rise of nosql databases,
java itself is perceived slow...
https://electroanswers.com/computer-hardware/why-is-ejb-not-used-anymore/
Are application servers dead?
There has been concern for nearly five years application servers are dead. Whichever Java application server you choose, all of them are in a state of decline.
Are EJBs dead?
Java EE Is Dead — Completely Dead. J2EE was “killed” by Java EE 5 and JDK 1.5 (J2SE 5.0) in the y. After another 10 years Java EE 8 also became an obsolete dead end.
oracle has given java ee to eclipse so that it can be modernized to cloud native architecture
the other was rise of client side mvcc frameworks,
reactive progamming, rise of nodejs,
vendor propertiery stuff...