Warum empfehle ich
meinen Kunden das
Spring Framework
?
Slide 2
Slide 2 text
Michael Plöd
Partner und Principal Architect bei
Senacor Technologies AG
Autor Java Magazin
@bitboss
http://speakerdeck.com/mploed
Slide 3
Slide 3 text
100%
unabhängig
Slide 4
Slide 4 text
2005
Java EE Entwickler
Spring Entwickler
Slide 5
Slide 5 text
2013
Java EE Entwickler
Spring Entwickler
Slide 6
Slide 6 text
Java EE
vs
Spring
Slide 7
Slide 7 text
Java EE
mit oder
ohne
Spring
!
Slide 8
Slide 8 text
Mit beiden Wegen wird man sein
Projekt liefern
Slide 9
Slide 9 text
Die
Argumentation findet
auf architektureller
Entscheider Ebene
statt
Slide 10
Slide 10 text
Sagen
und
Mythen
Slide 11
Slide 11 text
Spring
ist eine
XML Hölle
Slide 12
Slide 12 text
0Zeilen XML für
eine Spring Web-
Anwendung
Slide 13
Slide 13 text
Spring
ist
komplex
Slide 14
Slide 14 text
Man muss kein Jedi
Developer sein
Slide 15
Slide 15 text
Spring
hat zu viele
Dependencies
Slide 16
Slide 16 text
Ist das Ihre
Zielplattform?
Slide 17
Slide 17 text
Spring ist
Proprietär und
nicht portabel
Slide 18
Slide 18 text
Wer hat schon
eine nicht-triviale
JEE Anwendung
als drop-in
portiert?
Slide 19
Slide 19 text
Wichtig ist eine
ganzheitliche
Betrachtung
Slide 20
Slide 20 text
Betrieb Road-Map
Code
Slide 21
Slide 21 text
Betriebliche
Aspekte
Slide 22
Slide 22 text
Infrastruktur
Slide 23
Slide 23 text
Infrastruktur
App Server
Servlet
Container
Operations Team
Slide 24
Slide 24 text
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
Slide 25
Slide 25 text
Projekt Libs
Slide 26
Slide 26 text
Projekt Libs
Hibernate
...
Spring
Development Team
Slide 27
Slide 27 text
Update Umfang
Hibernate
...
Spring
Dediziert
Einzelne
Libraries
Ad Hoc
Wenig Test
Slide 28
Slide 28 text
Roundtrips
Hibernate
...
Spring
App Server
Servlet
Container
2-4 Monate 2-3 Jahre
Slide 29
Slide 29 text
DEV OPS
vs
?
Slide 30
Slide 30 text
Mit Spring binde ich mein
Programmiermodell lose
an die Runtime und
gewinne somit viel
Flexibiliät
Slide 31
Slide 31 text
Coding
Slide 32
Slide 32 text
? Sind
Dependency
Injection
und
Testing
entscheidend
Slide 33
Slide 33 text
Bitte nachdenken:
wir sind im Jahr
2013
und nicht in
2005
Slide 34
Slide 34 text
Dependency
Injection
und
Testing
sind
Commodity
Slide 35
Slide 35 text
Entscheidend ist das
gesamte Ökosystem
Slide 36
Slide 36 text
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-330
JTA JDBC 4.1
JPA 2.0
JSF 2.0 JSR-303 JMX 1.0
Spring Data
als Beispiel
Data
JPA MongoDB Neo4j GemFire
HBase
Redis JDBC Splunk Querydsl
HDFS MapReduce Hive
Pig Cascading SI/Batch
Slide 39
Slide 39 text
JPA 2 Query
...
public class PersonDAO ... {
private EntityManager em;
public List 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
Slide 40
Slide 40 text
Spring Data
@Repository
public interface PersonRepository extends JpaRepository {
List findByFirstname(String firstname);
}
Slide 41
Slide 41 text
Spring Data mit
QueryDSL
@Repository
public interface PersonRepository extends JpaRepository,
QueryDslPredicateExecutor {
List 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));
Slide 42
Slide 42 text
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
Slide 43
Slide 43 text
Wo bleiben die
Java EE
Antworten
auf NoSQL, Mobile,
Social, etc?
Slide 44
Slide 44 text
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 !
Slide 45
Slide 45 text
Spring bietet neben den
Basics zahlreiche stabile
Helfer und höherwertige
APIs rund um innovative
Themen
!Die Java EE 6 Vendoren
haben
1,5 Jahre
für den ersten voll
unterstützten Container
benötigt
Slide 49
Slide 49 text
Java EE 7:
3,5 Jahre später
12 / 2009 Final Spec Release JEE 6
Q2 / 2013 Final Spec Release JEE 7
Slide 50
Slide 50 text
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
Slide 51
Slide 51 text
Was bleibt übrig?
Slide 52
Slide 52 text
JAX-WS 2.0
CDI 1.1
JMS 2.0
nach
11 Jahren
JPA 2.1
Servlet 3.1 JSF 2.2
....
Java EE 7
Slide 53
Slide 53 text
12 / 2009 Spring 3.0
12 / 2011 Spring 3.1
12 / 2012 Spring 3.2
Spring Seit 2009
12 / 2009 12 / 2011 End 2012
Voller Support
Auf allen Servern
sofort verfügbar
Slide 54
Slide 54 text
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
Ab API Release ist API in
Produktion verfügbar in
42 Monate
3,5 Jahre
Slide 55
Slide 55 text
Rechenbeispiel
Spring 3.0
API Release 12 / 2009 0 Monate
Interne
Verfügbarkeit
3 / 2010 3 Monate
Ab API Release ist API in
Produktion verfügbar in
Ab API Release ist API in
Produktion verfügbar in
3 Monate
Slide 56
Slide 56 text
Mit Spring habe ich eine
zuverlässige und
innovative Road-Map mit
sofortiger Verfügbarkeit
auf allen gängigen Servern
und vollem Support
Slide 57
Slide 57 text
Betrieb Road-Map
Code
Slide 58
Slide 58 text
Betrieb Road-Map
Code
Mit Spring binde ich mein
Programmiermodell lose an die
Runtime und gewinne somit viel
Flexibiliät
Slide 59
Slide 59 text
Road-Map
Code
Spring bietet neben den Basics
zahlreiche stabile Helfer und
höherwertige APIs rund um
innovative Themen
Betrieb
Slide 60
Slide 60 text
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
Slide 61
Slide 61 text
Deshalb empfehle ich
meinen Kunden das
Spring Framework
!
Slide 62
Slide 62 text
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
Interesse das Gehörte in der Praxis
umzusetzen?
Senacor sucht laufend
Entwickler und Architekten
[email protected]
http://www.senacor.com