Java EE and Spring Framework Shootout    Rohit Kelapure    WebSphere Application Server Caching Architect    Apache OpenWe...
Please Note    IBMs statements regarding its plans, directions, and intent are subject to change    or withdrawal at IBMs ...
Outline       Evolution of Java EE and Spring       Java EE 6 & Spring 3.0, 3.1 highlights       Spring 3.1 feature com...
J2EE Java EE Specifications                                   * Introduced in spec.4
Evolution of J2EEJava EE6 (Dec 09)                                                               • Facelets, built-in-AJA...
JSR 299 Contexts and Dependency Injection (CDI)     Adds dependency injection to JEE and               interceptor bindin...
Spring Framework                        Lightweight dependency injection                        Aspect oriented         ...
Evolution of Spring                        [ 1.0, 2.0, 2.5, 3.0, 3.1]                                                     ...
Birds Eye View9
Java EE vs. Spring Framework Features/APIs10
Java EE vs. Spring Business Component11
Spring XML for Business Component Injection12
Spring XML for Business Component Injection13
Spring Java Based Configuration14
Spring Java Based Configuration15
Java EE Interceptor vs. Spring Aspects16
Java EE vs. Spring Injection17
Java EE vs. Spring Injection18
JSF 2 vs. Spring MVC Front Controller      Facelet Component19
JSF 2 vs. Spring MVC Front Controller      Facelet20
JSF 2 vs. Spring MVC Front Controller                                  Entity21
JSF 2 vs. Spring MVC     Spring MVC JSP22
Spring MVC Configuration23
Spring Controller24
Spring MVC web.xml configuration25
Java EE vs. Spring Scheduling26
Java EE vs. Spring Scheduling27
Java EE vs. Spring Messaging28
Spring JMS Configuration29
Spring Message Producer30
Java EE Message Producer & JMS Abstraction31
Java EE Message Producer & JMS Abstraction32
Hacking the Java EE Platform - CDI Extensions      Activated by dropping jars on the application classpath      Loaded b...
Spring Ecosystem34
CDI Ecosystem Snapshot     Implementations            Portable    Runtimes                               Extensions     We...
Spring & Java EE Coexistence      Integration with Java EE APIs         – Spring beans can be injected into JSF Managed B...
Best Practices integrating Spring WAS      Presentation tier considerations        – Web MVC & Portlet      Data access ...
Java EE coexistence with Spring38
Migrating Spring to Java EE 6     1.   Upgrade Spring version     2.   Replace old frameworks (ORM, Web Framework) within ...
Myths of Java EE      EJBs are heavy weight               "bloated“      EJBs are hard to test              J2EE and EJ...
Birds Eye View41
References      Evolution of Java EE http://en.wikipedia.org/wiki/Java_EE_version_history      Java EE 6 Tutorial http:/...
References continued        SEAM 3 http://seamframework.org/Seam3        CODI http://myfaces.apache.org/extensions/cdi/ ...
We love your Feedback!      Don’t forget to submit your Impact session and speaker       feedback! Your feedback is very ...
Copyright and Trademarks       © IBM Corporation 2012. All Rights Reserved.        IBM, the IBM logo, ibm.com are trademar...
Upcoming SlideShare
Loading in …5
×

2012 04-06-v2-tdp-1163-java e-evsspringshootout-final

2,892 views

Published on

Spring Framework

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,892
On SlideShare
0
From Embeds
0
Number of Embeds
1,310
Actions
Shares
0
Downloads
56
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

2012 04-06-v2-tdp-1163-java e-evsspringshootout-final

  1. 1. Java EE and Spring Framework Shootout Rohit Kelapure WebSphere Application Server Caching Architect Apache OpenWebBeans Committer IBM http://wasdynacache.blogspot.com/ http://www.linkedin.com/in/rohitkelapure http://twitter.com/rkela Recording: http://www.parleys.com/#st=5&id=2819&sl=0 Session ID = TDP-11631
  2. 2. Please Note IBMs statements regarding its plans, directions, and intent are subject to change or withdrawal at IBMs sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion. Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the users job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.2
  3. 3. Outline  Evolution of Java EE and Spring  Java EE 6 & Spring 3.0, 3.1 highlights  Spring 3.1 feature comparison with Java EE 6  CDI and Spring ecosystem  Spring and Java EE coexistence  Spring to Java EE migration  Conclusion3
  4. 4. J2EE Java EE Specifications * Introduced in spec.4
  5. 5. Evolution of J2EEJava EE6 (Dec 09) • Facelets, built-in-AJAX, Skins,  New specs (JAX-RS, CDI, Bean Annotations, Resource handling Validation) • Simplified Navigation, Easier custom components, View & Page scopes  Prune dead wood • Bookmarkable pages, Project Stage, – EJB 2.x, JAX-RPC, JAXR, JEE App. Expanded event model Deploy, JEE App mgmt. – JPA 2.0  Extensibility • Mapping enhancements, JPAQL, Criteria Query API, Pessimistic – Easy Framework Pluggability (web locking fragments & CDI Extensions)  Profiles reduce platform size  Enhanced ease of development – Web Profile 12 specs – POJO annotation based Servlets, – Asynchronous processing (Servlet 3.0 &  Vendor support EJB 3.1) – WebSphere AS 8 – EJB 3.1 – JBOSS AS 7 • EJB-in-WAR, No-interface view, – Oracle WebLogic 11g Singleton, EJB-lite, Timers – Glassfish 3 – Contextual Dependency Injection (CDI) – RESTful services – Portable JNDI names – JSF2.05
  6. 6. JSR 299 Contexts and Dependency Injection (CDI)  Adds dependency injection to JEE and interceptor bindings makes it type-safe. – Refines interceptors into decorators for finer grained control – Hollywood principle - Don’t call us, we will call you  Integrates with the Unified EL to bridge – No hard coded dependencies on JSF other specifications – Enables use of EJB 3.0 components  Assists in unifying the Bean model as JSF managed beans  Well defined contexts, the ability to bind  Introduces an SPI to extend JEE – Roll your own JEE7! beans statefully to them & manage their lifecycle. – Not only an API but also a SPI – Rich ecosystem of CDI extensions  Introduces an event notification system  Adds the Web conversation context to decouple producers & consumers  Spring does NOT provide support for  Uses interceptors to foster loose CDI coupling – Extend behavior with type safe6
  7. 7. Spring Framework  Lightweight dependency injection  Aspect oriented  Layered application & container framework  Well defined modules on top of the core container  NOT an all-or-nothing solution7
  8. 8. Evolution of Spring [ 1.0, 2.0, 2.5, 3.0, 3.1] 3.0 3.1 • JSR-330 “at • A new “c” inject” namespace 2.5 • New Spring • Configuration 1.0 2.0 • Annotation- Expression profiles • Dependency driven wiring Language • Problem- • Automatic • First-class REST • Unified injection specific XML bean support property • POJO- • Extensible oriented configuration • Java-based resolution configuration development • New configuration • Java • Bean scoping annotation- • Declarative • Several new configuration • Groovy, JRuby, driven MVC Spring MVC AOP & and BeanShell features transactions framework features • MVC • JSP tag library • JUnit 4-based • Servlet 3.0 • Support for JSR- support framework • Java 5 integration 303 declarative autoboxing testing validation • Declarative and generics • Annotation-based caching background and • Spring MVC scheduled jobs enhancements8
  9. 9. Birds Eye View9
  10. 10. Java EE vs. Spring Framework Features/APIs10
  11. 11. Java EE vs. Spring Business Component11
  12. 12. Spring XML for Business Component Injection12
  13. 13. Spring XML for Business Component Injection13
  14. 14. Spring Java Based Configuration14
  15. 15. Spring Java Based Configuration15
  16. 16. Java EE Interceptor vs. Spring Aspects16
  17. 17. Java EE vs. Spring Injection17
  18. 18. Java EE vs. Spring Injection18
  19. 19. JSF 2 vs. Spring MVC Front Controller  Facelet Component19
  20. 20. JSF 2 vs. Spring MVC Front Controller  Facelet20
  21. 21. JSF 2 vs. Spring MVC Front Controller Entity21
  22. 22. JSF 2 vs. Spring MVC Spring MVC JSP22
  23. 23. Spring MVC Configuration23
  24. 24. Spring Controller24
  25. 25. Spring MVC web.xml configuration25
  26. 26. Java EE vs. Spring Scheduling26
  27. 27. Java EE vs. Spring Scheduling27
  28. 28. Java EE vs. Spring Messaging28
  29. 29. Spring JMS Configuration29
  30. 30. Spring Message Producer30
  31. 31. Java EE Message Producer & JMS Abstraction31
  32. 32. Java EE Message Producer & JMS Abstraction32
  33. 33. Hacking the Java EE Platform - CDI Extensions  Activated by dropping jars on the application classpath  Loaded by the java.util.ServiceLoader SPI  Integrate with container through container lifecycle events by – Register additional beans, interceptors and decorators – Injecting dependencies into its own objects – Introduce custom scope with backing context – Augment or override bean annotation-based metadata with other source  Tools/utilities, extending Java EE, integration with Java EE APIs, integrating with non-standard APIs, making Java EE features available in non-Java EE33
  34. 34. Spring Ecosystem34
  35. 35. CDI Ecosystem Snapshot Implementations Portable Runtimes Extensions Weld CanDI Tools35
  36. 36. Spring & Java EE Coexistence  Integration with Java EE APIs – Spring beans can be injected into JSF Managed Beans – Spring beans can be referenced in EL with no JSF Backing beans – Spring JmsTemplate can be used on top of raw JMS API for convenience – Spring Listeners similar to EJB MDBs especially JCA rather than JMS listeners – Hibernate validator standardized as Bean Validation (JSR 303) – Spring 3 supports excellent bi-directional integration with EJBs – CDI and Spring Integration through the Spring Bridge to CDI  Native support for Java EE – Java EE5 and Java EE6 annotations supported by Spring – Spring can use JPA / Hibernate natively  Application server integration – DataSources can use application server QoS like pooling, transactions, statement caching, debugging, monitoring and security36
  37. 37. Best Practices integrating Spring WAS  Presentation tier considerations – Web MVC & Portlet  Data access considerations – Using JDBC native connections – Transactions, JPA & JMS  Spring Security Considerations – Bypassing WAS security  Integration & Management considerations – Registering Spring Mbeans in the application server – Classloaders  Design Considerations – Unmanaged threads – Scheduling & Threadpools37
  38. 38. Java EE coexistence with Spring38
  39. 39. Migrating Spring to Java EE 6 1. Upgrade Spring version 2. Replace old frameworks (ORM, Web Framework) within Spring 3. Run Spring and Java EE container side by side 4. Replace Spring entirely 5. Remove Spring container39
  40. 40. Myths of Java EE  EJBs are heavy weight "bloated“  EJBs are hard to test  J2EE and EJB2 sucked! “That  EJBs are not portable was eight years ago! Is this really your best shot?”  EJBs are slow  Application server portability is a  EJBs are not scalable myth!  EJBs are too complex  EJBs are hard to integrate with Web Frameworks and POJOs  EJBs are hard to configure  EJBs are hard to migrate  EJBs are hard to develop  EE application servers are40
  41. 41. Birds Eye View41
  42. 42. References  Evolution of Java EE http://en.wikipedia.org/wiki/Java_EE_version_history  Java EE 6 Tutorial http://download.oracle.com/javaee/6/tutorial/doc/  Spring Docs http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/  Spring Projects http://www.springsource.org/projects  Miscellaneous CDI Extensions https://github.com/softwaremill/softwaremill-common  Migrating Spring to Java EE – https://github.com/paulbakker/migrating-spring-to-javaee – http://ocpsoft.com/java/spring-to-java-ee-a-migration-guide-cdi-jsf-jpa-jta-ejb/  CDI- Spring Bridge – http://rick-hightower.blogspot.com/2011/04/cdi-and-spring-living-in-harmony.html – http://niklasschlimm.blogspot.com/2011/08/jsr-299-cdi-interceptors-for-spring.html – http://niklasschlimm.blogspot.com/2011/08/jsr-299-cdi-decorators-for-spring-beans.html  Best practices integrating Spring with WebSphere Application Server – http://www.ibm.com/developerworks/websphere/techjournal/0609_alcott/0609_alcott.htm  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.142
  43. 43. References continued  SEAM 3 http://seamframework.org/Seam3  CODI http://myfaces.apache.org/extensions/cdi/  Weld http://seamframework.org/Weld  CanDI http://www.caucho.com/resin/candi/  OpenWebBeans http://openwebbeans.apache.org/owb/index.html43
  44. 44. We love your Feedback!  Don’t forget to submit your Impact session and speaker feedback! Your feedback is very important to us, we use it to improve our conference for you next year.  Go to impactsmartsite.com from your mobile device  From the Impact 2012 Online Conference Guide: – Select Agenda – Navigate to the session you want to give feedback on – Select the session or speaker feedback links – Submit your feedback44
  45. 45. Copyright and Trademarks © IBM Corporation 2012. All Rights Reserved. IBM, the IBM logo, ibm.com are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml.45

×