I read the interesting blog by Andreas where he makes argument that EJB 2 should have been optional in EJB 3!
In my opinion, “No, never”. There have been countless EJB 2 applications in production and I still see many developers actively developing/deploying EJB 2 applications because many application servers such as IBM Websphere still do not have support for EJB 3 in their production servers. Many of EJB 2 applications will migrate to use EJB 3 but many will probably hang around for years. Support for EJB 2 and EJB 3 together allows applications to interoperate between applications using two different versions of applications deployed in the same container. This also enables customers to do a phased migration of applications. Having said that EJB 3 de-supported EJB 1.1 and I still want to see support for EJB 2.1 in EJB 3.1. I think it makes sense for a standard to support at least two earlier releases. I’m okay if EJB 4 (probably it will at least 2-3 years from now) de-supports EJB 2.1. If Sun decides to EJB 2.1 in EJB 3.1 then most customers will probably be mad and decide to dump EJB :) Anyway vendors like Oracle will keep supporting EJB 2.1 with EJB 3.1 to keep their customers up and running!