Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Warum empfehle ich meinen Kunden das Spring Framework

Michael Plöd
November 07, 2012

Warum empfehle ich meinen Kunden das Spring Framework

In den letzten Jahren wurde vermehrt die Diskussion JEE 6 vs. Spring geführt. Wobei immer öfter die Irrelevanz des Spring Frameworks heraufbeschworen wurde. Im Rahmen des Vortrags möchte ich - abseits jeglicher Polemik - schildern, warum das Spring Framework noch immer eine Daseinsberechtigung hat und warum ich meinen Kunden noch immer zum Einsatz von Spring rate.

Michael Plöd

November 07, 2012
Tweet

More Decks by Michael Plöd

Other Decks in Technology

Transcript

  1. Warum empfehle ich
    meinen Kunden das
    Spring Framework
    ?

    View Slide

  2. Michael Plöd
    Partner und Principal Architect bei
    Senacor Technologies AG
    Autor Java Magazin
    @bitboss
    http://speakerdeck.com/mploed

    View Slide

  3. 100%
    unabhängig

    View Slide

  4. 2005
    Java EE Entwickler
    Spring Entwickler

    View Slide

  5. 2013
    Java EE Entwickler
    Spring Entwickler

    View Slide

  6. Java EE
    vs
    Spring

    View Slide

  7. Java EE
    mit oder
    ohne
    Spring
    !

    View Slide

  8. Mit beiden Wegen wird man sein
    Projekt liefern

    View Slide

  9. Die
    Argumentation findet
    auf architektureller
    Entscheider Ebene
    statt

    View Slide

  10. Sagen
    und
    Mythen

    View Slide

  11. Spring
    ist eine
    XML Hölle

    View Slide

  12. 0Zeilen XML für
    eine Spring Web-
    Anwendung

    View Slide

  13. Spring
    ist
    komplex

    View Slide

  14. Man muss kein Jedi
    Developer sein

    View Slide

  15. Spring
    hat zu viele
    Dependencies

    View Slide

  16. Ist das Ihre
    Zielplattform?

    View Slide

  17. Spring ist
    Proprietär und
    nicht portabel

    View Slide

  18. Wer hat schon
    eine nicht-triviale
    JEE Anwendung
    als drop-in
    portiert?

    View Slide

  19. Wichtig ist eine
    ganzheitliche
    Betrachtung

    View Slide

  20. Betrieb Road-Map
    Code

    View Slide

  21. Betriebliche
    Aspekte

    View Slide

  22. Infrastruktur

    View Slide

  23. Infrastruktur
    App Server
    Servlet
    Container
    Operations Team

    View Slide

  24. 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

    View Slide

  25. Projekt Libs

    View Slide

  26. Projekt Libs
    Hibernate
    ...
    Spring
    Development Team

    View Slide

  27. Update Umfang
    Hibernate
    ...
    Spring
    Dediziert
    Einzelne
    Libraries
    Ad Hoc
    Wenig Test

    View Slide

  28. Roundtrips
    Hibernate
    ...
    Spring
    App Server
    Servlet
    Container
    2-4 Monate 2-3 Jahre

    View Slide

  29. DEV OPS
    vs
    ?

    View Slide

  30. Mit Spring binde ich mein
    Programmiermodell lose
    an die Runtime und
    gewinne somit viel
    Flexibiliät

    View Slide

  31. Coding

    View Slide

  32. ? Sind
    Dependency
    Injection
    und
    Testing
    entscheidend

    View Slide

  33. Bitte nachdenken:
    wir sind im Jahr
    2013
    und nicht in
    2005

    View Slide

  34. Dependency
    Injection
    und
    Testing
    sind
    Commodity

    View Slide

  35. Entscheidend ist das
    gesamte Ökosystem

    View Slide

  36. 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

    View Slide

  37. 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

    View Slide

  38. Spring Data
    als Beispiel
    Data
    JPA MongoDB Neo4j GemFire
    HBase
    Redis JDBC Splunk Querydsl
    HDFS MapReduce Hive
    Pig Cascading SI/Batch

    View Slide

  39. 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

    View Slide

  40. Spring Data
    @Repository
    public interface PersonRepository extends JpaRepository {
    List findByFirstname(String firstname);
    }

    View Slide

  41. 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));

    View Slide

  42. 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

    View Slide

  43. Wo bleiben die
    Java EE
    Antworten
    auf NoSQL, Mobile,
    Social, etc?

    View Slide

  44. 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 !

    View Slide

  45. Spring bietet neben den
    Basics zahlreiche stabile
    Helfer und höherwertige
    APIs rund um innovative
    Themen

    View Slide

  46. Road-Maps

    View Slide

  47. 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

    View Slide

  48. !Die Java EE 6 Vendoren
    haben
    1,5 Jahre
    für den ersten voll
    unterstützten Container
    benötigt

    View Slide

  49. Java EE 7:
    3,5 Jahre später
    12 / 2009 Final Spec Release JEE 6
    Q2 / 2013 Final Spec Release JEE 7

    View Slide

  50. 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

    View Slide

  51. Was bleibt übrig?

    View Slide

  52. 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

    View Slide

  53. 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

    View Slide

  54. 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

    View Slide

  55. 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

    View Slide

  56. Mit Spring habe ich eine
    zuverlässige und
    innovative Road-Map mit
    sofortiger Verfügbarkeit
    auf allen gängigen Servern
    und vollem Support

    View Slide

  57. Betrieb Road-Map
    Code

    View Slide

  58. Betrieb Road-Map
    Code
    Mit Spring binde ich mein
    Programmiermodell lose an die
    Runtime und gewinne somit viel
    Flexibiliät

    View Slide

  59. Road-Map
    Code
    Spring bietet neben den Basics
    zahlreiche stabile Helfer und
    höherwertige APIs rund um
    innovative Themen
    Betrieb

    View Slide

  60. 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

    View Slide

  61. Deshalb empfehle ich
    meinen Kunden das
    Spring Framework
    !

    View Slide

  62. 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

    View Slide