Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java EE vs Spring Framework

31,492 views

Published on

This session compares the Spring and Java EE stacks in terms of Web frameworks. It re-examines the motivations behind the Spring framework and explores the emergence of the Java EE programming model to meet the challenges posed. The presentation provides insight into when Spring and/or Java EE is appropriate for a building Web applications and if they can coexist.

Published in: Technology, Education
  • Hi All, We are planning to start new Salesforce Online batch on this week... If any one interested to attend the demo please register in our website... For this batch we are also provide everyday recorded sessions with Materials. For more information feel free to contact us : siva@keylabstraining.com. For Course Content and Recorded Demo Click Here : http://www.keylabstraining.com/salesforce-online-training-hyderabad-bangalore
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hi All, We are planning to start new devops online batch on this week... If any one interested to attend the demo please register in our website... For this batch we are also provide everyday recorded sessions with Materials. For more information feel free to contact us : siva@keylabstraining.com. For Course Content and Recorded Demo Click Here : http://www.keylabstraining.com/devops-online-training-tutorial
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • http://dbmanagement.info/Tutorials/Java.htm
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Java EE vs Spring Framework

  1. 1. Java EE and Spring Framework Shootout<br />Rohit Kelapure IBM Advisory Software Engineer, http://wasdynacache.blogspot.com/<br />Reza RahmanIndependent Consultant, Author, Java EE Expert http://www.rahmannet.net/<br />Presentation can be downloaded from http://db.tt/1q9us2JH<br />
  2. 2. Important Disclaimers<br />THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. <br />WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. <br />ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES.<br />ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.<br />IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE. <br />IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. <br />NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: <br />- CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS<br />2<br />
  3. 3. Copyright and Trademarks<br />© IBM Corporation 2011. All Rights Reserved. <br />IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., and registered in many jurisdictions worldwide. <br />Other product and service names might be trademarks of IBM or other companies. <br />A current list of IBM trademarks is available on the Web – see the IBM “Copyright and trademark information” page at URL: www.ibm.com/legal/copytrade.shtml<br />3<br />
  4. 4. Outline <br />Evolution of Java EE and Spring<br />Java EE 6 & Spring 3.0, 3.1 highlights<br />Spring 3.1 feature comparison with Java EE 6<br />CDI and Spring ecosystem<br />Spring and Java EE coexistence<br />Conclusion<br />4<br />
  5. 5. J2EE Java EE Specifications<br />* Introduced in spec.<br />
  6. 6. Evolution of J2EEJava EE6 (Dec 09)<br />New specs (JAX-RS, CDI, Bean Validation)<br />Prune dead wood<br />EJB 2.x, JAX-RPC, JAXR, JEE App. Deploy, JEE App mgmt.<br />Extensibility<br /> Easy Framework Pluggability (web fragments & CDI Extensions)<br />Enhanced ease of development<br />POJO annotation based Servlets, <br />Asynchronous processing (Servlet 3.0 & EJB 3.1)<br />EJB 3.1<br />EJB-in-WAR, No-interface view, Singleton, EJB-lite, Timers<br />Contextual Dependency Injection (CDI)<br />RESTful services<br />Portable JNDI names<br />JSF2.0<br />Facelets, built-in-AJAX, Skins, Annotations, Resource handling<br />Simplified Navigation, Easier custom components, View & Page scopes<br />Bookmarkable pages, Project Stage, Expanded event model<br />JPA 2.0<br />Mapping enhancements, JPAQL, Criteria Query API, Pessimistic locking<br />Profiles reduce platform size <br />Web Profile 12 specs<br />Vendor support<br />WebSphere AS 8<br /> JBOSS AS 7<br /> Oracle WebLogic 11g<br /> Glassfish 3<br />6<br />
  7. 7. JSR 299 Contexts and Dependency Injection (CDI)<br /><ul><li>Adds dependency injection to JEE and makes it type-safe.
  8. 8. Hollywood principle - Don’t call us, we will call you
  9. 9. No hard coded dependencies on other specifications</li></ul>Assists in unifying the Bean model<br />Well defined contexts, the ability to bind beans statefully to them & manage their lifecycle.<br />Introduces an event notification system to decouple producers & consumers<br />Uses interceptors to foster loose coupling <br />Extend behavior with type safe interceptor bindings<br />Refines interceptors into decorators for finer grained control<br />Integrates with the Unified EL to bridge JSF<br />Enables use of EJB 3.0 components as JSF managed beans<br />Introduces an SPI to extend JEE – Roll your own JEE7!<br />Not only an API but also a SPI<br />Rich ecosystem of CDI extensions<br />Adds the Web conversation context<br />Spring does NOT provide support for CDI<br />7<br />
  10. 10. Evolution of Spring [ 1.0, 2.0, 2.5, 3.0, 3.1]<br />8<br />
  11. 11. Spring Framework<br />9<br />Lightweight dependency injection <br />Aspect oriented<br />Layered application & container framework<br />Well defined modules on top of the core container<br />NOT an all-or-nothing solution<br />
  12. 12. Birds Eye View<br />10<br />
  13. 13. Java EE vs. Spring Framework Features/APIs Overview<br />11<br />
  14. 14. Java EE vs. Spring Business Component<br />12<br />
  15. 15. Spring XML for Business Component Injection<br />13<br />
  16. 16. Spring XML for Business Component Injection<br />14<br />
  17. 17. Spring Java Based Configuration<br />15<br />
  18. 18. Spring Java Based Configuration<br />16<br />
  19. 19. Java EE Interceptor vs. Spring Aspects<br />17<br />
  20. 20. Java EE vs. Spring Injection<br />18<br />
  21. 21. Java EE vs. Spring Injection – Spring configuration<br />19<br />
  22. 22. Facelet Component<br />20<br />JSF 2 vs. Spring MVC Front Controller<br />
  23. 23. 21<br />JSF 2 vs. Spring MVC Front Controller<br />Facelet<br />
  24. 24. 22<br />JSF 2 vs. Spring MVC Front Controller<br />Entity<br />JSF Event Handler<br />
  25. 25. JSF 2 vs. Spring MVC<br />23<br />Spring MVC JSP<br />
  26. 26. Spring MVC Configuration<br />24<br />
  27. 27. Spring Controller<br />25<br />
  28. 28. Spring MVC web.xml configuration<br />26<br />
  29. 29. Java EE vs. Spring Scheduling<br />27<br />
  30. 30. Java EE vs. Spring Scheduling<br />28<br />
  31. 31. Java EE vs. Spring Messaging<br />29<br />
  32. 32. Spring JMS Configuration<br />30<br />
  33. 33. Spring Message Producer<br />31<br />
  34. 34. Java EE Message Producer & JMS Abstraction<br />32<br />
  35. 35. Java EE Message Producer & JMS Abstraction<br />33<br />
  36. 36. Hacking the Java EE Platform - CDI Extensions<br />Activated by dropping jars on the application classpath<br />Loaded by the java.util.ServiceLoader SPI<br />Integrate with container through container lifecycle events by<br />Register additional beans, interceptors and decorators<br />Injecting dependencies into its own objects<br />Introduce custom scope with backing context<br />Augment or override bean annotation-based metadata with other source<br /> Tools/utilities, extending Java EE, integration with Java EE APIs, integrating with non-standard APIs, making Java EE features available in non-Java EE <br />34<br />
  37. 37. Spring Ecosystem<br />35<br />
  38. 38. CDI Ecosystem Snapshot<br />36<br />Runtimes<br />Implementations<br />Portable Extensions<br />Weld<br />CanDI<br />Tools<br />
  39. 39. Spring & Java EE Coexistence<br />Integration with Java EE APIs <br />Spring beans can be injected into JSF Managed Beans<br />Spring beans can be referenced in EL with no JSF Backing beans<br />Spring JmsTemplate can be used on top of raw JMS API for convenience<br />Spring Listeners similar to EJB MDBs especially JCA rather than JMS listeners<br />Hibernate validator standardized as Bean Validation (JSR 303) <br />Spring 3 supports excellent bi-directional integration with EJBs<br />CDI and Spring Integration through the Spring Bridge to CDI<br />Native support for Java EE<br />Java EE5 and Java EE6 annotations supported by Spring<br />Spring can use JPA / Hibernate natively<br />Application server integration<br />DataSourcescan use application server QoS like pooling, transactions, statement caching, debugging, monitoring and security<br />37<br />
  40. 40. Java EE coexistence with Spring<br />38<br />
  41. 41. Birds Eye View<br />39<br />
  42. 42. References<br />Evolution of Java EE http://en.wikipedia.org/wiki/Java_EE_version_history<br />Java EE 6 Tutorial http://download.oracle.com/javaee/6/tutorial/doc/<br />Spring Docs http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/<br />Spring Projects http://www.springsource.org/projects<br />Miscellaneous CDI Extensions https://github.com/softwaremill/softwaremill-common<br />Migrating Spring to Java EE <br />https://github.com/paulbakker/migrating-spring-to-javaee<br />http://ocpsoft.com/java/spring-to-java-ee-a-migration-guide-cdi-jsf-jpa-jta-ejb/<br />CDI- Spring Bridge<br />http://rick-hightower.blogspot.com/2011/04/cdi-and-spring-living-in-harmony.html<br />http://niklasschlimm.blogspot.com/2011/08/jsr-299-cdi-interceptors-for-spring.html<br />http://niklasschlimm.blogspot.com/2011/08/jsr-299-cdi-decorators-for-spring-beans.html<br />Best practices integrating Spring with WebSphere Application Server<br />http://www.ibm.com/developerworks/websphere/techjournal/0609_alcott/0609_alcott.htm<br />What’s new in Spring 3.1 http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#new-in-3.1<br />40<br />
  43. 43. References continued <br />SEAM 3 http://seamframework.org/Seam3<br />CODI http://myfaces.apache.org/extensions/cdi/<br />Weld http://seamframework.org/Weld<br />CanDIhttp://www.caucho.com/resin/candi/<br />OpenWebBeanshttp://openwebbeans.apache.org/owb/index.html<br />41<br />

×