Java 04-2015 | Winter | www. ijug.eu aktuell l Praxis. Wissen. Networking. Das Magazin für Entwickler l e Aus der Community — für die Community u t k a Java entwickelt sich weiter a v a J 7 7 9 6 1- 9 1 2 N S S I R U E 0 8 5, x: u el n e B F H C 0 8 9, H: C R U E 0 6 5, A: R U E 0 9 4, D: Neue Frameworks Raspberry Pi 4 AspectJ, Eclipse Scout, Citrus Projekte mit Java 0 3 0 9 iJUG 4 Java-Performance Web-Anwendungen 0 3 8 7 Durch Parallelität verbessern Hochverfügbar und performant Verbund 9 1 9 1 4 Hm, Mittagessen oder Volles Haus! Der Vor- noch ein Vortrag? trag ist trotz Stehplatz Schwere Entscheid ung! jede Minute wert! Party Time! Erfahrungen direkt aus der Praxis! 17. - 20. November | Nürnberg Wer ist noch alles bei der Unconference mit dabei? 19 parallele Streams – die Konferenz ist riesig! Das muss ich den Kollegen unbedingt erzählen! Eventpartner: 2015.doag.org iiiiiiiii www.ijug.eu iii „Like“ oder „Dislike“ für die Java aktuell Die Java aktuell zählt mittlerweile zu den größten Java-Magazinen im deutschsprachigen Raum. Dar- über hinaus ist die Zeitschrift eine der wichtigsten Säulen im Interessenverbund der Java User Groups e.V. (iJUG). In dem nach der Sun-Übernahme durch Oracle gegründeten Verein sind bereits mehr als 25 Java User Groups zusammengeschlossen, um die Interessen der Java-Community im deutschsprachi- gen Raum zu vertreten (siehe Seite 66). Das fünfjährige Jubiläum der Java aktuell wurde Anfang des Jahres im Anschluss an die JavaLand 2015 gefeiert (siehe „http://www.doag.org/go/5jahre_javaaktuell“). Bei Networking und gutem Essen ließen die Mitglieder der Usergroups, Vertreter von Oracle und einige Autoren die letzten fünf Jahre Revue passieren. Dank des Engagements der Autoren (vielen Dank!) kann ich in jeder Ausgabe aktuelle und hochin- teressante Artikel veröffentlichen. Die Leser-Feedbacks zu den einzelnen Artikeln haben geholfen, die Wolfgang Taschner Qualität des Inhalts und die Themenauswahl zu verbessern. Jetzt geht es mir um eine generelle Frage Chefredakteur Java aktuell zur Java aktuell: „Erfüllt diese Ausgabe der Java aktuell Ihre Bedürfnisse?“ Sie können über die URL „http://ja.ijug.eu/15/4/1“ oder den QR-Code mit „ja“ oder „nein“ stimmen und natürlich dort auch die Zeitschrift entsprechend kommentieren. Ich werde öfter gefragt, ob es auch eine digitale Ausgabe der Java aktuell gibt. Hier die Antwort: Die Zeitschrift ist als PDF zum Download für Interessenten der DOAG Deutsche ORACLE-Anwendergruppe e.V. verfügbar. Das heißt, man muss sich zuvor als „Interessent“ bei der DOAG (siehe „http://www.doag. org/?id=289“) registrieren und kann dann über die DOAG-Webseite alle früheren Ausgaben als PDF he- runterladen. Lediglich die aktuelle Ausgabe bleibt den Abonnenten und iJUG-Mitgliedern vorbehalten. Ich freue mich wie immer auf Ihr Feedback, auch an [email protected], und wünsche Ihnen viel Spaß beim Lesen dieser Ausgabe und viel Erfolg bei Ihren Java-Projekten. Ihr http://ja.ijug.eu/15/4/1 Java aktuell 4-2015 | 3 Inhalt 33 10 Die Position „Software-Architekt” ist in der Software-Branche etabliert Java-Champion Kirk Pepperdine gibt Perfor- mance-Tipps 3 Editorial 39 MySQL und Java für die Regelung von 57 Automatisierte Integra tionstests mit Asynchronmaschinen Citrus Eric Aristhide Nyamsi Christoph Deppisch 5 Das Java-Tagebuch Andreas Badelt 43 Bean Testing mit CDI: Schnelles und 61 „Kommunikation ist der wichtigste produktives Testen von komplexen Faktor …“ 7 Wo steht CDI 2.0? Java-EE-Anwendungen Interview mit der Java User Group Thorben Jannsen und Anatole Tresch Carlos Barragan Hamburg 10 Der Software-Architekt in der heutigen 47 Vom proprietären Framework zum 63 Unbekannte Kostbarkeiten des SDK Software-Entwicklung Open-Source-Projekt: Eclipse Scout Heute: String-Padding Tobias Biermann Matthias Zimmermann Bernd Müller 14 Hochverfügbare, performante und ska- 50 Sofortkopien – minutenschnell in 64 Der Weg zum Java-Profi lierbare Web-Anwendungen Selbstbedienung gelesen von Oliver Hock Daniel Schulz Karsten Stöhr 66 Die iJUG-Mitglieder auf einen Blick 20 Software-Archäologie mit AspectJ 53 Alles klar? Von wegen! Oliver Böhm Von kleinen Zahlen, der Wahrnehmung von Risiken und der Angst vor 66 Impressum Verlusten 25 Code-Review mit Gerrit, Git Dr. Karl Kollischan und Jenkins in der Praxis 66 Inserentenverzeichnis Andreas Günzel 56 APM − Agiles Projektmanagement gelesen von Daniel Grycman 29 Kreative Signalgeber für Entwickler Nicolas Byl 57 31 Java-Engines für die Labordaten- Konsolidierung Matthias Faix 33 Performance durch Parallelität verbessern Kirk Pepperdine 36 Kaffee und Kuchen: Projekte mit Java Embedded 8 auf dem Raspberry Pi Jens Deter Citrus bietet komplexe Integrationstests mit mehreren Schnittstellen 4 | iiiiiiiii www.ijug.eu iii Das Java-Tagebuch Andreas Badelt, Leiter der DOAG SIG Java Das Java-Tagebuch gibt einen Überblick über die wichtigsten Geschehnisse rund um Java – in komprimierter Form und chronologisch geordnet. Der vorliegende Teil widmet sich den Ereignissen im zweiten Quartal 2015. 14. April 2015 tegisches Mitglied, mit einem Sitz im Board er nicht tot sein. Für den genannten Zweck ist of Directors. Damit reihen sie sich zwischen das wohl auch ausreichend. Zumindest gibt es JSRs zum Anfassen: Java-Security-Session im den anderen großen Java-Firmen wie IBM, GlassFish-Images inzwischen auch auf Docker JavaLand 2015 SAP und natürlich Oracle ein. Auf der einen Hub, sie können von dort direkt zum Einsatz Der Java-Security-JSR legt jetzt richtig los. Ein Seite bedeutet das mehr Verpflichtungen, so mit dem Microservices-Framework genutzt Teil der Expert Group war ja im März im JavaLand werden mindestens acht Vollzeit-Entwickler werden. Aber nutzt heute noch jemand Glass- 2015, um ein paar Ideen zu präsentieren und zu den Eclipse-Projekten als Mitgift zur Verfü- Fish für ein (neues) Produktivsystem? Berichte diskutieren, auf der Devoxx France wurden dann gung gestellt. Auf der anderen Seite bringt es darüber gerne an mich oder die Redaktion. letzte Woche die Pläne vorgestellt. Um Ideen aber natürlich deutlich mehr Einfluss in einer https://www.java.net/blogs/mriem unter Beteiligung der Community auszuprobie- der wichtigsten Vereinigungen der Java-Welt, ren, gibt es jetzt einen Playground. Also: Klonen, die längst über die IDE hinausgewachsen ist. ausprobieren und Feedback geben. https://www.eclipse.org/org/press-re- 25. Mai 2015 github.com/javaee-security-spec/javaee- lease/20150505_redhat.php security-proposals 20 Jahre Java Herzlichen Glückwunsch, Java, zum 20. Ge- 12. Mai 2015 burtstag! Wer hätte sich vor 20 Jahren diesen 21. April 2015 überwältigenden Erfolg der Programmier- Mark Reinhold zum Java-9-Fahrplan sprache und vor allem der dazugehörigen JBoss EAP 6.4 ist raus – und unterstützt Java 8 Mark Reinhold, Chef-Architekt der Java-Platt- Plattform, die längst vielen anderen Spra- JBoss EAP Version 6.4 ist da – und unter- form, hat den Zeitplan für Java SE 9 konkreti- chen dient, vorstellen können? Oracle hat aus stützt jetzt offiziell Java 8 (Oracle und IBM siert. Der Meilenstein „Feature Complete“ soll diesem Anlass eine eigene Seite eingerichtet. JDK) – rechtzeitig für die Abkündigung des bis zum 10. Dezember 2015 erreicht werden. https://community.oracle.com/community/ kostenfreien Supports von Java 7 durch In mehreren Schritten soll dann der „Final Re- java/javas-20th-anniversary Oracle Ende April 2015. lease Candidate“ bis zum 21. Juli 2016 ent- http://www.jboss.org/products/eap/download stehen. Die offizielle Freigabe ist für den 22. September 2016 geplant. Wer bis dahin nicht 26. Mai 2015 warten kann, findet genügend Möglichkeiten 5. Mai 2015 von der Preview bis zur aktiven Mitarbeit im Java 9 interaktiv – mit der REPL Rahmen des Adopt-OpenJDK-Programms. Wer viel mit Sprachen wie Lisp oder Python ar- Java EE 7 Maintenance Review https://blogs.oracle.com/java/entry/java_9_ beitet, hat vermutlich für Java bislang die direkte Das Maintenance Release für Java EE 7 liegt schedule_is_out Feedback-Schleife „Read Evaluate Print Loop“ im „final draft“ vor. Die Änderungen bezie- (REPL) vermisst. Dass man damit nicht nur im hen sich, wie zu erwarten, nur auf die Spe- Programmier-Kämmerlein, sondern auch auf zifikation selbst, einzelne Formulierungen 18. Mai 2015 der Bühne erfolgreich arbeiten kann, haben un- werden präzisiert. Auswirkungen auf die ter anderem die Jungs von „Overtone“ mit ihrer Referenz-Implementierung haben sie nicht. Lebt der GlassFish noch? live programmierten Musik gezeigt. Grundsätz- https://www.jcp.org/en/jsr/detail?id=336 Manfred Riem von Oracle, unter anderem lich ist die REPL für die JVM schon verfügbar, Specification Lead für JavaServer Faces und beispielsweise für Scala. Was wir mit Java SE 9 die zukünftige Alternative MVC, hat in seinem jetzt endlich auch für die Sprache Java erwarten 6. Mai 2015 Blog betont, dass der GlassFish nicht tot ist, da können, zeigt Cay Horstmann in einem Blog- seine Daily Builds für die laufenden Implemen- Post auf. Momentan muss das Feature noch Red Hat ist strategisches Mitglied der Eclipse tierungen von Mojarra und Ozark genutzt wer- von Hand gebaut werden, es ist noch nicht Teil Foundation den (die Referenz-Implementierungen von JSF der Binary Distribution. Mac-OS- und Linux- Red Hat hat schon länger bei der Eclipse beziehungsweise MVC). Die Schlussfolgerung Nutzer können aber schnell loslegen. Für Win- Foundation mitgewirkt, jetzt werden sie stra- scheint zu sein: Er bewegt sich (mit), also kann dows ist das Bauen der Preview-Version wohl Java aktuell 4-2015 | 5 Tagebuch noch etwas knifflig, aber als vorübergehenden 11. Juni 2015 über alles Wichtige aus der Insider-Perspek- Ersatz gibt es ja Linux-VMs. Dann können wir tive berichtet – eine gute Ergänzung zur of- uns in Zukunft auch auf Java Live Acts freuen … JSON-Merge-Patch soll Teil von JSON-P 1.1 fiziellen Expert-Group-Kommunikation (siehe weblogs.java.net/blog/cayhorstmann/archi- werden „https://javaserverfaces-spec-public.java.net§). ve/2015/05/25/trying-out-java-9-repl Die Expertengruppe für JSON-P 1.1 will ne- http://jdevelopment.nl/jsf-23 ben JSON Pointer und JSON Patch jetzt auch JSON-Merge-Patch (RFC 7386) zum Standard 28. Mai 2015 hinzufügen. Bei Merge-Patch werden im Ge- 19. Juni 2015 gensatz zum anderen Patch nicht die Opera- AngularBeans: AngularJS-Framework für Java EE tionen zur Manipulation einer Ressource im SIP-Servlet 2.0 unterstützt CDI Java EE mit AngularJS? Geht – erfordert aber Request geschickt, sondern ein zu „mergen- Neben dem HTTP-Servlet gibt es schon lange einiges an Infrastruktur für die Client-Server- des“ Dokument. Einen ersten Entwurf hat die auch das SIP-Servlet, das das Session Initia- Kommunikation oder Boilerplate-Code, wie der Gruppe bereits verfasst und Näheres zur Spe- tion Protocol aus der Telekommunikation un- Engländer sagt. Bessem Hmidi, JUG Leader aus zifikation und zur Referenz-Implementierung terstützt. Es basiert auch auf dem generischen Tunesien, hat jetzt ein Framework geschrieben, dokumentiert. Die Expertengruppe freut sich Servlet und wird ebenso über den JCP stan- das CDI nutzt, und damit die gesamte Kommuni- wie immer über Feedback. dardisiert. Mit der Version 2.0 (JSR 359) unter- kations-Infrastruktur realisiert, plus clientseitige https://jsonp.java.net stützt auch das SIP-Servlet nun den „Context Bean Validations etc. AngularBeans ist inklusive and Dependency Injection“-Standard. einer Demo-Applikation auf GitHub verfügbar. https://weblogs.java.net/blog/binod/archi- https://github.com/bessemHmidi/AngularBeans 15. Juni 2015 ve/2015/06/19/sip-servlet-20-and-cdi Neuerungen in JMS 2.1 2. Juni 2015 Noch mehr Feedback für Java EE 8 erwünscht: 30. Juni 2015 Der Specification Lead für JMS hat einige Ver- Neue JSF-Erweiterungen besserungsvorschläge aufgeführt und Lö- Viel Rauch um (fast) nichts In einem Blog-Post listet der Spec Lead für sungsvorschläge für den ersten ausgearbeitet Eine Sekunde, die viel Zeit verschlingt: Heute JavaServer Faces, Ed Burns, ein paar neue – kurz gesagt, eine einfachere und gleichzeitig gibt es mal wieder eine Schaltsekunde, die JSF-Erweiterungen auf, die er im Zuge seiner flexiblere Deklaration von Message Listeners. manchen Administrator zeitsensibler Anwen- Arbeit „entdeckt“ hat: BootsFaces (richtig, hat Damit soll es unter anderem möglich werden, dungen nervös macht. Extra für diesen Fall mit Bootstrap zu tun), Material Prime (zum eine beliebige Listener-Methode zu deklarie- sieht die „java.util.Date“-Klasse Sekunden im Bauen von WebApps basierend auf Google- ren, statt das Listener-Interface zu implemen- Bereich von „0“ bis „61“ vor. Da die Schaltse- „Material Design“-Richtlinien) und Generjee tieren. Vielleicht kommt ja auch der zweite kunden nicht langfristig festgelegt sind, kann (Generieren von Java EE-/JSF-Applikationen). Vorschlag noch zum Zuge: JMS-Annotationen, mit dem Tool TZUpdater immer die Information Futter für alle JSF-Nutzer – und ein Zeichen die es ermöglichen, jede beliebige CDI-Bean im JRE aktualisiert werden (wenn nicht sowieso dafür, dass das JSF-Ökosystem lebt. als Message Listener zu deklarieren. das JRE oder JDK an sich aktualisiert wird). https://www.java.net/blogs/edburns https://java.net/projects/jms-spec/pages/ http://www.wired.com/2015/01/torvalds_ JMSListener leapsecond 5. Juni 2015 Andreas Badelt 16. Juni 2015 Leiter der DOAG SIG Java Java EE 8 verzögert sich John Clingan, Product Manager bei Oracle für Java DB ist nicht mehr Teil von JDK 9 Java EE und GlassFish, hat eine Verzögerung des Java DB, die bislang mit dem JDK gebündelte Release 8 der Enterprise Edition angekündigt. Datenbank, weithin als „Apache Derby“ be- Der ursprüngliche Zeitplan sah zwar das offi- kannt, wird ab Java 9 nicht mehr Teil der Java- zielle Release für die JavaOne im Herbst 2016 Distribution sein. Wer die Datenbank benötigt, vor – bis dahin ist es ja noch eine Weile. Aber muss dann Apache Derby extra hinzufügen. obwohl alle JSRs inzwischen in Fahrt zu sein https://blogs.oracle.com/java-platform-group/ scheinen, zeichnet sich die Verzögerung wohl entry/deferring_to_derby_in_jdk schon ab. Vom ersten Halbjahr 2017 ist jetzt die Rede, ein genauerer Termin steht noch nicht Andreas Badelt ist Senior Technology Architect bei Infosys fest. Mehr Zeit für die Java-Community, sich an 18. Juni 2015 Limited. Daneben organisiert er seit 2001 ehrenamtlich den einzelnen JSRs zu beteiligen, wie Mr. Clingan die Special Interest Group (SIG) Development sowie die SIG betont. Aber inzwischen ist auch Adopt-a-JSR Blog über JavaServer Faces 2.3 Java der DOAG Deutsche ORACLE-Anwendergruppe e.V. gut in der Community verbreitet, daran sollte Nochmal JSF: Wer sich für die Neuerungen in Daneben war er von 2001 bis 2015 ehrenamtlich in der das Release-Datum also nicht scheitern. 2.3 beziehungsweise Java EE 8 interessiert, Development Community und ist seit 2015 in der neuge- https://blogs.oracle.com/theaquarium/entry/ der sollte auch auf dieses Blog von Expert- gründeten Java Community der DOAG Deutsche ORACLE- java_ee_8_roadmap_update, Group-Mitglied Arjan Tijms schauen. Hier wird Anwendergruppe e.V. aktiv. 6 | Update+ iiiiiiiii An dieser Stelle erhalten Sie in jeder Ausgabe ein Update über das Geschehen winw dwe.irju Jga.evua-Ciioimmunity Wo steht CDI 2.0? Thorben Jannsen und Anatole Tresch, Credit Suisse Die Arbeiten an Java EE 8 sind in vollem Gange und einige Expert Groups haben mit dem Early Draft Review (EDR) bereits einen ersten offiziellen Zwischenstand veröffentlicht. Der Artikel zeigt den aktuellen Stand der Spezifikation für den Context and Dependency Inject for Java (CDI) 2.0. Das Early Draft Review (EDR) soll der Ent- Sortierung von Events Asynchrone Verarbeitung von wicklergemeinschaft die Möglichkeit ge- Die Erweiterung des Event-Systems war Events ben, einen Teil der geplanten Änderungen eine der von der Community am häufigsten Ein weiteres, von der Community häufig auszuprobieren und mit ihrem Feedback gewünschten Änderungen für CDI 2.0. Dass gewünschtes Feature ist die asynchrone bereits früh die weitere Entwicklung der dies von der Expert Group entsprechend Verarbeitung von Events. Bisher wurden die Spezifikation zu beeinflussen. Zum Zeit- ernst genommen wird, zeigt sich an den im Event-Observer vom CDI-Container syn- punkt der Erstellung dieses Artikels steht EDR enthaltenen Änderungen. Die Sortie- chron innerhalb des Thread des Event-Pro- auch die Expert Group für CDI 2.0 (siehe rung von Event-Observern war eines der ducers ausgeführt. Wenn ein Event ausge- „http://cdi-spec.org“) kurz vor der Veröffent- ersten Features, für die ein konkreter Vor- löst wurde, stoppte daher die Verarbeitung lichung des EDR. schlag erarbeitet und die in das EDR aufge- des Event-Producers, bis alle Observer das Die Liste der geplanten Änderungen für nommen wurden. Event verarbeitet hatten oder dieses durch die Version 2.0 ist lang und in folgende The- Bisher wurden die Observer-Methoden eine Exception abgebrochen wurde. men unterteilt: vom Container in unbestimmter Reihen- Ab Version 2.0 soll auch eine asynchro- folge aufgerufen, sodass eine gesteuerte ne Verarbeitung der Events möglich sein. • Verbesserung des Event-Systems Verkettung mehrerer, aufeinander auf- Dazu verwendet der CDI-Container ein oder • Verwendung im Java-SE-Umfeld bauender Observer nicht möglich war. mehrere zusätzliche Threads, sodass die • Unterstützung von Java-8-Sprachfea- Ab Version 2.0 soll der CDI-Container die Verarbeitung im Event-Producer direkt fort- tures Event-Observer basierend auf ihrer Priori- gesetzt werden kann. Wie die asynchrone • Anpassung der Interceptoren und Deko- tät sortieren und anschließend in aufstei- Verarbeitung im Detail erfolgen soll, wurde ratoren zur Verbesserung der aspektori- gender Reihenfolge aufrufen. Die Priorität lange innerhalb der Expert Group diskutiert entierten Programmierung kann für jede Oberserver-Methode mithilfe und ist zum aktuellen Zeitpunkt noch nicht • Modularisierung und Anpassungen der der „@Priority“- Annotation definiert wer- in allen Details abschließend entschieden SPI den (siehe Listing 1). worden. Vor allem die Bereitstellung eines • Kontexte Observer ohne deklarierte Priorität er- intuitiven und einfachen API bei gleichzei- halten die Default-Priorität „APPLICATION tiger Wahrung der Kompatibilität zu CDI Das EDR wird allerdings nur die Änderungen + 500“. Wenn mehrere Observer-Methoden 1.1 und die Zugehörigkeit zu den jeweiligen beinhalten, die aus Sicht der Expert Group über denselben Prioritätswert verfügen, ist Kontexten stellen hier eine Herausforde- bereits einen ausreichenden Reifegrad er- die Aufruf-Reihenfolge nicht definiert und rung dar. reicht haben, um von der Community aus- entspricht somit dem bisherigen Verhalten. Im aktuell diskutierten Vorschlag müs- probiert und diskutiert zu werden. Das dabei Die beschriebene Funktionalität wurde be- sen zwei Bedingungen erfüllt sein, damit ein erhaltene Feedback fließt anschließend in reits im Release 3.0.0.Alpha1 der CDI-Refe- Event asynchron verarbeitet werden kann. die Spezifikation mit ein und kann somit zu renz-Implementierung „Weld“ prototypisch Zum einen muss das Event über die zum weiteren Änderungen führen. Die Hauptthe- implementiert und kann dort ausprobiert Event-Interface hinzugefügte „fireAsync“- men des EDRs sind: werden. Methode ausgelöst werden und zum an- • Sortierung von Events • Asynchrone Verarbeitung von Events • Unterteilung der Spezifikation in einen void processEvent(@Observes @Priority(100) MyEvent event) { // do something Java-EE- und einen Java-SE-Teil } • Ein Bootstrap-Mechanismus für Java- SE-Umgebungen Listing 1 Java aktuell 4-2015 | 7 Update deren der Event-Observer mit der „@ lich in „CDI full mit Java EE“ und „CDI full“ des Containers auch mithilfe eines „try with ObservesAsync“-Annotation annotiert sein. unterteilt. Ob die noch fehlende Definition Resource“-Blocks erfolgen. Diese doppelte Aktivierung der asynchronen von „CDI light“ zu einem späteren Zeitpunkt Auch wenn bereits ein Vorschlag für das Verarbeitung stellt sicher, dass CDI-1.1- erfolgen und welchen Umfang diese dann neue API ausgearbeitet wurde, sind noch Event-Observer durch die Änderung eines genau haben wird, wird nach Fertigstellung nicht alle Details zur Verwendung von CDI Event-Producers nicht plötzlich asynchron des EDR-Release diskutiert. im Java-SE-Umfeld abschließend disku- ausgeführt werden. tiert. Ein noch offenes Problem stellt zum Ebenso können bestehende Event-Pro- Bootstrapping für Java-SE- Beispiel die Unterstützung impliziter Bean- ducer, bei deren Erstellung eine synchro- Umgebungen Archive (ohne „beans.xml“-Datei) dar. Im ne Verarbeitung der Events angenommen In Java-SE-Umgebungen muss das Star- Java-EE-Umfeld werden dazu per Default wurde, keine asynchrone Verarbeitung der ten des CDI-Containers durch den Anwen- alle vorhandenen Archive gescannt. Im Events auslösen. Dies ist wichtig, da das dungsentwickler erfolgen. Dies war bisher Java-SE-Umfeld kann das Durchsuchen Event-Objekt veränderbar sein kann und nicht Bestandteil der Spezifikation, wurde aller Archive jedoch zu aufwändig sein. Die in vielen Anwendungen für den Datenaus- allerdings durch die Implementierungen aktuell bevorzugte Lösung sieht daher vor, tausch zwischen Event-Producer und -Ob- „Weld“ und „Open Web Beans“ mithil- dass die Unterstützung für implizite Bean- server verwendet wird. fe eigener APIs ermöglicht, für die das Archive durch einen Konfigurations-Para- Wenn die Verarbeitung des Events in Zu- Apache-Delta-Spike-Projekt eine contai- meter aktiviert sein muss. Somit kann der kunft asynchron erfolgen soll, muss der Ent- nerunabhängige Abstraktion anbietet. Ab Entwickler entscheiden, ob diese Funktio- wickler sich um Nebenläufigkeitsprobleme CDI 2.0 wird der Bootstrapping-Mecha- nalität benötigt wird und ob die benötigte kümmern und zusätzlich den Event-Produ- nismus durch die Spezifikation definiert Zeit zum Scannen aller Archive aufgewen- cer gegebenenfalls auf die Event-Observer (siehe Listing 3). det werden soll. warten lassen. Somit ist die bestehende Zuerst wird durch die statische Weitere noch zu diskutierende Fragestel- Code-Basis genau zu analysieren und bei „getCDIProvider()“-Methode der Utility- lungen betreffen unter anderem die Mög- Bedarf anzupassen, bevor eine asynchro- klasse „CDI“ ein „CDIProvider“ geholt. Im lichkeit, mehrere Container in einer Anwen- ne Eventverarbeitung möglich ist. Listing 2 Standardfall wird dazu intern ein „Ser- dung zu starten, sowie die Unterstützung zeigt, wie asynchrone Events genutzt wer- viceLoader“ verwendet. Anschließend von Kontexten. Hierzu werden über das den können. startet die Methode „initialize()“ den CDI- EDR-Release hinaus noch Lösungen erar- Container, der dann für die weitere Ver- beitet werden müssen. Unterteilung in einen Java-EE- wendung zur Verfügung steht. Wird der und einen Java-SE-Teil Container nicht mehr benötigt, kann ihn die Weitere Änderungen Die Modularisierung der CDI-Spezifikation „shutdown()“-Methode wieder beenden. Neben den in das EDR eingeflossenen Ände- bietet im Gegensatz zu den vorher betrach- Da die CDI-Klasse das „Autocloseable“- rungen wurden in den bisherigen Releases teten Änderungen des Event-Systems nur Interface implementiert, kann das Beenden der CDI-Referenz-Implementierung „Weld“ wenige Vorteile für die Anwendungsentwick- lung. Stattdessen unterstützt es die Entwick- ler anderer Spezifikationen und Frameworks // Producer bei der gezielten Verwendung einzelner Teile @Inject der Spezifikation. Event<MyEvent> event; […] Der anfängliche Plan war, die CDI-2.0- MyEvent myEvt = new MyEvent(); Spezifikation in drei Teile zu unterteilen: „CDI CompletionStage<MyEvent> completion = event.fireAsynch(myEvt); full mit Java EE“, „CDI full“ und „CDI light“. „CDI full mit Java EE“ entspricht dabei dem // Observer public void consumeEvent(@ObservesAsynch MyEvent evt){ vollen Funktionsumfang, wie er aus CDI 1.1 // handle the event bekannt ist, einschließlich der Abhängig- } keiten zu anderen Java-EE-Spezifikationen sowie aller im Rahmen von CDI 2.0 neu Listing 2 hinzugefügten Features. „CDI full“ und „CDI light“ sollen hingegen auch im Java-SE- Umfeld einsetzbar sein und daher keine Ab- // start container hängigkeiten auf Java-EE-Spezifikationen CDIProvider cdiProvider = CDI.getCDIProvider(); CDI<Object> cdi = cdiProvider.initialize(); aufweisen. „CDI light“ soll zusätzlich keine aspektorientierte Programmierung (AOP) // get a bean and do something und keine Kontexte enthalten, womit es un- MyCdiBean bean = cdi.select(MyCdiBean.class).get(); ter Umständen sogar Java-ME-kompatibel bean.doSomething(); werden könnte. // shutdown container Für das EDR-Release ist allerdings nur cdi.shutdown(); ein Teil dieser Änderungen umgesetzt. Vor- erst wurde die Spezifikation ausschließ- Listing 3 8 | iiiiiiiii www.ijug.eu iii (siehe „http://weld.cdi-spec.org“) bereits eini- @Produces ge weitere Änderungen prototypisch im- @PaymentMethod("CreditCard") plementiert, die zwar diskutiert, aber noch @PaymentMethod("Paypal") public PaymentProvider createPaymentProvider() { nicht spezifiziert sind. Ob diese Änderungen // ... in derselben Form in die finale Spezifikation } aufgenommen werden, ist zum aktuellen Zeitpunkt nicht abzuschätzen. Allerdings Listing 4 vermitteln die prototypischen Implemen- tierungen bereits einen guten Eindruck über die noch zu erwartenden Erweiterungen der Änderungen innerhalb der Expert Group Anatole Tresch Spezifikation. diskutiert und nur kleinere Änderungen [email protected] So wird für Qualifier und Intercepto- in den Alpha-Releases der Referenz- ren das mit Java 8 eingeführte „repeating Implementierung „Weld“ umgesetzt. Der annotation“-Feature verwendet, mit dem vollständige Umfang der noch zu erwar- Methoden und Eigenschaften mehrfach tenden Änderungen ist zurzeit noch nicht mit derselben Annotation annotiert werden abzusehen. Alle neu hinzugefügten Fea- können. Damit besteht beispielsweise die tures werden die neuen Java-8-Features Möglichkeit, eine Producer-Methode mehr- verwenden. fach mit demselben Qualifier und unter- Ein weiteres Thema, das bisher nur we- schiedlichen Eigenschaften zu annotieren nig bearbeitet wurde, ist die Anpassung des (siehe Listing 4). SPI. Dadurch soll unter anderem eine besse- Darüber hinaus wurde das „Process- re Kontrolle der verwendeten Kontexte, die ObserverMethod“-SPI dahingehend er- Erzeugung von Beans zur Laufzeit und der weitert, dass CDI-Extensions nun einzel- Zugriff auf die von CDI erzeugten Metadaten Anatole Tresch war nach dem Wirtschaftsinformatik- ne Observer-Methoden überschreiben ermöglicht werden. Studium an der Universität Zürich mehrere Jahre lang oder sie mithilfe der „veto()“-Methode Die Anpassungen der Interceptoren und als Managing-Partner und -Berater tätig. Er sam- des Event-Interface deaktivieren können. Dekoratoren wurden bisher noch nicht spe- melte weitreichende Erfahrungen in allen Bereichen Durch diese Änderungen erhält der Ent- zifiziert. Allerdings wird für die Dekoratoren des Java-Ökosystems vom Kleinunternehmen bis zu wickler, wie von der Community häufig in der Referenz-Implementierung „Weld“, komplexen Enterprise-Systemen. Schwerpunkte sind verteilte Systeme sowie die effiziente Entwicklung und gewünscht, mehr Kontrolle über die Ver- wie bereits gesagt, das mit Java 8 einge- der Betrieb von Java in der Cloud. Aktuell arbeitet Ana- arbeitung von Events. führte „repeating annotation“-Feature ver- tole Tresch als technischer Architekt bei der Credit-Su- wendet. Andere geplante Änderungen, wie isse, ab September wird er als Principal Consultant bei Was noch zu erwarten ist Verbesserungen des „interceptor chaining“ Trivadis tätig sein. Anatole ist Star Specification Lead Wie bereits zu Beginn des Artikels gesagt, und der Aufruf von Interceptoren bei inter- des JSR 354 (Java Money & Currency) und Gründer des enthält das EDR nur die Änderungen der nen Methoden-Aufrufen, wurden bisher Apache-Tamaya-Projekts. CDI-Spezifikation, für die die Expert Group noch nicht eingehend diskutiert. bereits konkrete Vorschläge erarbeitet hat Auch die Möglichkeit des Zugriffs auf und die über eine ausreichende Reife verfü- das durch einen Proxy „gewrappte“ Ob- gen, sodass sie von der Community auspro- jekt würde Entwicklern von Extensions biert und diskutiert werden können. Daher das Leben in vielen Fällen vereinfachen. In Thorben Jannsen gibt es auch noch viele Themen, für die eine eine ähnliche Richtung zielt auch der Vor- [email protected] Lösung erst noch erarbeitet werden muss. schlag, alle (nicht nur die CDI-relevanten) Einige davon wurden bereits in den vorher- Annotationen einer „gewrappten“ Klasse gehenden Abschnitten genannt und einige auch in der Proxy-Instanz verfügbar zu weitere werden wir nun kurz betrachten. machen. Interessant ist auch die Idee, be- Die Diskussionen zu diesen Änderungen stehende Interceptoren mit „@Alternati- befinden sich in der Regel noch in einem ve“ übersteuern sowie die Reichweite von sehr frühen Stadium oder wurden noch gar Events mittels einer Annotation bestim- nicht aufgenommen. Daher ist zum aktuel- men zu können. Damit kann aktiv beein- len Zeitpunkt noch nicht abzusehen, welche flusst werden, ob ein Event an alle aktuell dieser Änderungen Bestandteil des finalen verfügbaren Observer weitergereicht wird Release werden und wie diese genau ge- oder zum Beispiel nur an die, die in der staltet werden. gleichen Deployment-Unit („=jar“) enthal- Thorben Janssen arbeitet als Senior-Entwickler und Wie alle anderen Java-EE-8-Spezifika- ten sind. Architekt für die Qualitype GmbH und entwickelt seit tionen auch soll CDI 2.0 die Verwendung In welchem Umfang all diese Vorschläge mehr als zehn Jahren Anwendungen auf Basis von der mit Java 8 neu eingeführten Sprach- in der finalen Spezifikation enthalten sein Java EE. Er ist Mitglied der JSR 365 Expert Group Features unterstützen. Bisher wurden werden, ist aber derzeit noch nicht abseh- und bloggt über Themen rund um Java Enterprise auf noch keine der daraus resultierenden bar: stay tuned! „http://www.thoughts-on-java.org“. Java aktuell 4-2015 | 9 Datenbank Architektur Der Software-Architekt in der heutigen Software-Entwicklung Tobias Biermann, Booxware Dieser Artikel stellt die Rolle „Software-Architekt“ innerhalb von Software-Projekten vor. Er klärt die Aufgaben eines Software-Architekten sowie die Beziehungen zwischen dem Architekten und den anderen Projekt-Teilnehmern. Die Position „Software-Architekt” ist in der • iSAQB e.V. • Grundsätze, die Design und Entwicklung Software-Branche etabliert. Ungefähr acht Certified Professional for Software Ar- des Systems bestimmen Prozent aller ausgeschriebenen Software- chitecture Entwicklerstellen sind Software-Architek- Eine Komponente hat folgende Funktionen: tenstellen. Der Software-Architekt stellt Der Autor hat das Zertifikat „Certified Pro- zudem oft eine Karrierestufe dar. Außer fessional for Software Architecture“ des • Ist Baustein eines Systems dem Software- gibt es noch den Unter- Vereins iSAQB erworben. Da der Schulungs- • Kapselt ihr inneres Verhalten nehmens-Architekten. Während der Soft- inhalt zu empfehlen ist, orientiert sich der • Kommuniziert mit anderen Komponen- ware-Architekt technisch für ein Projekt Artikel an der Sichtweise dieses Vereins ten über definierte Schnittstellen verantwortlich ist, ist der Unternehmungs- − Software-Architektur und auch die Rolle • Ist wiederverwendbar und austauschbar Architekt für die Software-Entwicklung im sind nicht einheitlich definiert. ganzen Unternehmen zuständig. Außer- Die Hauptaufgabe des Software-Archi- Diese Definitionen veranschaulicht ein Bei- halb des Studiums gibt es für diese Rolle tekten ist es, eine Software-Architektur zu spiel. Abbildung 1 zeigt ein Kontext-Diagramm verschiedene Weiterbildungen durch un- entwerfen. Da stellt sich die Frage: Was ist für eine Software-Architektur. Es geht darum, terschiedliche Institutionen: überhaupt eine Software-Architektur? Eine verschiedenen Anwendern (Anlagenplanern, Software-Architektur umfasst: Vertriebsmitarbeitern, Projektverwaltern, • SEI (Software Engineering Institute) Einkäufern) Systeme zur Verfügung zu stel- Weiterbildungen zu den Themen „SOA“, • Zerlegung des Problems in kleine, ver- len, mit denen sie ihre Aufgaben bezüglich der „Architektur“, „Architektur-Bewertung“ ständliche und beherrschbare Kompo- Ressource „Artikel“ einfacher bewerkstelli- (ATAM) nenten gen können. Dafür wurden drei Systeme (die • Oracle • Die Beziehungen der Komponenten zuei- man auch als Komponenten bezeichnen kann) Certified Software Architect Java EE 6 nander und zur Umgebung eingekauft (Design-, Verkaufs- und ERP-Sys- 10 |
Description: