Developing a distributed, transactional, and secure application has traditionally been a complex task. If you have embraced the Java Enterprise platform before the new millennium, you should know that building even simple components required a certain amount of time. The Java EE 5 platform introduced a new simplified programming model. XML deployment descriptors are now optional. Instead, a developer can add the information as an annotation directly into a Java source file, and the Java EE server will configure the component at deployment and runtime.
Another useful innovation, borrowed from POJO frameworks, is Dependency Injection. This can be applied to all resources that a component needs, effectively hiding the creation and lookup of resources from application code. Dependency Injection can be used in EJB containers, web containers, and application clients, thus allowing the developer to easily insert references to other required components or resources with annotations...