lightweight javaee development with...

29
Lightweight JavaEE development with Spring Oliver Gierke – Synyx GmbH & Co. KG – [email protected]

Upload: others

Post on 19-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

Lightweight JavaEE development with SpringOliver Gierke – Synyx GmbH & Co. KG – [email protected]

Page 2: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Synyx

Synyx GmbH & Co. KG Client / Server systems Rich / Fat clients Java based CM (OpenCms) Minos business platform JavaME

Customers Public administrations Automotive Financial industry

Oliver Gierke Java (EE) developer

Client / Server

Architecture Agile methods

Spring, AOP

2

Page 3: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Motivation / background Enabling technologies Modules News in 2.0 / 2.1 Spring ecosystem Spring and EJB? Spring VS. EJB Mythbuster Summary

3

Overview

Page 4: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Starting position Experiences with EJB2 Specification

JavaEE component model Focus on distributing objects

„The first rule of distributing objects is don‘t distribute objects“ [1]

Complicated programming model 2 Interfaces per component + implementation

A lot of technical code -> technology dependency No (unit)testability Depending on the deployment environment (Java EE)

4

Motivation / Background

Page 5: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Component model (lifecycle) Declarative infrastructure services

Security Transactions Integration

Simple Powerful Technology- and platform independent (POJOs)

5

What do we want?

Page 6: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

What makes a Spring app?

POJO based programming model

Dependency Injection Inversion of Control

Aspect Orientation

Portable Service Abstraction

6

POJOs

IoC / DI

AOPPSA

Page 7: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Container Data Access ORM Integration Web Testing

7

Spring modules / parts

Page 8: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Dependency Injection Wiring objects Component lifecycle Configuration (XML, Annotations, JavaConfig) Extension points Resource abstraction Data binding, PropertyEditor

8

Container

Page 9: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

JDBC Abstraction

Template pattern

Exception transformation Checked -> unchecked Implementation independent exception hierarchy

9

Data access

Page 10: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Object Relational Mapping Integration of Hibernate, TopLink, JPA Template pattern

Transaction handling PlatformTransactionManager Strategy pattern JDBC, JPA, Hibernate, JTA, JDO Programmatic and declarative configuration

Benefits of DI / Strategy pattern driven design

10

ORM / Transactions

Page 11: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Remoting WebServices RMI, Hessian, Burlap, RPC

EJB 2.X / 3 consuming and providing

JMS JMX JCA CCI

11

Integration

Page 12: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Spring MVC Web framework – heavily DI driven (strategy pattern)

Spring WebFlow Let‘s you describe flows in XML (e.g. checkout flow)

Integration of 3rd party frameworks (Struts, JSF) Portlet (JSR-168)

12

Web

Page 13: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

No support for unit tests required as you can easily inject mocks (EasyMock e.g.)

Abstract classes to support integration tests e.g. AbstractTransactionalSpringContextTest

Opens a transaction for every test method and rolls it back afterwards

13

Testing

Page 14: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

XML Namespaces -> easier configuration JPA Asynchronous JMS Dynamic language support Support for @Aspect AspectJ annotations Java 5 support

14

2.0 News

Page 15: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Java 6 & JavaEE 5 (EJB 3, JTA 1.1, Java Mail 1.4) No JDK 1.3 support anymore Annotation driven DI Classpath scanner JCA 1.5 Enhanced JPA support Namespaces for JPA and web (maybe in 2.2)

15

2.5 News

Page 16: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Spring Security (Acegi) Spring WebServices Spring WebFlow Pitchfork Project (not Project Pitchfork ;) Spring IDE Spring OSGi Spring Extensions (Modules)

16

Spring eco system

Page 17: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Where is EJB now? Released in summer 2006 Annotation driven DI (simple, powerful but invasive) „AOP“ through interceptors True inheritance in entity beans (JPA) Flaws in EntityManager API

17

Spring and EJB / Spring VS EJB?

Page 18: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

EJB3 is actually a subset of Spring No real AOP means (Interceptors) Still binds implementation to technology

(Annotations)

Spring allows EJB integration (FactoryBean) and export of beans as EJB (Exporter)

Spring is integrative platform rather than a plain component model

18

Spring and EJB / Spring VS EJB?

Page 19: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

AOP is a tiny magic toy Spring reference projects

French online tax system Voca (Largest European system for financial transactions)

-> 5 Bio. transactions per year

XML configuration hell Modularizable, different ways of configuration

http://www.oreillynet.com/onjava/blog/2006/08/ten_common_misconceptions_abou.html

19

Mythbuster

Page 20: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Loose coupling between components

Cleaner architecture

Let‘s you think about dependencies

Separation of concerns

20

Spring affects programming

Page 21: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Spring allows real „Separation of concerns“ More modularized system (AOP) Less technical code

at least separated from business code

Technology and (as far as possible) Spring independent

Step by step integration possible (legacy systems)

Scales up AND down

21

Summary

Page 22: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Programming model

Integrative platform

Framework

22

What is Spring?

Page 23: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

OrderService (place and list orders)

3 different clients (web, swing and bot)

Test driven / contract

Distributed development

23

Demo Application

Page 24: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

24

Architecture

Page 25: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

25

Core Detail

Page 26: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Upcoming presentations Container Data Access, Transactions, ORM Web Integration (Remoting, WebServices, JMS, JMX)

www.springframework.org www.springhub.com groups.google.com/group/sugg

26

Where do we go from here?

Page 27: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

27

Feel free to ask!

WTF

Page 28: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Martin Fowler – Dependency Injection http://www.martinfowler.com/articles/injection.html

Eberhard Wolff – Spring 2 – Framework für die Java Entwicklung Book @ Amazon http://www.spring-buch.de/

Rod Johnson - Expert One-on-one J2EE Design and Development Book @ Amazon

Rod Johnson, Jürgen Höller - J2EE Development without EJB Book @ Amazon

Robert C. Martin – Agile Software Development Book @ Amazon

28

Sources

Page 29: Lightweight JavaEE development with Springjug-karlsruhe.de/assets/slides/j2ee-entwicklung-mit-spring.pdf · Spring MVC Web framework – heavily DI driven (strategy pattern) Spring

11 .01.08

Eclipse 3.3 (Europa) – www.eclipse.org SpringIDE 2.0.1 (Dev) – www.springide.org M2Eclipse – m2eclipse.codehaus.org AspectJ Development Tools – 1.5.0

29

Development Environment