Von wegen
schwergewichtig
Moderne Webentwicklung mit Java EE 7
15
133
Minuten
LOC
45
160
Minuten
LOC
CC0 Public Domain – bretpit – https://pixabay.com/de/apfel-birne-pflaumen-obst-früchte-993366/
Vorstellung
http://soa.rocks
anwendungsentwickler
podcast.de
@StefanMacke
Stefan Macke
CC0 Public Domain – StartupStockPhotos – https://pixabay.com/de/whiteboard-mann-präsentation-849813/
Vechta
Java EE
CC0 Public Domain – Unsplash – https://pixabay.com/de/sonnenschirme-straße-geschäfte-690452/
38
JSRs
Java Persistence API
CC0 Public Domain – ColossusCloud – https://pixabay.com/de/server-wolke-entwicklung-geschäft-1235959/
Java Server Faces
CC0 Public Domain – Imonk72 – https://pixabay.com/de/webseite-code-html-codierung-647013/
Context and
Dependency
Injection
CC0 Public Domain – jochenpippir – https://pixabay.com/de/spritze-medizin-finger-957260/
Standard Edition
CC0 Public Domain – snoku – https://pixabay.com/de/baustelle-crane-pier-container-1156566/
CC0 Public Domain – susisorglos089 – https://pixabay.com/de/fundamente-wasser-bremerhaven-100698/
CC0 Public Domain – TanteTati – https://pixabay.com/de/spaghetti-pasta-nudeln-essen-781795/
CC0 Public Domain – Pezibear – https://pixabay.com/de/feder-weiß-leicht-zart-luftig-647915/
Beispielanwendung
MongoDB
Express.js
AngularJS
Node.js
MongoDB
EE
AngularJS
Java
CC0 Public Domain – Alexas_Fotos – https://pixabay.com/de/butler-tablett-getränke-wein-sekt-964009/
Domain Model =
Persistence Model
CC0 Public Domain – StartupStockPhotos – https://pixabay.com/de/whiteboard-mann-präsentat...
CC0 Public Domain – DiegoRodriguesdeCastro – https://pixabay.com/de/fotorahmen-frame-tiefe-878223/
Keine Frameworks*
CC0 Public Domain – DiegoRodriguesdeCastro – https://pixabay.com/de/fotorahmen-frame-tiefe-878223/
*außer
CC0 Public Domain – prima4you – https://pixabay.com/de/tier-löwin-faul-ausruhen-raubtier-1106359/
http://github.com/StefanMacke
persistence.xml
Erweiterungen
Lessons Learned
CC0 Public Domain – tpsdave – https://pixabay.com/de/colorado-hügel-landschaft-359919/
Annotation
Hell
Quelle: http://www.deic.uab.es/material/102750-javaEE7ReferenceSheet.pdf
CC0 Public Domain – Peggy_Marco – https://pixabay.com/de/ballonfahrt-ballon-feuer-bagan-1028896/
LOC
Java 130
Angular 70
RLY?
Literatur
Fazit
!=
Beinahe
leichtgewichtig
Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7
Nächste SlideShare
Wird geladen in …5
×

Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7

445 Aufrufe

Veröffentlicht am

Präsentation bei der Heise Developer World auf der CeBIT 2016

Folien mit Notizen: http://public.macke.it/Vortraege/CeBIT2016/StefanMacke-ModerneWebentwicklungMitJavaEE7.pdf

Bei moderner Webentwicklung denken viele Entwickler sicherlich nicht an Java...
...sondern eher an das bekannte Webframework Ruby on Rails.
Letztes Jahr wurde Ruby on Rails 10 Jahre alt.
Der Erfinder von Rails, David Heinemeier Hansson, hatte bereits 2005 ein Video veröffentlicht, das für Aufregung sorgte und Rails bekannt machte.
Darin erstellte er in 15 Minuten ein Blog-System mit Rails.
Inkl. Kommentarfunktion usw.
In der programmiererfreundlichen Sprache Ruby.
Für das Ganze benötigte er nur 133 LOC.
Mit Rails kann man also ein Blogsystem in 15 Minuten und mit nur 133 LOC erstellen.
Das nahm ich als Anlass, das Beispiel mit Java EE 7 nachzubauen.
Leider kam ich nicht so ganz an Rails ran. Und Funktionen wie Post hinzufügen fehlen auch.
Ich weiß, dass man ein Webframework nicht mit einer Programmierplattform vergleichen kann, aber ich denke, Java EE hat große Fortschritte im Bereich der Benutzbarkeit gemacht. Und das möchte ich heute vorstellen.
Beginnen wir mit dem ersten Teil der Präsentation: meiner Vorstellung.
Mein Name ist Stefan Macke.
Ich bin Softwareentwickler...
...und Softwarearchitekt...
...bei der ALTE OLDENBURGER Krankenversicherung AG...
...und Dozent – u.a. für Software-Engineering – an der PHWT.
Beide sind in Vechta zuhause...
...einer kleinen Stadt zwischen Osnabrück und Bremen.
Wir nutzen bereits mehrere Programmiersprachen, aber haben Java als Standard festgelegt. Und aktuell steigen wir in die Webentwicklung mit Java EE 7 ein.
Schauen wir uns einmal an, was Java EE eigentlich ist.
Java EE ist eine "Regenschirm-Spezifikation", die mehrere Spezifikationen zusammenfasst.
Bei Oracle konnte ich 38 Specification Requests zählen.
http://www.oracle.com/technetwork/java/javaee/tech/index.html
Dazu gehört z.B. der Zugriff auf die Datenbank...
...die Gestaltung von Weboberflächen...
...und das Querschnittsthema DI.
Anders als Java SE...
...wird Java EE in einem Container ausgeführt: dem Application Server.
Der Application Server stellt der Anwendung die gesamte Infrastruktur zur Verfügung, also z.B. Data Sources, JNDI-Lookups, CDI usw.
Darum muss sich der Entwickler nun nicht mehr selbst kümmern.
Application Server gibt es eine ganze Menge, sowohl kommerziell als auch Open Source.
Java EE war lange Zeit ein hoffnungslos überfrachtetes Framework, das gerade für Einsteiger kaum zu verstehen war. Lange Klassen und XML-Konfiguration überall.
Hier ist ein "schönes" Beispiel für eine solche Klasse (obwohl sie nicht aus Java EE stammt, sondern aus dem Spring-Framework).
Doch in Version 7 hat sich Java EE zu einem fast schon leichtgewichtigen Framework entwickelt. Und das möchte ich heute zeigen.

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
445
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
8
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • Bei moderner Webentwicklung denken viele Entwickler sicherlich nicht an Java…
  • …sondern eher an das bekannte Webframework Ruby on Rails.
  • Letztes Jahr wurde Ruby on Rails 10 Jahre alt.
    Der Erfinder von Rails, David Heinemeier Hansson, hatte bereits 2005 ein Video veröffentlicht, das für Aufregung sorgte und Rails bekannt machte.
  • Darin erstellte er in 15 Minuten ein Blog-System mit Rails.
  • Inkl. Kommentarfunktion usw.
  • Für das Ganze benötigte er nur 133 LOC.
  • Mit Rails kann man also ein Blogsystem in 15 Minuten und mit nur 133 LOC erstellen.
  • Das nahm ich als Anlass, das Beispiel mit Java EE 7 nachzubauen.
    Leider kam ich nicht so ganz an Rails ran. Und Funktionen wie Post hinzufügen fehlen auch.
  • Ich weiß, dass man ein Webframework nicht mit einer Programmierplattform vergleichen kann, aber ich denke, Java EE hat große Fortschritte im Bereich der Benutzbarkeit gemacht. Und das möchte ich heute vorstellen.
  • Beginnen wir mit dem ersten Teil der Präsentation: meiner Vorstellung.
  • Mein Name ist Stefan Macke. Ich habe verschiedene Webauftritte, die vielleicht interessant sind.
  • Ich bin Softwareentwickler…
  • …und Softwarearchitekt…
  • …bei der ALTE OLDENBURGER Krankenversicherung AG…
  • …und Dozent – u.a. für Software-Engineering – an der PHWT.
  • Beide sind in Vechta zuhause…
  • …einer kleinen Stadt zwischen Osnabrück und Bremen.
  • Wir nutzen bereits mehrere Programmiersprachen, aber haben Java als Standard festgelegt. Und aktuell steigen wir in die Webentwicklung mit Java EE 7 ein.
  • Schauen wir uns einmal an, was Java EE eigentlich ist.
  • Java EE ist eine „Regenschirm-Spezifikation“, die mehrere Spezifikationen zusammenfasst.
  • Bei Oracle konnte ich 38 Specification Requests zählen.
    http://www.oracle.com/technetwork/java/javaee/tech/index.html
  • Dazu gehört z.B. der Zugriff auf die Datenbank…
  • …die Gestaltung von Weboberflächen…
  • …und das Querschnittsthema DI.
  • Anders als Java SE…
  • …wird Java EE in einem Container ausgeführt: dem Application Server.
  • Der Application Server stellt der Anwendung die gesamte Infrastruktur zur Verfügung, also z.B. Data Sources, JNDI-Lookups, CDI usw.
    Darum muss sich der Entwickler nun nicht mehr selbst kümmern.
  • Application Server gibt es eine ganze Menge, sowohl kommerziell als auch Open Source.
  • Java EE war lange Zeit ein hoffnungslos überfrachtetes Framework, das gerade für Einsteiger kaum zu verstehen war. Lange Klassen und XML-Konfiguration überall.
  • Hier ist ein „schönes“ Beispiel für eine solche Klasse (obwohl sie nicht aus Java EE stammt, sondern aus dem Spring-Framework).
  • Doch in Version 7 hat sich Java EE zu einem fast schon leichtgewichtigen Framework entwickelt. Und das möchte ich heute zeigen.
  • Kommen wir daher nun zu meiner Beispielanwendung.
  • Ich habe mich am aktuell bekannten MEAN-Stack orientiert…
  • …aber zwei Säulen durch Java ersetzt.
  • Das heißt, ich lasse mir die Arbeit abnehmen wo immer es geht.
    Ich nutze die eingebauten Frameworks und Bibliotheken und vermeide Infrastruktur-Code.
    -> JPA, CDI, Twitter Bootstrap
  • Ich halte mich nicht mit Datenbankdesign auf, sondern lasse die Datenbank anhand meiner Klassen automatisch generieren.
  • Ich verzichte auf den Einsatz von externen Frameworks und nutze ausschließlich die „eingebauten“ Funktionen.
  • Eine kleine Ausnahme muss ich machen: MongoDB lässt sich ohne Hibernate OGM nicht (gut) über JPA ansprechen.
    OGM = Object/Grid Mapper
  • Wer heute etwas auf sich hält, nutzt natürlich REST für die Kommunikation mit dem Backend 
  • Das hier ist das Endergebnis meiner Programmierung.
    Die App gewinnt keinen Designpreis, aber sie funktioniert.
  • Das gesamte Projekt kann bei GitHub angeschaut werden.
  • Um mit der Programmierung loslegen zu können, müssen ein paar Grundlagen geschaffen werden.
    Voraussetzungen: Gradle, Wildfly, Node.js, MongoDB, Eclipse installiert
  • Wenn Gradle vorhanden ist, reduziert sich der Aufwand für das Bauen auf ein Minimum.
  • Das ist die gesamte XML-Konfiguration der Datenbank.
  • Das Domain Model besteht aus einfachen POJOs, die mittels JPA-Annotationen persistiert werden.
  • Das hier ist ein Beispiel für die einfache Veröffentlichung einer REST-Ressource inkl. Injektion von Abhängigkeiten mit CDI.
  • Worauf ich bei der Umsetzung des Beispielprojekts nicht eingegangen bin…
  • Die Applikation enthält keine Tests! Allerdings gibt es im Java-EE-Umfeld einige gute Frameworks für automatische Tests.
    JUnit und Mockito könnten für die Business-Logik verwendet werden.
  • Mit Arquillian kann man seine Webapp in einem echten Container testen.
  • Citrus simuliert Infrastruktur wie Mailserver, JMS-Queues usw.
  • Für HTML-Oberflächen gibt es eine ganze Reihe an Bibliotheken mit vordefinierten Controls.
    PrimeFaces ist ein bekannter Vertreter.
  • PrimeFaces bietet viele professionelle Controls.
  • Selbstverständlich kann die gesamte Applikation noch mit einem CI-Server gebaut und deployt werden.
  • Und Tools für die statische Codeanalyse gibt es im Java-Umfeld zuhauf.
  • Meine persönlichen Lessons Learned bzgl. Java EE 7.
  • Start ist schwierig, da Struktur selbst erstellt werden muss (gibt es Maven-Archtetypes?).
  • Die vielen Annotationen sind sehr verwirrend für Einsteiger. Es gibt auch gleich benannte Annotationen in unterschiedlichen Packages.
  • Es ist immer noch viel Boilerplate-Code notwendig (z.B. Getter/Setter).
  • Netbeans kann CRUD-Pages für Entitys generieren.
  • Ergebnis meiner (semi-professionellen) Codeanalyse: 130 Zeilen Java-Code und 70 Zeilen Typescript.
  • AngularJS war umständlicher als Java.
    Dependencies bei Java sind ja schon schlimm, aber 12.000 Dateien!?
  • Zum Schluss noch ein paar Literaturempfehlungen.
  • Die offizielle Dokumentation von Oracle ist ein guter Einstiegspunkt.
  • Das Buch aus dem Rheinwerk Verlag fand ich sehr gut zu lesen.
  • Bei Pluralsight hat Antonio Goncalves eine ganze Videoreihe rund um Java EE 7 veröffentlicht.
  • Kommen wir zu meinem persönlichen Fazit zur Arbeit mit Java EE 7.
  • Java EE ist nicht Rails. Mit Rails bin ich immer noch produktiver.
  • Ich habe mit mehreren Studentenjahrgängen Projekte auf unterschiedlichen Plattformen durchgeführt.
    Am besten hat es mit Java EE geklappt.
    Vielleicht aufgrund der statischen Typisierung!?
  • Das letzte Projekt war eine 3-Tier-Applikation mit REST-Schnittstelle, verteilt auf 3 Raspberry Pis.
    Das „schwergewichtige“ Java lief einwandfrei auf den Application Servern auf den RasPis.
  • Und wenn sogar meine Studenten das hinbekommen…
  • …können Sie das auch!
  • Danke!
  • Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7

    1. 1. Von wegen schwergewichtig Moderne Webentwicklung mit Java EE 7
    2. 2. 15 133 Minuten LOC
    3. 3. 45 160 Minuten LOC
    4. 4. CC0 Public Domain – bretpit – https://pixabay.com/de/apfel-birne-pflaumen-obst-früchte-993366/
    5. 5. Vorstellung
    6. 6. http://soa.rocks anwendungsentwickler podcast.de @StefanMacke Stefan Macke
    7. 7. CC0 Public Domain – StartupStockPhotos – https://pixabay.com/de/whiteboard-mann-präsentation-849813/
    8. 8. Vechta
    9. 9. Java EE
    10. 10. CC0 Public Domain – Unsplash – https://pixabay.com/de/sonnenschirme-straße-geschäfte-690452/
    11. 11. 38 JSRs
    12. 12. Java Persistence API CC0 Public Domain – ColossusCloud – https://pixabay.com/de/server-wolke-entwicklung-geschäft-1235959/
    13. 13. Java Server Faces CC0 Public Domain – Imonk72 – https://pixabay.com/de/webseite-code-html-codierung-647013/
    14. 14. Context and Dependency Injection CC0 Public Domain – jochenpippir – https://pixabay.com/de/spritze-medizin-finger-957260/
    15. 15. Standard Edition
    16. 16. CC0 Public Domain – snoku – https://pixabay.com/de/baustelle-crane-pier-container-1156566/
    17. 17. CC0 Public Domain – susisorglos089 – https://pixabay.com/de/fundamente-wasser-bremerhaven-100698/
    18. 18. CC0 Public Domain – TanteTati – https://pixabay.com/de/spaghetti-pasta-nudeln-essen-781795/
    19. 19. CC0 Public Domain – Pezibear – https://pixabay.com/de/feder-weiß-leicht-zart-luftig-647915/
    20. 20. Beispielanwendung
    21. 21. MongoDB Express.js AngularJS Node.js
    22. 22. MongoDB EE AngularJS Java
    23. 23. CC0 Public Domain – Alexas_Fotos – https://pixabay.com/de/butler-tablett-getränke-wein-sekt-964009/
    24. 24. Domain Model = Persistence Model CC0 Public Domain – StartupStockPhotos – https://pixabay.com/de/whiteboard-mann-präsentation-849810/
    25. 25. CC0 Public Domain – DiegoRodriguesdeCastro – https://pixabay.com/de/fotorahmen-frame-tiefe-878223/ Keine Frameworks*
    26. 26. CC0 Public Domain – DiegoRodriguesdeCastro – https://pixabay.com/de/fotorahmen-frame-tiefe-878223/ *außer
    27. 27. CC0 Public Domain – prima4you – https://pixabay.com/de/tier-löwin-faul-ausruhen-raubtier-1106359/
    28. 28. http://github.com/StefanMacke
    29. 29. persistence.xml
    30. 30. Erweiterungen
    31. 31. Lessons Learned
    32. 32. CC0 Public Domain – tpsdave – https://pixabay.com/de/colorado-hügel-landschaft-359919/
    33. 33. Annotation Hell Quelle: http://www.deic.uab.es/material/102750-javaEE7ReferenceSheet.pdf
    34. 34. CC0 Public Domain – Peggy_Marco – https://pixabay.com/de/ballonfahrt-ballon-feuer-bagan-1028896/
    35. 35. LOC Java 130 Angular 70
    36. 36. RLY?
    37. 37. Literatur
    38. 38. Fazit
    39. 39. !=
    40. 40. Beinahe leichtgewichtig Moderne Webentwicklung mit Java EE 7

    ×