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

Post on 01-Jul-2015

565 views 0 download

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

@ivar_grimstadJDD 2014

Spring 4, Java EE 7 or Both?Ivar Grimstad

@ivar_grimstadJDD 2014

@ivar_grimstadJDD 2014

Contents

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

@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

@ivar_grimstadJDD 2014

Spring Framework 4

@ivar_grimstadJDD 2014

@ivar_grimstadJDD 2014

XML ?

@ivar_grimstadJDD 2014

Annotations and JavaConfig to the Rescue

@ivar_grimstadJDD 2014

New in Spring 4

@ivar_grimstadJDD 2014

@ivar_grimstadJDD 2014

Java 8 Support

@ivar_grimstadJDD 2014

@Repeatable

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

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

@ivar_grimstadJDD 2014

Callback Interfaces

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

@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

@ivar_grimstadJDD 2014

Groovy Bean Definition Language

@ivar_grimstadJDD 2014

Core Container Improvements

@Autowired private Foo<Integer> i; !

@Autowired private Foo<String> s;

@ivar_grimstadJDD 2014

Web Improvements

@Controller @ResponseBody public Response foo() {}

@RestController public Response foo() {}

@ivar_grimstadJDD 2014

WebSockets

spring-websocket !

spring-messaging

@ivar_grimstadJDD 2014

Java EE 7

@ivar_grimstadJDD 2014

Overview

@ivar_grimstadJDD 2014

Java EE 7 Focus Areas

@ivar_grimstadJDD 2014

Developer Productivity

@ivar_grimstadJDD 2014

Simplicity

@Stateless public class Foo {}

@ivar_grimstadJDD 2014

HTML 5

@ivar_grimstadJDD 2014

WebSockets

@ServerEndpoint public class Foo {} !

@ClientEndpoint public class FooClient {

@ivar_grimstadJDD 2014

Meeting Enterprise Demands

@ivar_grimstadJDD 2014

JMS 2.0@Stateless public class Foo { !

@Inject private JMSContext context; !

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

@ivar_grimstadJDD 2014

Compatibility

@ivar_grimstadJDD 2014

Mixing Spring 4 with Java EE 7

@ivar_grimstadJDD 2014

Java EE 7 vs Spring 4

@ivar_grimstadJDD 2014

Spring 4 vs Java EE 7

@ivar_grimstadJDD 2014

Java EE 7Container

Java EE 7 Application (WAR)

bean

bean

@Inject

@ivar_grimstadJDD 2014

Spring 4Container

Spring 4 Application (WAR)

Spring 4 Context

bean

bean

@Autowired

@ivar_grimstadJDD 2014

So What about Mixing Spring and Java EE?

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

bean

Spring 4 Context

bean

bean bean

@Inject

@Inject @Autowired

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

bean

Spring 4 Context

bean

beanbean

@Autowired

@Inject@Autowired

@ivar_grimstadJDD 2014

DEMO !

@ivar_grimstadJDD 2014

Integrate a Spring 4 Componentin

Java EE 7 Application

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

resource

simple

@Inject

Spring 4 Context

awsome

simple

@Autowired

@Inject

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

resource awsome

simple

Spring 4 Context

@Autowired@Inject

@Inject

@ivar_grimstadJDD 2014

Java EE 7 -> Spring 4Container

Java EE 7 Application (WAR)

resource awsome

simple simple

@Inject

@Inject @AutowiredX

@ivar_grimstadJDD 2014

Integrate a Java EE 7 Componentin

Spring 4 Application

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

awsome

simple

@Inject

Spring 4 Context

resource

simple

@Autowired

@EJB

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

awsome

simple

@Inject

resource

Spring 4 Context

@Autowired

@EJB

@ivar_grimstadJDD 2014

Spring 4 -> Java EE 7Container

Spring 4 Application (WAR)

awsomeresource

Spring 4 Context

@EJB

@Injectsimple

@Autowired

@Autowired

@ivar_grimstadJDD 2014

Summary

@ivar_grimstadJDD 2014

Spring 4 and Java EE 7solves the same problem

@ivar_grimstadJDD 2014

Java EE 7 require less configuration and

dependencies

@ivar_grimstadJDD 2014

Spring 4 is more portable

@ivar_grimstadJDD 2014

Using Spring 4 from Java EE is easier

@ivar_grimstadJDD 2014

Mixing is possible

@ivar_grimstadJDD 2014

…but…

@ivar_grimstadJDD 2014

Favor one framework over mixing

@ivar_grimstadJDD 2014

Sources

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

@ivar_grimstadJDD 2014

cybercom.com