SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Java EE and Spring Framework Shootout Rohit Kelapure IBM Advisory Software Engineer, http://wasdynacache.blogspot.com/ Reza RahmanIndependent Consultant, Author, Java EE Expert http://www.rahmannet.net/ Presentation can be downloaded from http://db.tt/1q9us2JH
Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.  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.  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. ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. 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.  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.  NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:  - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS 2
Copyright and Trademarks © IBM Corporation 2011. All Rights Reserved.  IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., and 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 – see the IBM “Copyright and trademark information” page at URL:  www.ibm.com/legal/copytrade.shtml 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 Conclusion 4
J2EE Java EE  Specifications * Introduced in spec.
Evolution of J2EEJava EE6 (Dec 09) New specs (JAX-RS, CDI, Bean Validation) Prune dead wood EJB 2.x, JAX-RPC, JAXR, JEE App. Deploy, JEE App mgmt. Extensibility  Easy Framework Pluggability (web fragments & CDI Extensions) Enhanced ease of development POJO annotation based Servlets,  Asynchronous processing (Servlet 3.0 & EJB 3.1) EJB 3.1 EJB-in-WAR, No-interface view, Singleton, EJB-lite, Timers Contextual Dependency Injection (CDI) RESTful services Portable JNDI names JSF2.0 Facelets, built-in-AJAX, Skins, Annotations, Resource handling Simplified Navigation, Easier custom components, View & Page scopes Bookmarkable pages, Project Stage, Expanded event model JPA 2.0 Mapping enhancements, JPAQL, Criteria Query API, Pessimistic locking Profiles  reduce platform size   Web Profile 12 specs Vendor support WebSphere AS 8  JBOSS AS 7  Oracle WebLogic 11g  Glassfish 3 6
JSR 299  Contexts and Dependency Injection (CDI) ,[object Object]
Hollywood principle - Don’t call us, we will call you
No hard coded dependencies on other specificationsAssists in unifying the Bean model Well defined contexts, the ability to bind beans statefully to them & manage their lifecycle. Introduces an event notification system to decouple producers & consumers Uses interceptors to foster loose coupling  Extend behavior with type safe interceptor bindings Refines interceptors into decorators for finer grained control Integrates with the Unified EL to bridge JSF Enables use of EJB 3.0 components as JSF managed beans Introduces an SPI to extend JEE – Roll your own JEE7! Not only an API but also a SPI Rich ecosystem of CDI extensions Adds the Web conversation context Spring does NOT provide support for CDI 7
Evolution of Spring  [ 1.0, 2.0, 2.5, 3.0, 3.1] 8
Spring Framework 9 Lightweight dependency injection  Aspect oriented Layered application & container framework Well defined modules on top of the core container NOT an all-or-nothing solution
Birds Eye View 10
Java EE  vs. Spring Framework Features/APIs Overview 11
Java EE vs. Spring Business Component 12
Spring XML for Business Component Injection 13
Spring XML for Business Component Injection 14
Spring  Java Based Configuration 15
Spring  Java Based Configuration 16
Java EE Interceptor vs. Spring Aspects 17
Java EE vs. Spring Injection 18
Java EE vs. Spring Injection – Spring configuration 19
Facelet Component 20 JSF 2 vs. Spring MVC Front Controller
21 JSF 2 vs. Spring MVC Front Controller Facelet
22 JSF 2 vs. Spring MVC Front Controller Entity JSF Event  Handler
JSF 2 vs. Spring MVC 23 Spring MVC JSP
Spring MVC Configuration 24
Spring Controller 25
Spring MVC web.xml configuration 26
Java EE vs. Spring Scheduling 27
Java EE vs. Spring Scheduling 28
Java EE vs. Spring Messaging 29
Spring  JMS  Configuration 30
Spring Message Producer 31
Java EE Message Producer & JMS Abstraction 32
Java EE Message Producer & JMS Abstraction 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 EE  34
Spring Ecosystem 35
CDI Ecosystem Snapshot 36 Runtimes Implementations Portable Extensions Weld CanDI Tools
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 DataSourcescan use application server QoS like pooling, transactions, statement caching, debugging, monitoring and security 37
Java EE coexistence with Spring 38
Birds Eye View 39

Weitere ähnliche Inhalte

Was ist angesagt?

Docker and the Linux Kernel
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux KernelDocker, Inc.
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaAraf Karsh Hamid
 
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...Randy Shoup
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Java Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and ExampleJava Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and Examplekamal kotecha
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlArjun Thakur
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring BootVincent Kok
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introductionRasheed Waraich
 
EJB 3.0 - Yet Another Introduction
EJB 3.0 - Yet Another IntroductionEJB 3.0 - Yet Another Introduction
EJB 3.0 - Yet Another IntroductionKelum Senanayake
 

Was ist angesagt? (20)

Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Docker and the Linux Kernel
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux Kernel
 
Maven
MavenMaven
Maven
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
 
Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Java Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and ExampleJava Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and Example
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Spring ppt
Spring pptSpring ppt
Spring ppt
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Maven ppt
Maven pptMaven ppt
Maven ppt
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
EJB3 Basics
EJB3 BasicsEJB3 Basics
EJB3 Basics
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
EJB 3.0 - Yet Another Introduction
EJB 3.0 - Yet Another IntroductionEJB 3.0 - Yet Another Introduction
EJB 3.0 - Yet Another Introduction
 

Andere mochten auch

Java EE and Spring Side-by-Side
Java EE and Spring Side-by-SideJava EE and Spring Side-by-Side
Java EE and Spring Side-by-SideReza Rahman
 
Microservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloudMicroservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloudBen Wilcock
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6Bert Ertman
 
SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server Rohit Kelapure
 
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...timfanelli
 
Java EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsMurat Yener
 
Java EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJosh Juneau
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudEberhard Wolff
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - CoreDzmitry Naskou
 
Java EE Revisits Design Patterns
Java EE Revisits Design PatternsJava EE Revisits Design Patterns
Java EE Revisits Design PatternsAlex Theedom
 
jDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring SmackdownjDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring SmackdownMert Çalışkan
 
Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3Arun Gupta
 
Java EE revisits design patterns
Java EE revisits design patternsJava EE revisits design patterns
Java EE revisits design patternsAlex Theedom
 
Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352Armel Nene
 
The Modern Java Web Developer - JavaOne 2013
The Modern Java Web Developer - JavaOne 2013The Modern Java Web Developer - JavaOne 2013
The Modern Java Web Developer - JavaOne 2013Matt Raible
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-finalRohit Kelapure
 

Andere mochten auch (20)

Java EE and Spring Side-by-Side
Java EE and Spring Side-by-SideJava EE and Spring Side-by-Side
Java EE and Spring Side-by-Side
 
Microservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloudMicroservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloud
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
 
SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server
 
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
 
Java EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design Patterns
 
Java EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVC
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Cache Tooling
Cache ToolingCache Tooling
Cache Tooling
 
Java EE Revisits Design Patterns
Java EE Revisits Design PatternsJava EE Revisits Design Patterns
Java EE Revisits Design Patterns
 
jDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring SmackdownjDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring Smackdown
 
Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3
 
Java EE revisits design patterns
Java EE revisits design patternsJava EE revisits design patterns
Java EE revisits design patterns
 
Spring
SpringSpring
Spring
 
Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352
 
The Modern Java Web Developer - JavaOne 2013
The Modern Java Web Developer - JavaOne 2013The Modern Java Web Developer - JavaOne 2013
The Modern Java Web Developer - JavaOne 2013
 
Move from J2EE to Java EE
Move from J2EE to Java EEMove from J2EE to Java EE
Move from J2EE to Java EE
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
 
D Y N A C A C H E Wxs
D Y N A C A C H E WxsD Y N A C A C H E Wxs
D Y N A C A C H E Wxs
 

Ähnlich wie Java EE vs Spring Framework

Spring Framework
Spring FrameworkSpring Framework
Spring Frameworknomykk
 
Jetspeed-2 Overview
Jetspeed-2 OverviewJetspeed-2 Overview
Jetspeed-2 Overviewbettlebrox
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSUFYAN SATTAR
 
Spring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggetsSpring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggetsVirtual Nuggets
 
Spring boot vs spring framework razor sharp web applications
Spring boot vs spring framework razor sharp web applicationsSpring boot vs spring framework razor sharp web applications
Spring boot vs spring framework razor sharp web applicationsKaty Slemon
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkDineesha Suraweera
 
Spring presentecion isil
Spring presentecion isilSpring presentecion isil
Spring presentecion isilWilly Aguirre
 
Spring presentecion isil
Spring presentecion isilSpring presentecion isil
Spring presentecion isilWilly Aguirre
 
Securing JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenSecuring JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenDavid Chandler
 
Spring framework
Spring frameworkSpring framework
Spring frameworksrmelody
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year projectsuneel singh
 
Developer Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and ArquillianDeveloper Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and ArquillianRay Ploski
 

Ähnlich wie Java EE vs Spring Framework (20)

Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Jetspeed-2 Overview
Jetspeed-2 OverviewJetspeed-2 Overview
Jetspeed-2 Overview
 
Spring Framework Rohit
Spring Framework RohitSpring Framework Rohit
Spring Framework Rohit
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptx
 
Spring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggetsSpring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggets
 
Spring boot vs spring framework razor sharp web applications
Spring boot vs spring framework razor sharp web applicationsSpring boot vs spring framework razor sharp web applications
Spring boot vs spring framework razor sharp web applications
 
JBoss AS7 OSDC 2011
JBoss AS7 OSDC 2011JBoss AS7 OSDC 2011
JBoss AS7 OSDC 2011
 
Java J2EE
Java J2EEJava J2EE
Java J2EE
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Ejb notes
Ejb notesEjb notes
Ejb notes
 
Spring presentecion isil
Spring presentecion isilSpring presentecion isil
Spring presentecion isil
 
Spring presentecion isil
Spring presentecion isilSpring presentecion isil
Spring presentecion isil
 
J2ee seminar
J2ee seminarJ2ee seminar
J2ee seminar
 
Securing JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenSecuring JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top Ten
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Jfxpub binding
Jfxpub bindingJfxpub binding
Jfxpub binding
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year project
 
Jboss
JbossJboss
Jboss
 
Developer Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and ArquillianDeveloper Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and Arquillian
 

Mehr von Rohit Kelapure

API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice?  API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice? Rohit Kelapure
 
External should that be a microservice
External should that be a microserviceExternal should that be a microservice
External should that be a microserviceRohit Kelapure
 
Should That Be a Microservice ?
Should That Be a Microservice ?Should That Be a Microservice ?
Should That Be a Microservice ?Rohit Kelapure
 
Travelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platformTravelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platformRohit Kelapure
 
SpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutesSpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutesRohit Kelapure
 
Migrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixMigrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixRohit Kelapure
 
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...Rohit Kelapure
 
A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix Rohit Kelapure
 
Liberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_steLiberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_steRohit Kelapure
 
Dynacache in WebSphere Portal Server
Dynacache in WebSphere Portal ServerDynacache in WebSphere Portal Server
Dynacache in WebSphere Portal ServerRohit Kelapure
 
Classloader leak detection in websphere application server
Classloader leak detection in websphere application serverClassloader leak detection in websphere application server
Classloader leak detection in websphere application serverRohit Kelapure
 
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-finalRohit Kelapure
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-finalRohit Kelapure
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshopRohit Kelapure
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroductionRohit Kelapure
 
IBM Health Center Details
IBM Health Center DetailsIBM Health Center Details
IBM Health Center DetailsRohit Kelapure
 
Debugging java deployments_2
Debugging java deployments_2Debugging java deployments_2
Debugging java deployments_2Rohit Kelapure
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparisonRohit Kelapure
 
First Failure Data Capture for your enterprise application with WebSphere App...
First Failure Data Capture for your enterprise application with WebSphere App...First Failure Data Capture for your enterprise application with WebSphere App...
First Failure Data Capture for your enterprise application with WebSphere App...Rohit Kelapure
 

Mehr von Rohit Kelapure (20)

API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice?  API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice?
 
External should that be a microservice
External should that be a microserviceExternal should that be a microservice
External should that be a microservice
 
Should That Be a Microservice ?
Should That Be a Microservice ?Should That Be a Microservice ?
Should That Be a Microservice ?
 
Travelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platformTravelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platform
 
SpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutesSpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutes
 
Migrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixMigrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMix
 
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
 
A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix
 
Liberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_steLiberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_ste
 
1812 icap-v1.3 0430
1812 icap-v1.3 04301812 icap-v1.3 0430
1812 icap-v1.3 0430
 
Dynacache in WebSphere Portal Server
Dynacache in WebSphere Portal ServerDynacache in WebSphere Portal Server
Dynacache in WebSphere Portal Server
 
Classloader leak detection in websphere application server
Classloader leak detection in websphere application serverClassloader leak detection in websphere application server
Classloader leak detection in websphere application server
 
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshop
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroduction
 
IBM Health Center Details
IBM Health Center DetailsIBM Health Center Details
IBM Health Center Details
 
Debugging java deployments_2
Debugging java deployments_2Debugging java deployments_2
Debugging java deployments_2
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparison
 
First Failure Data Capture for your enterprise application with WebSphere App...
First Failure Data Capture for your enterprise application with WebSphere App...First Failure Data Capture for your enterprise application with WebSphere App...
First Failure Data Capture for your enterprise application with WebSphere App...
 

Kürzlich hochgeladen

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 

Java EE vs Spring Framework

  • 1. Java EE and Spring Framework Shootout Rohit Kelapure IBM Advisory Software Engineer, http://wasdynacache.blogspot.com/ Reza RahmanIndependent Consultant, Author, Java EE Expert http://www.rahmannet.net/ Presentation can be downloaded from http://db.tt/1q9us2JH
  • 2. Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. 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. 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. ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. 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. 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. NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS 2
  • 3. Copyright and Trademarks © IBM Corporation 2011. All Rights Reserved. IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., and 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 – see the IBM “Copyright and trademark information” page at URL: www.ibm.com/legal/copytrade.shtml 3
  • 4. 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 Conclusion 4
  • 5. J2EE Java EE Specifications * Introduced in spec.
  • 6. Evolution of J2EEJava EE6 (Dec 09) New specs (JAX-RS, CDI, Bean Validation) Prune dead wood EJB 2.x, JAX-RPC, JAXR, JEE App. Deploy, JEE App mgmt. Extensibility Easy Framework Pluggability (web fragments & CDI Extensions) Enhanced ease of development POJO annotation based Servlets, Asynchronous processing (Servlet 3.0 & EJB 3.1) EJB 3.1 EJB-in-WAR, No-interface view, Singleton, EJB-lite, Timers Contextual Dependency Injection (CDI) RESTful services Portable JNDI names JSF2.0 Facelets, built-in-AJAX, Skins, Annotations, Resource handling Simplified Navigation, Easier custom components, View & Page scopes Bookmarkable pages, Project Stage, Expanded event model JPA 2.0 Mapping enhancements, JPAQL, Criteria Query API, Pessimistic locking Profiles reduce platform size Web Profile 12 specs Vendor support WebSphere AS 8 JBOSS AS 7 Oracle WebLogic 11g Glassfish 3 6
  • 7.
  • 8. Hollywood principle - Don’t call us, we will call you
  • 9. No hard coded dependencies on other specificationsAssists in unifying the Bean model Well defined contexts, the ability to bind beans statefully to them & manage their lifecycle. Introduces an event notification system to decouple producers & consumers Uses interceptors to foster loose coupling Extend behavior with type safe interceptor bindings Refines interceptors into decorators for finer grained control Integrates with the Unified EL to bridge JSF Enables use of EJB 3.0 components as JSF managed beans Introduces an SPI to extend JEE – Roll your own JEE7! Not only an API but also a SPI Rich ecosystem of CDI extensions Adds the Web conversation context Spring does NOT provide support for CDI 7
  • 10. Evolution of Spring [ 1.0, 2.0, 2.5, 3.0, 3.1] 8
  • 11. Spring Framework 9 Lightweight dependency injection Aspect oriented Layered application & container framework Well defined modules on top of the core container NOT an all-or-nothing solution
  • 13. Java EE vs. Spring Framework Features/APIs Overview 11
  • 14. Java EE vs. Spring Business Component 12
  • 15. Spring XML for Business Component Injection 13
  • 16. Spring XML for Business Component Injection 14
  • 17. Spring Java Based Configuration 15
  • 18. Spring Java Based Configuration 16
  • 19. Java EE Interceptor vs. Spring Aspects 17
  • 20. Java EE vs. Spring Injection 18
  • 21. Java EE vs. Spring Injection – Spring configuration 19
  • 22. Facelet Component 20 JSF 2 vs. Spring MVC Front Controller
  • 23. 21 JSF 2 vs. Spring MVC Front Controller Facelet
  • 24. 22 JSF 2 vs. Spring MVC Front Controller Entity JSF Event Handler
  • 25. JSF 2 vs. Spring MVC 23 Spring MVC JSP
  • 28. Spring MVC web.xml configuration 26
  • 29. Java EE vs. Spring Scheduling 27
  • 30. Java EE vs. Spring Scheduling 28
  • 31. Java EE vs. Spring Messaging 29
  • 32. Spring JMS Configuration 30
  • 34. Java EE Message Producer & JMS Abstraction 32
  • 35. Java EE Message Producer & JMS Abstraction 33
  • 36. 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 EE 34
  • 38. CDI Ecosystem Snapshot 36 Runtimes Implementations Portable Extensions Weld CanDI Tools
  • 39. 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 DataSourcescan use application server QoS like pooling, transactions, statement caching, debugging, monitoring and security 37
  • 40. Java EE coexistence with Spring 38
  • 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.1 40
  • 43. References continued SEAM 3 http://seamframework.org/Seam3 CODI http://myfaces.apache.org/extensions/cdi/ Weld http://seamframework.org/Weld CanDIhttp://www.caucho.com/resin/candi/ OpenWebBeanshttp://openwebbeans.apache.org/owb/index.html 41

Hinweis der Redaktion

  1. http://www.ibm.com/developerworks/websphere/library/techarticles/0707_barcia/0707_barcia.htmlhttp://en.wikipedia.org/wiki/Java_EE_version_historyA brief history of J2EE / Java EEBefore J2EE (Mid 1990s)Many competing products, In-house frameworks, Fragmented server side market, real danger of vendor lock-in, expensive solutionsGlory days of J2EE (1999-2003)Release of J2EE 1.2, 1.3 & 1.4Specifying first and then implementingStandardization of server side java enterprise technologiesEnterprise Java gains a reputation of complexityDecline of J2EE (2004- 2008)Projects fail due to flaws in platformRise of open source – Spring Framework, Seam, AspectJ, HibernateMove towards lighter weight solutionsRise of Java EE (2007 - Present)Emphasis on user Component model not just a deployment platformDeveloper productivity & ease of use enhancements Extensibility and right sizingTraps that created complexityDesign by committeeEverything has to be standardizedTools can make complexity acceptableLack of openness to other platforms, sources of ideasLack of developer freedom to hack the platformIvory tower architectureEJB Programming model was the worst offenderNaïve ORM solution & Broken persistence modelIdea that all business objects should be distributedRigid API interfaces, Difficult to unit test, Needed IDE toolingGlutton for XML & boilerplateJSF 1.2 ShortcomingsNo integration with EJBsNo templating support (before 1.2) Transparent to HTTP RequestsDifficult to create custom componentsLacks conversation scope & advanced componentsWeak page oriented supportOverly complex lifecycleJSP & JSF inherent mismatchJava EE pioneers innovations in server-side JavaA widely deployed but much maligned platformSpring, along with Hibernate, brings POJO programming, IoC and testability to the mainstreamJava EE 5 adopts ideas, as well as annotations and convention-over-configurationHibernate standardized into JPA, Spring remains nonstandard but adopts Java EE features to a degreeJava EE 6 matures ideas in Java EE 5 in addition to pruning and profilesCDI, JSF 2, JPA 2, EJB 3.1, Servlet 3, JAX-RS major API changes
  2. Context abuse HttpSessionSo many beans so little common groundAddresses long standing challenges with Java EE
  3. http://blog.springsource.com/2011/02/11/spring-framework-3-1-m1-released/Bean definition profilesUnified property management through Spring's new Environment abstractionEnhancements to Java-based configuration with @Feature methodsExpanded MVC namespace support and a Java-based configuration equivalentStreaming support and new interception model for the RestTemplate APIComprehensive caching supportNew c: XML namespace for concise configuration of constructor injection
  4. Applications developed against commonframework(s)– common programming model– common configuration model• Adapted onto target platform at runtime– using common service abstractions– thread pooling, service lookups, etc• Strict separation between applicationcomponent model and platform services– clear boundaries and separation of responsibilitieshttp://www.springsource.org/aboutThe most complete lightweight container, providing centralized, automated configuration and wiring of your application objects. The container is non-invasive, capable of assembling a complex system from a set of loosely-coupled components (POJOs) in a consistent and transparent fashion. The container brings agility and leverage, and improves application testability and scalability by allowing software components to be first developed and tested in isolation, then scaled up for deployment in any environment (J2SE or J2EE). A common abstraction layer for transaction management, allowing for pluggable transaction managers, and making it easy to demarcate transactions without dealing with low-level issues. Generic strategies for JTA and a single JDBC DataSource are included. In contrast to plain JTA or EJB CMT, Spring's transaction support is not tied to J2EE environments. A JDBC abstraction layer that offers a meaningful exception hierarchy (no more pulling vendor codes out of SQLException), simplifies error handling, and greatly reduces the amount of code you'll need to write. You'll never need to write another finally block to use JDBC again. The JDBC-oriented exceptions comply to Spring's generic DAO exception hierarchy. Integration with Toplink, Hibernate, JDO, and iBATIS SQL Maps: in terms of resource holders, DAO implementation support, and transaction strategies. First-class Hibernate support with lots of IoC convenience features, addressing many typical Hibernate integration issues. All of these comply to Spring's generic transaction and DAO exception hierarchies. AOP functionality, fully integrated into Spring configuration management. You can AOP-enable any object managed by Spring, adding aspects such as declarative transaction management. With Spring, you can have declarative transaction management without EJB... even without JTA, if you're using a single database in Tomcat or another web container without JTA support. A flexible MVC web application framework, built on core Spring functionality. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like JSP, Velocity, Tiles, iText, and POI. Note that a Spring middle tier can easily be combined with a web tier based on any other web MVC framework, like Struts, WebWork, or Tapestry.
  5. Both are competent middleware stacks with mostly equivalent functionality but very different approachesJava EE provides a well-integrated solution stack that makes sensible default choices for you and minimizes the amount of configuration requiredSpring is a pluggable framework with explicit configuration, fine grained control and wide-variety of integration with overlapping technologiesJava EE is an open standard, while Spring is an open source tool from a commercial vendorCDI and 3rd party Extensions have provided a standard compliant way to hack the Java EE platformSpring framework weakens integration with application server runtime QoS, such as security, workload management, and high availabilitySeveral implementations of Java EE specifications are available whereas Spring has only ONE implementationPace of innovation is faster in the Spring Framework since Spring is Community driven vs Java EE that is driven by the JCP
  6. MyFaces CODI is your best friend for CDI based projects.The Apache MyFaces Extensions CDI project (aka CODI) hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299) for the Java-Platform (SE and EE). CODI is a toolbox for your CDI application (it provides advanced and convenient features e.g. for JSF and Bean-Validation). Like CDI itself CODI is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project.The main focus is to provide superior tools which will support you on solving your daily needs of software development with CDI, JSF, BV and JPA. However, you will also find modules which are independent of JSF as well as modules which improve the compatibility with other MyFaces frameworks like MyFacesExtVal. Maybe the most important feature of MyFaces CODI is that it allows you to build a concise and efficient application-architecture.