9 Replies Latest reply on Jan 13, 2010 5:43 PM by asookazian

    learining Java EE; confused now

    testuserman

      Hello everybody,


      I am trying to learn Java EE right now but now I am stuck. Its not only about seam and weld but about Java EE at all. Perhaps you can help me!?
      I will list some statements (that are in my mind). Please verify them and complete or correct them.


      - Java EE is only a collection of specifications (SPIs).
      - Not all Java EE specifications need a Java EE application server (like JSF that can also be used with tomcat).
      - Java EE 6 will be released next year
      - Java EE 6 will have a specification for dipendency injection that is inspired from Seam
      - Using Seam 2.x does not make sense in a Java EE 6 environment?
      - Weld is a framework like Seam, but it is official in Java EE 6?
      - Weld was formlery known as WebBeans?


      So, what should I start learining. Java EE 5 and Seam? Java EE 6 and Weld? Is there any learning material about 6 and Weld right




      Thanks in advance!

        • 1. Re: learining Java EE; confused now
          nickarls

          (disclaimer, my own opinions, not official. On a web forum, surprise, surprise)



          Java EE is only a collection of specifications (SPIs).


          Well, more of a specification of specifications ;-) It also tells a bit on how a compliant server should co-ordinate the parts



          Not all Java EE specifications need a Java EE application server (like JSF that can also be used with tomcat).


          True. Some even work in SE (JPA etc)



          Java EE 6 will be released next year


          It will probably be early next years before the first GA appservers will be around.



          Java EE 6 will have a specification for dipendency injection that is inspired from Seam


          Yes. JSR-299, JCDI



          Using Seam 2.x does not make sense in a Java EE 6 environment?


          Well, no. Mostly because Seam 2 will be obsoleted by Seam 3 which is based on JCDI (which is a part of EE 6)



          Weld is a framework like Seam, but it is official in Java EE 6?


          Weld is the RI of JSR-299, which has influences from Seam (2). Seam 3 will continue to build on top of Weld



          Weld was formlery known as WebBeans?


          Yes



          So, what should I start learining. Java EE 5 and Seam? Java EE 6 and Weld? Is there any learning material about 6 and Weld right


          Weld, JPA 2, JSF 2, Bean Validation, EJB 3.1, Facelets...


          Check out the Weld Reference Docs from the doc link to the left. It's a good place to start

          • 2. Re: learining Java EE; confused now
            gavin.king

            - Java EE is only a collection of specifications (SPIs).


            It is a set of specifications that define mainly APIs, not SPIs.



            - Not all Java EE specifications need a Java EE application server (like JSF that can also be used with tomcat).


            Correct. In fact this is true of most of the important specs.



            - Java EE 6 will be released next year


            No, it should go final later this month. The EE 6 Reference Implementation is released at the same time.



            - Java EE 6 will have a specification for dipendency injection that is inspired from Seam


            Yes. It's called CDI. You're posting the Weld forum. Weld is the CDI reference implementation.



            - Using Seam 2.x does not make sense in a Java EE 6 environment?


            If you're starting a new project under EE 6, you should use CDI and JSF2 (or some other web framework, such as Wicket), which have much of the functionality of Seam2. When Seam3 comes along, take a look at the extra functionality it adds.



            - Weld is a framework like Seam, but it is official in Java EE 6?


            It is an implementation of the CDI specification, which is required in EE6.



            - Weld was formlery known as WebBeans?


            Yes. Indeed, at one stage, CDI was known as Web Beans.



            So, what should I start learining. Java EE 5 and Seam? Java EE 6 and Weld? Is there any learning material about 6 and Weld right


            Unless you plan on putting your system into production inside the next 2-3 months, you should start learning CDI and Weld.


            You also need to decide what web framework to use. This is the hard bit for most people. CDI defines the basic infrastructure you'll use to get the various kinds of Java EE components working together (and much more).



            • You could use plain servlets and JSP, which in EE 6 both include out-of-the-box CDI integration. However, most people prefer to use something with more features. But honestly, if you're new to enterprise Java, it's not a bad place to start. The latest servlet spec lets you use annotations, which is a big step forward in usability.

            • JSF2 is included as part of the platform, and is integrated with CDI out of the box. Many people find JSF difficult to learn. We believe that for some kinds of applications, it pays off in the end.

            • An option we recommend is Wicket. Wicket is an alternative to JSF that is easier to learn. Weld comes with Wicket integration.

            • There are many other possibilities including about a thousand frameworks which are basically alternatives to the servlet API. Struts2 and Stripes seem like popular options. I don't find any of these kinds of frameworks very interesting or sexy, but they're usually easy to use. It should be very relatively easy to integrate any of them with Weld.

            • A final option worth mentioning is GWT. GWT is an entirely different beast, with its own Java to JavaScript compiler. It's great for certain kind of application. We should have GWT integration for Weld available very soon.



            My personal view is that you should start out by looking at either JSF and/or Wicket, unless you're truly a beginner at this, in which case start with writing some plain servlets. If these options don't suit your needs, cast a wider net.


            You'll also need a persistence solution. For most people writing EE 6 applications that means JPA2. There are at least three excellent implementations of this specification to choose from, including ours. You'll probably want to use JPA2 together with Bean Validation.


            Once you've got a handle on CDI, JPA2, and whatever web framework you decide to use, take a look at EJB 3.1, and the more advanced functionality it offers for integrating with data stores and messaging, and managing asynchronicity.

            • 3. Re: learining Java EE; confused now
              gavin.king

              I cleaned up my post a little and blogged it.

              • 4. Re: learining Java EE; confused now
                gavin.king

                It will probably be early next years before the first GA appservers will be around.

                What about GlassFish? Don't they call it GA?

                • 5. Re: learining Java EE; confused now
                  testuserman

                  hey,


                  woohoo Gavin King created a blog entry because of my question. Sorry but I am a bit proud know :D


                  So, thank you vermy much Nicklas and Gavin. That helped me a lot and I will start looking for some good Java EE 6 material.


                  :-)

                  • 6. Re: learining Java EE; confused now
                    nickarls

                    No, they will probably call it v3 Final ;-)


                    But yes, you are correct, I misread the question as When will the major players have appservers that survive some production use. Unless, of course, this release is historical and all parties involved produce bugfree releases from the start.

                    • 7. Re: learining Java EE; confused now
                      asookazian

                      My personal view is that you should start out by looking at either JSF and/or Wicket, unless you're truly a beginner at this, in which case start with writing some plain servlets. If these options don't suit your needs, cast a wider net.

                      Wicket is not officially supported by Redhat/JBoss if you purchase a developer or prod support contract (with Enterprise Application Platform, or EAP) like we had at my previous shop.  Neither is GWT or ICEFaces or any other framework that is not part of the standard EE JBoss stack.  So you're forewarned (unless they changed their policies, I know they did unofficially support Apache httpd and mod_jk for JBoss cluster setups).


                      That being said, yes, a lot of people do seem to prefer Wicket to JSF 1.x (we'll see about Wicket vs. JSF 2.0).



                      Once you've got a handle on CDI, JPA2, and whatever web framework you decide to use, take a look at EJB 3.1, and the more advanced functionality it offers for integrating with data stores and messaging, and managing asynchronicity.

                      Ok, so one problem with using EJB 3.0 components in Seam 2.x apps is the inability to do hot incremental deployment on EJB component changes via the special Seam classloader.  Is this still an issue with EJB 3.1 and/or Weld in EE 6?  I know JRebel is going to address this problem in a future release (hot deploy EJB interface changes).   Plz correct me if I'm wrong but this problem stems from the dynamic proxying of types by the EJB container to inject or decorate with container services for the EJB component.


                      In the future, is there any advantage to using Weld in an EE 6 app with the APIs you suggested above vs. Seam 3?  Seam offers a lot of the services for POJOs that the EJB container offers like tx support, interceptors, etc.  And with a WAR deployment, you get the added benefit of hot incremental deployment for all your POJOs (well, business components, helper classes, util classes, etc. and facelets; not entity classes, but then entity classes don't change very often anyways)...

                      • 8. Re: learining Java EE; confused now
                        peterfry

                        Arbi,


                        After some very concise posts by the previous forum members pitched appropriately to a beginner I see your post which, to a beginner, is going to be next to useless.


                        Peter.

                        • 9. Re: learining Java EE; confused now
                          asookazian

                          Well, assuming that any beginner with Java EE X has experience with Java 5, then start here:


                          http://java.sun.com/javaee/6/docs/tutorial/doc/