You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
| Online: | 29 Members of 8158 |
JSR-299: Java Contexts and Dependency Injection for the Java EE platform (CDI) is the new Java standard for dependency injection and contextual lifecycle management. JSR-299 is a Java Community Process (JCP) standard that integrates cleanly with the Java EE platform. In fact, Java EE 6 requires that all compliant application servers provide support for JSR-299 (even in the web profile).
The JSR-299 specification (CDI) defines a set of services for the Java EE environment that make applications much easier to develop. JSR-299 layers an enhanced lifecycle and interaction model over existing Java component types including Managed Beans (JavaBeans) and Enterprise JavaBeans (EJB session beans). As a complement to the traditional Java EE programming model, the services provide:
JSR-299 is especially useful in the context of web applications, but is applicable to a wide variety of applications. It may even be used in the Java SE context, in conjunction with an embeddable EJB Lite container, as defined in the EJB 3.1 specification, or through an extension.
The specification was heavily influenced by Seam, Google Guice and Spring. The Expert Group is led by Red Hat.
Weld, the JSR-299 RI (Reference Implementation) and the JSR-299 TCK (Technology Compatibility Kit) are being developed here at seamframework.org. Both are licensed under the Apache License, Version 2.0.
To learn more about Java Contexts and Dependency Injection and Weld, start with the Introduction to Weld guide, which explains Weld from the point of view of the developer. Then, if you want to get into the nitty details, move on to the actual specification document.
Both of these documents can be found in the Documentation section (in multiple formats). You can find additional resources from the community on the external CDI and Weld documentation page.
Weld has been tested on the following platforms:
Releases of Weld are now available and can be found in the Download section.
Read this guide to getting started with the examples in the distribution. You'll also need JBoss AS 5.0.1.GA and Apache Ant 1.7.
The Weld Users Forum forum is the place to ask questions or make suggestions about Web Beans and specification. Please share your experiences!
The two technologies share a common goal of providing a unified, contextual, programming model for Java Web Applications. Both provide integration of EJB and JSF.
However, Seam is a superset of JSR-299. Think of JSR-299 as the core of a future Seam - it's the basic programming model for your application components, and for the built-in components that make up the Seam framework. Weld is our implementation of this programming model. Based on this programming model, Seam provides a full framework for application development, including integration with various non-standard open source technologies. JSR-299 defines a very powerful framework for portable extensions. Seam 3 is implemented as a set of portable extensions for JSR-299, that run in any environment which supports JSR-299 (including any Java EE 6 environment). In the future, Seam will probably not be the only application framework based upon JSR-299!
On the other hand, many features and ideas in Weld were inspired and tested in Seam first. (Others originated in other frameworks, particularly Google Guice).
becomeWeld?
Not quite - JSR-299 is just the core programming model, and Weld is one implementation of this model. The future of Seam is:
Seam will continue to be the vehicle which delivers BPM integration, Seam Security, Drools integration, RESTeasy integration, PDF and email templates, Excel generation, etc. You can think of Seam as the goodies
. Seam will also contain patches for Java EE, like JSF fixes (yes, still) and Seam-managed persistence (if it's still needed).
Keep in mind that CDI is the spec, of which Weld is a straight implementation (no frills). Weld also has some portable extensions for CDI where: