Slide 1

Slide 1 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 46

Slide 46 text

Road-Maps

Slide 47

Slide 47 text

Java EE 6 12 / 2009 Mid 2011 12 / 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

Slide 48

Slide 48 text

!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