Warum empfehle ich meinen Kunden das Spring Framework

21a532a137b506128914478ac521fc8b?s=47 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.

21a532a137b506128914478ac521fc8b?s=128

Michael Plöd

November 07, 2012
Tweet

Transcript

  1. Warum empfehle ich meinen Kunden das Spring Framework ?

  2. Michael Plöd Partner und Principal Architect bei Senacor Technologies AG

    Autor Java Magazin @bitboss http://speakerdeck.com/mploed
  3. 100% unabhängig

  4. 2005 Java EE Entwickler Spring Entwickler

  5. 2013 Java EE Entwickler Spring Entwickler

  6. Java EE vs Spring

  7. Java EE mit oder ohne Spring !

  8. Mit beiden Wegen wird man sein Projekt liefern

  9. Die Argumentation findet auf architektureller Entscheider Ebene statt

  10. Sagen und Mythen

  11. Spring ist eine XML Hölle

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

  13. Spring ist komplex

  14. Man muss kein Jedi Developer sein

  15. Spring hat zu viele Dependencies

  16. Ist das Ihre Zielplattform?

  17. Spring ist Proprietär und nicht portabel

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

  19. Wichtig ist eine ganzheitliche Betrachtung

  20. Betrieb Road-Map Code

  21. Betriebliche Aspekte

  22. Infrastruktur

  23. Infrastruktur App Server Servlet Container Operations Team

  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
  25. Projekt Libs

  26. Projekt Libs Hibernate ... Spring Development Team

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

    Wenig Test
  28. Roundtrips Hibernate ... Spring App Server Servlet Container 2-4 Monate

    2-3 Jahre
  29. DEV OPS vs ?

  30. Mit Spring binde ich mein Programmiermodell lose an die Runtime

    und gewinne somit viel Flexibiliät
  31. Coding

  32. ? Sind Dependency Injection und Testing entscheidend

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

    2005
  34. Dependency Injection und Testing sind Commodity

  35. Entscheidend ist das gesamte Ökosystem

  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
  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
  38. Spring Data als Beispiel Data JPA MongoDB Neo4j GemFire HBase

    Redis JDBC Splunk Querydsl HDFS MapReduce Hive Pig Cascading SI/Batch
  39. 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
  40. Spring Data @Repository public interface PersonRepository extends JpaRepository<Person, Long> {

    List<Kunde> findByFirstname(String firstname); }
  41. 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));
  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
  43. Wo bleiben die Java EE Antworten auf NoSQL, Mobile, Social,

    etc?
  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 !
  45. Spring bietet neben den Basics zahlreiche stabile Helfer und höherwertige

    APIs rund um innovative Themen
  46. Road-Maps

  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
  48. !Die Java EE 6 Vendoren haben 1,5 Jahre für den

    ersten voll unterstützten Container benötigt
  49. Java EE 7: 3,5 Jahre später 12 / 2009 Final

    Spec Release JEE 6 Q2 / 2013 Final Spec Release JEE 7
  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
  51. Was bleibt übrig?

  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
  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
  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
  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
  56. Mit Spring habe ich eine zuverlässige und innovative Road-Map mit

    sofortiger Verfügbarkeit auf allen gängigen Servern und vollem Support
  57. Betrieb Road-Map Code

  58. Betrieb Road-Map Code Mit Spring binde ich mein Programmiermodell lose

    an die Runtime und gewinne somit viel Flexibiliät
  59. Road-Map Code Spring bietet neben den Basics zahlreiche stabile Helfer

    und höherwertige APIs rund um innovative Themen Betrieb
  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
  61. Deshalb empfehle ich meinen Kunden das Spring Framework !

  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 michael.ploed@senacor.com http://www.senacor.com