JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

55
@ivar_grimstad JDD 2014 Spring 4, Java EE 7 or Both? Ivar Grimstad

description

Problems choosing between Java EE and Spring? Or do you want to use both in combination? Then this session is something for you. In this session I will go through the similarities and differences between Spring 4 and Java EE 7. I will go through what you need to consider to configure and combine the two approaches. In the demo part of the presentation I will show how to integrate existing Spring 4 components into a Java EE 7 application. And as if that is not enough, I will also do it the other way around, that is to integrate existing Java EE 7 components into a Spring 4 application. Strengths and weaknesses with the approaches will then be explored and lessons learned summarized.

Transcript of JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

Page 1: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4, Java EE 7 or Both?Ivar Grimstad

Page 2: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Page 3: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Contents

Spring 4 Java EE 7 Combining Spring 4 with Java EE 7

Page 4: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Timeline

1998 2014

JPE J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7

Spring Spring 1 Spring 2 Spring 3 Spring 4

Page 5: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring Framework 4

Page 6: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Page 7: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

XML ?

Page 8: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Annotations and JavaConfig to the Rescue

Page 9: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

New in Spring 4

Page 10: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Page 11: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java 8 Support

Page 12: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

@Repeatable

@Fruit(1) @Fruit(2) class Bowl {} !

@Fruits({@Fruit(1), @Fruit(2)}) class Bowl {}

Page 13: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Callback Interfaces

interface RowMapper<T> { T mapRow(ResultSet rs, int rowNum); }

Page 14: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 Support

JMS 2.0

Concurrency Utilities

JTA 1.2 JPA 2.1

Bean!Validation 1.1

Java EE 6 Support

Page 15: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Groovy Bean Definition Language

Page 16: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Core Container Improvements

@Autowired private Foo<Integer> i; !

@Autowired private Foo<String> s;

Page 17: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Web Improvements

@Controller @ResponseBody public Response foo() {}

@RestController public Response foo() {}

Page 18: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

WebSockets

spring-websocket !

spring-messaging

Page 19: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7

Page 20: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Overview

Page 21: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 Focus Areas

Page 22: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Developer Productivity

Page 23: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Simplicity

@Stateless public class Foo {}

Page 24: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

HTML 5

Page 25: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

WebSockets

@ServerEndpoint public class Foo {} !

@ClientEndpoint public class FooClient {

Page 26: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Meeting Enterprise Demands

Page 27: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

JMS 2.0@Stateless public class Foo { !

@Inject private JMSContext context; !

@Resource(lookup=“jms/MyQueue”) private Queue queue; }

Page 28: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Compatibility

Page 29: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Mixing Spring 4 with Java EE 7

Page 30: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 vs Spring 4

Page 31: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4 vs Java EE 7

Page 32: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7Container

Java EE 7 Application (WAR)

bean

bean

@Inject

Page 33: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4Container

Spring 4 Application (WAR)

Spring 4 Context

bean

bean

@Autowired

Page 34: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

So What about Mixing Spring and Java EE?

Page 35: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

bean

Spring 4 Context

bean

bean bean

@Inject

@Inject @Autowired

Page 36: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

bean

Spring 4 Context

bean

beanbean

@Autowired

@Inject@Autowired

Page 37: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

DEMO !

Page 38: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Integrate a Spring 4 Componentin

Java EE 7 Application

Page 39: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

resource

simple

@Inject

Spring 4 Context

awsome

simple

@Autowired

@Inject

Page 40: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

resource awsome

simple

Spring 4 Context

@Autowired@Inject

@Inject

Page 41: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

resource awsome

simple simple

@Inject

@Inject @AutowiredX

Page 42: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Integrate a Java EE 7 Componentin

Spring 4 Application

Page 43: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

awsome

simple

@Inject

Spring 4 Context

resource

simple

@Autowired

@EJB

Page 44: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

awsome

simple

@Inject

resource

Spring 4 Context

@Autowired

@EJB

Page 45: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

awsomeresource

Spring 4 Context

@EJB

@Injectsimple

@Autowired

@Autowired

Page 46: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Summary

Page 47: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4 and Java EE 7solves the same problem

Page 48: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Java EE 7 require less configuration and

dependencies

Page 49: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Spring 4 is more portable

Page 50: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Using Spring 4 from Java EE is easier

Page 51: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Mixing is possible

Page 52: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

…but…

Page 53: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Favor one framework over mixing

Page 54: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

Sources

https://github.com/ivargrimstad/spring-javaee

Page 55: JDD2014: Spring 4, JAVA EE 7 or both? - Ivar Grimstad

@ivar_grimstadJDD 2014

cybercom.com