Warum empfehle ich
meinen Kunden das
Spring Framework
?
Michael Plöd
Partner und Principal Architect bei
Senacor Technologies AG
Autor Java Magazin
@bitboss
http://speakerdeck.com/mploed
100%
unabhängig
2005
Java EE Entwickler
Spring Entwickler
2014
Java EE Entwickler
Spring Entwickler
Java EE

vs

Spring
Java EE

mit oder
ohne

Spring
!
Mit beiden Wegen wird man sein
Projekt liefern
App
Server
Die
Argumentation findet
auf architektureller
Entscheider Ebene
statt
Sagen
und
Mythen
Spring
ist eine
XML Hölle
0Zeilen XML für
eine Spring Web-
Anwendung
Spring
ist
komplex
Man muss kein Jedi
Developer sein
Spring
hat zu viele
Dependencies
Ist das Ihre
Zielplattform?
Spring ist
Proprietär und
nicht portabel
Wer hat schon
eine nicht-triviale
JEE Anwendung
als drop-in
portiert?
Wichtig ist eine
ganzheitliche
Betrachtung
Betrieb Road-MapCode
Betriebliche

Aspekte
Infrastruktur
Infrastruktur
App Server
!
Servlet
Container
Operations Team
Update Umfang
App Server
!
Servlet
Container
Server
Runtime
Libraries wie
!
CDI, Servlet,

JPA, JSF, ...
Eventuell
JVM
Viel 

Planung und

Testing nötig
Integration
in Monitoring
etc
Projekt Libs
Projekt Libs
Hibernate
...
Spring
Development Team
Update Umfang
Hibernate
...
Spring
Dediziert
Einzelne
Libraries
Ad Hoc
!
Wenig Test
Roundtrips
Hibernate
...
Spring
App Server
!
Servlet
Container
2-4 Monate 2-3 Jahre
DEV OPS
vs
?
Mit Spring binde ich mein
Programmiermodell lose an
die Runtime und gewinne
somit viel Flexibiliät
Coding
?
Sind

Dependency
Injection
und
Testing
entscheidend
Bitte nachdenken:
wir sind im Jahr

2014
und nicht in
2005
Dependency
Injection
und
Testing
sind
Commodity
Entscheidend ist das
gesamte Ökosystem

Die Basis von Spring
setzt auf Java EE auf

!Scheduling MVC REST JMX Testing Caching Profiles
DI AOP TX JMS AOP JDBC ORM OXM Expression
JSR-250 JSR-330JTA JDBC 4.1
JPA 2.0JSF 2.0 JSR-303 JMX 1.0
WebServices AMQP Roo
Security
OAuth
Data
JPA MongoDB Neo4j GemFire
HBase 

Redis JDBC Splunk Querydsl



HDFS MapReduce Hive

Pig Cascading SI/Batch
Social
Twitter

LinkedIn

Facebook
WebFlow
!Scheduling MVC REST JMX Testing Caching Profiles
DI AOP TX JMS AOP JDBC ORM OXM Expression
Batch

!
Integration
!
Mobile
Spring Data

als Beispiel
Data
JPA MongoDB Neo4j GemFire
HBase 

Redis JDBC Splunk Querydsl



HDFS MapReduce Hive

Pig Cascading SI/Batch
JPA 2 Query

...
public class PersonDAO ... {
private EntityManager em;
!
public List<Person> findByFirstname(String firstname) {
Query q = em.createQuery(“from Person p where p.firstname = :name “)
.setParameter(“name“, firstname)
return q.getResultList();
}
}
JPA 2 Query

...
public class PersonDAO ... {
private EntityManager em;
!
public List<Person> findByFirstname(String firstname) {
Query q = em.createQuery(“from Person p where p.firstname = :name “)
.setParameter(“name“, firstname)
return q.getResultList();
}
}
Wir schreiben in der Regel viele kleine
Queries wie diese
Spring Data

@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
List<Kunde> findByFirstname(String firstname);
}
Spring Data mit
QueryDSL

@Repository
public interface PersonRepository extends JpaRepository<Person, Long>,

QueryDslPredicateExecutor<Person> {
List<Kunde> findByFirstname(String firstname);
}
!
!
!
!
!
QPerson P = QPerson.person;
BooleanExpression hasBirthday = p.birthday.eq(...);
BooleanExpression livesInLinz = p.adress.city.eq("Linz");
Person result = personRepository.findAll(hasBirthday.and(livesInLinz));
Spring Data adressiert
auch NoSQL, Big Data
and Data Grids

Data
JPA MongoDB Neo4j GemFire HBase 

Redis JDBC Splunk Querydsl



HDFS MapReduce Hive

Pig Cascading SI/Batch
Wo bleiben die
Java EE
Antworten
auf NoSQL, Mobile,
Social, etc?
Zur Erinnerung
App Server
!
Servlet
Container
Server
Runtime
Libraries wie
!
CDI, Servlet,

JPA, JSF, ...
Eventuell
JVM
Viel 

Planung und

Testing nötig
! Üblicher Roundtrip 2-3 Jahre !
Spring bietet neben den
Basics zahlreiche stabile
Helfer und höherwertige
APIs rund um innovative
Themen
Road-Maps
Java EE 6
12 / 2009 Mid 201112 / 2010 01 / 2012 02 / 2012
12 / 2009 Final Spec Release (GlassFish, kein Support)
12 / 2010 JBoss 6 (Web Profile, kein Support)
Mid 2011 WebSphere 8
01 / 2012 WebLogic 12c
02 / 2012 JBoss 7.1
!
Die Java EE Vendoren
haben
1,5 Jahre

für den ersten voll
unterstützten Container
benötigt
Java EE 7:
3,5 Jahre später
12 / 2009 Final Spec Release JEE 6
Q2 / 2013 Final Spec Release JEE 7
???
Erster Container mit
Support
News rund um
Java EE 7
Cloud Plattform wird auf
Java EE 8 verschoben
Social API wird vorerst
gestoppt
JCache wird doch nicht
Bestandteil von Java EE 7
Was bleibt übrig?
JAX-WS 2.0
CDI 1.1JMS 2.0

!
nach

11 Jahren
JPA 2.1Servlet 3.1 JSF 2.2
....
Java EE 7
12 / 2009 Spring 3.0
12 / 2011 Spring 3.1
12 / 2012 Spring 3.2
12 / 2013 Spring 4.0
Spring Seit 2009
12 / 2009 12 / 2011 End 2013
Voller Support
!
Auf allen Servern
sofort verfügbar
12 / 2012
Rechenbeispiel
Java EE
API Release 12 / 2009 0 Monate
Server Mid 2011 18 Monate
Interne
Verfügbarkeit
Mid 2013 18 + 24 Monate
Ab API Release ist API in
Produktion verfügbar in
42 Monate

3,5 Jahre
Rechenbeispiel
Spring 4.0
API Release 12 / 2009 0 Monate
Interne
Verfügbarkeit
3 / 2010 3 Monate
Ab API Release ist API in
Produktion verfügbar in
3 Monate
Mit Spring habe ich eine
zuverlässige und
innovative Road-Map mit
sofortiger Verfügbarkeit
auf allen gängigen Servern
und vollem Support
Betrieb Road-MapCode
Betrieb Road-MapCode
Mit Spring binde ich mein
Programmiermodell lose an die
Runtime und gewinne somit viel
Flexibiliät
Road-MapCode
Spring bietet neben den Basics
zahlreiche stabile Helfer und
höherwertige APIs rund um
innovative Themen
Betrieb
Road-Map
Mit Spring habe ich eine
zuverlässige und innovative
Road-Map mit sofortiger
Verfügbarkeit auf allen
gängigen Servern und vollem
Support
Betrieb Code
Deshalb empfehle ich
meinen Kunden das
Spring Framework
!
Vielen Dank!!!
Photos / Grafiken (c) Michael Plöd / Senacor Technologies AG
Ausnahme: Photos auf Folien 2, 9 (c) Matthias Heyde; Photo auf Folie 34 lizensiert von istockphoto
Pointy Font lizensiert von Bitfoundry
Morgen 08:30 Uhr
Gutenbergsaal 4
Caching Best Practices!
michael.ploed@senacor.com
http://www.senacor.com!

Warum empfehle ich meinen Kunden das Spring Framework?