Anzeige
Anzeige

Más contenido relacionado

Anzeige

Von wegen schwergewichtig - Moderne Webentwicklung mit Java EE 7

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

Hinweis der Redaktion

  1. Bei moderner Webentwicklung denken viele Entwickler sicherlich nicht an Java…
  2. …sondern eher an das bekannte Webframework Ruby on Rails.
  3. 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.
  4. Darin erstellte er in 15 Minuten ein Blog-System mit Rails.
  5. Inkl. Kommentarfunktion usw.
  6. Für das Ganze benötigte er nur 133 LOC.
  7. Mit Rails kann man also ein Blogsystem in 15 Minuten und mit nur 133 LOC erstellen.
  8. 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.
  9. 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.
  10. Beginnen wir mit dem ersten Teil der Präsentation: meiner Vorstellung.
  11. Mein Name ist Stefan Macke. Ich habe verschiedene Webauftritte, die vielleicht interessant sind.
  12. Ich bin Softwareentwickler…
  13. …und Softwarearchitekt…
  14. …bei der ALTE OLDENBURGER Krankenversicherung AG…
  15. …und Dozent – u.a. für Software-Engineering – an der PHWT.
  16. Beide sind in Vechta zuhause…
  17. …einer kleinen Stadt zwischen Osnabrück und Bremen.
  18. Wir nutzen bereits mehrere Programmiersprachen, aber haben Java als Standard festgelegt. Und aktuell steigen wir in die Webentwicklung mit Java EE 7 ein.
  19. Schauen wir uns einmal an, was Java EE eigentlich ist.
  20. Java EE ist eine „Regenschirm-Spezifikation“, die mehrere Spezifikationen zusammenfasst.
  21. Bei Oracle konnte ich 38 Specification Requests zählen. http://www.oracle.com/technetwork/java/javaee/tech/index.html
  22. Dazu gehört z.B. der Zugriff auf die Datenbank…
  23. …die Gestaltung von Weboberflächen…
  24. …und das Querschnittsthema DI.
  25. Anders als Java SE…
  26. …wird Java EE in einem Container ausgeführt: dem Application Server.
  27. 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.
  28. Application Server gibt es eine ganze Menge, sowohl kommerziell als auch Open Source.
  29. Java EE war lange Zeit ein hoffnungslos überfrachtetes Framework, das gerade für Einsteiger kaum zu verstehen war. Lange Klassen und XML-Konfiguration überall.
  30. Hier ist ein „schönes“ Beispiel für eine solche Klasse (obwohl sie nicht aus Java EE stammt, sondern aus dem Spring-Framework).
  31. Doch in Version 7 hat sich Java EE zu einem fast schon leichtgewichtigen Framework entwickelt. Und das möchte ich heute zeigen.
  32. Kommen wir daher nun zu meiner Beispielanwendung.
  33. Ich habe mich am aktuell bekannten MEAN-Stack orientiert…
  34. …aber zwei Säulen durch Java ersetzt.
  35. 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
  36. Ich halte mich nicht mit Datenbankdesign auf, sondern lasse die Datenbank anhand meiner Klassen automatisch generieren.
  37. Ich verzichte auf den Einsatz von externen Frameworks und nutze ausschließlich die „eingebauten“ Funktionen.
  38. Eine kleine Ausnahme muss ich machen: MongoDB lässt sich ohne Hibernate OGM nicht (gut) über JPA ansprechen. OGM = Object/Grid Mapper
  39. Wer heute etwas auf sich hält, nutzt natürlich REST für die Kommunikation mit dem Backend 
  40. Das hier ist das Endergebnis meiner Programmierung. Die App gewinnt keinen Designpreis, aber sie funktioniert.
  41. Das gesamte Projekt kann bei GitHub angeschaut werden.
  42. Um mit der Programmierung loslegen zu können, müssen ein paar Grundlagen geschaffen werden. Voraussetzungen: Gradle, Wildfly, Node.js, MongoDB, Eclipse installiert
  43. Wenn Gradle vorhanden ist, reduziert sich der Aufwand für das Bauen auf ein Minimum.
  44. Das ist die gesamte XML-Konfiguration der Datenbank.
  45. Das Domain Model besteht aus einfachen POJOs, die mittels JPA-Annotationen persistiert werden.
  46. Das hier ist ein Beispiel für die einfache Veröffentlichung einer REST-Ressource inkl. Injektion von Abhängigkeiten mit CDI.
  47. Worauf ich bei der Umsetzung des Beispielprojekts nicht eingegangen bin…
  48. 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.
  49. Mit Arquillian kann man seine Webapp in einem echten Container testen.
  50. Citrus simuliert Infrastruktur wie Mailserver, JMS-Queues usw.
  51. Für HTML-Oberflächen gibt es eine ganze Reihe an Bibliotheken mit vordefinierten Controls. PrimeFaces ist ein bekannter Vertreter.
  52. PrimeFaces bietet viele professionelle Controls.
  53. Selbstverständlich kann die gesamte Applikation noch mit einem CI-Server gebaut und deployt werden.
  54. Und Tools für die statische Codeanalyse gibt es im Java-Umfeld zuhauf.
  55. Meine persönlichen Lessons Learned bzgl. Java EE 7.
  56. Start ist schwierig, da Struktur selbst erstellt werden muss (gibt es Maven-Archtetypes?).
  57. Die vielen Annotationen sind sehr verwirrend für Einsteiger. Es gibt auch gleich benannte Annotationen in unterschiedlichen Packages.
  58. Es ist immer noch viel Boilerplate-Code notwendig (z.B. Getter/Setter).
  59. Netbeans kann CRUD-Pages für Entitys generieren.
  60. Ergebnis meiner (semi-professionellen) Codeanalyse: 130 Zeilen Java-Code und 70 Zeilen Typescript.
  61. AngularJS war umständlicher als Java. Dependencies bei Java sind ja schon schlimm, aber 12.000 Dateien!?
  62. Zum Schluss noch ein paar Literaturempfehlungen.
  63. Die offizielle Dokumentation von Oracle ist ein guter Einstiegspunkt.
  64. Das Buch aus dem Rheinwerk Verlag fand ich sehr gut zu lesen.
  65. Bei Pluralsight hat Antonio Goncalves eine ganze Videoreihe rund um Java EE 7 veröffentlicht.
  66. Kommen wir zu meinem persönlichen Fazit zur Arbeit mit Java EE 7.
  67. Java EE ist nicht Rails. Mit Rails bin ich immer noch produktiver.
  68. 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!?
  69. 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.
  70. Und wenn sogar meine Studenten das hinbekommen…
  71. …können Sie das auch!
  72. Danke!
Anzeige