The elegance of Java stems from how the language addresses a number of highly
complex software engineering issues in a seemingly consistent and easy-to-use
paradigm. While there are a few potholes that you need to be mindful of, most
caused by the differences between primitives and objects, the power and reach
of standard Java are testaments to the principle of simplicity that is
embodied within it. Unfortunately, when it comes to Java's enterprise
platform, J2EE strays considerably from J2SE in a number of areas, creating
unnecessary additional complexity and ambiguity. To make matters worse, J2EE
1.3 (EJB 2.0) introduced self-inconsistencies.
J2EE's deviations fall into two categories: Structural and Behavioral.
Structural deviations concern those areas where the implementation of a J2EE
component requires a format that differs significantly from the
implementati... (more)