Java D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977

4 191978 304903 02 Javaaktuell • • Sicherheit

Single Sign-on LoginSocial Praxis. Wissen. Networking. fürEntwickler DasMagazin Code-Analyse Statische testenRichtig aktuell Aus derCommunity — JavaFX und JVx Lösung mit entwickelnRichtig 02-2016 | Sommer | www. ijug.eu |www. 02-2016|Sommer fürdieCommunity iJUG Verbund Inhalt

8

32

Neues von der JavaOne Die gängigsten Open-Source-Tools zur Code-Analyse im Praxis-Einsatz

3 Editorial 24 Don‘t Repeat Yourself mit 49 Frontend-Entwicklung mit parametrisierten Tests ClojureScript und Bennet Schulz React/Reacl 5 Das Java-Tagebuch Michael Sperber Andreas Badelt 26 Grundlagen des Batch Processing mit Java EE 7 55 Grundlagen und Patterns von reaktiven 8 JavaOne 2015: Philipp Buchholz Anwendungen am Beispiel von Vert.x Java ist weiter auf einem guten Kurs und Reactor Wolfgang Taschner Martin Lehmann 32 Statische Code-Analyse – den Fehlern auf der Spur 10 Development, Deployment und Andreas Günzel 60 Effiziente Software-Entwicklung mit Management mit dem Oracle-Java- JavaFX und JVx Cloud-Service Roland Hörmann Marcus Schröder 37 Modulare Web-Anwendungen mit Java – Theorie und Praxis Jan Paul Buchwald 63 Elasticsearch – ein praktischer Einstieg 14 Leuchtfeuer in Innenräumen: gelesen von Daniel Grycman Micro-location-based Services mit Beacons 41 DukeCon – das Innere der Constantin Mathe und Bernd Müller JavaLand-App 65 Single Sign-on mit Keycloak Gerd Aschemann Sebastian Rose 19 Social Login mit Facebook, Google und Co. Georgi Kehaiov, Nadina Hintz und Stefan 46 Groovy und Grails – quo vadis? 70 Impressum Bohm Falk Sippach 70 Inserentenverzeichnis

55

Reaktive Anwendungen mit asynchronen, Event-getriebenen Architekturen gewinnen stark an Bedeutung

4 | Beacons

Leuchtfeuer in Innenräumen: Micro-location-based Services mit Beacons Constantin Mathe und Bernd Müller, Ostfalia

Mithilfe sogenannter „Beacons“ verschmilzt das Internet mit der direkten Umgebung des Benutzers. Die Beacon-Technologie wird in den nächsten Jahren grundlegend neue Möglichkeiten entstehen lassen, um mit dem Internet und der direkten Umwelt zu interagieren. Die Konzerne Apple und Google prognostizieren einen Zuwachs von Beacons in Millionenhöhe für die nahe Zukunft. Doch was verbirgt sich hinter Beacons und den angepriesenen Vorteilen für den Anwender?

Stellen Sie sich vor, Sie stehen in einem Mu- Location Based Services/ oder einer Hochschule befindet. Doch wenn seum und erhalten automatisch die passen- Micro-Location es darum geht zu ermitteln, ob man vor der den Informationen über das entsprechende Welche Möglichkeiten ergeben sich, wenn wir Obsttheke oder der Fleischtheke, im Kinosaal Exponat oder bekommen beim Aufenthalt in in der Lage wären, mithilfe unseres Smart­ A oder B oder im Hörsaal für Mathematik oder einem Bahnhof Informationen über mögliche phones direkt mit unserer näheren Umge- Informatik steht, hört es mit der Genauigkeit Reisemöglichkeiten direkt auf Ihr Smart­ bung zu interagieren? Es ist längst kein Pro- von GPS und Mobilfunkzellen auf. Hier beginnt phone. All dies und viel mehr ist bereits heute blem mehr, über GPS und andere Sensoren „Micro-Location“ interessant zu werden. mit Beacons möglich. Dieser Artikel führt den ungefähren Standort des Benutzers zu Um kontextbezogene Dienste in diesem die zugrunde liegende Technologie ein und ermitteln. Mit aktuellen Smartphones ist es Genauigkeitsbereich anzubieten, muss das zeigt exemplarisch, wie sie verwendet wer- etwa ohne Probleme möglich zu erkennen, Smartphone die Möglichkeit besitzen, den den kann. ob man sich in einem Supermarkt, einem Kino Benutzer auf wenige Zentimeter genau zu

14 |

iii iii iiiiii www.ijug.eu

lokalisieren. Location-based Services werden tion des Beacon sowie eine Empfangsstärke zu Micro-Location-based Services. Ziel ist es, (Received Signal Strength Indicator, RSSI). Ein dem Benutzer anhand seiner exakten Posi- Beacon selbst ist nicht in der Lage, Inhalte tion die Interaktion mit seiner unmittelbaren auszuliefern oder Benutzer zu lokalisieren und Umgebung zu ermöglichen. Diese Contextual zu verfolgen. Es liegt also an uns Entwicklern, Services hängen damit mit der aktuellen Visi- mithilfe von Anwendungen das gewünschte on des Physical Web zusammen und sind ein Verhalten zu realisieren. zentraler Baustein zu dessen Verwirklichung. Da es sich bei Bluetooth um ein grundle- Zur Veranschaulichung der Möglichkeiten gend offenes Protokoll handelt, wird BLE bei vergleichen wir die aktuell gängigen und ver- iOS ab Version 7 und bei Android ab der Ver- wendeten Technologien. Mittels GPS sind wir sion 4.3 unterstützt. Alle aktuell verfügbaren Abbildung 1: Lokalisierung entsprechend den Technologien in der Lage, bis auf etwa zehn Meter genau Mobilgeräte mit Bluetooth unterstützen damit eine Position zu bestimmen. Diese Genauigkeit den Standard von Haus aus. Aktuelle Compu- ermöglicht Dienste, die für die oben genannten ter sind ebenfalls BLE-fähig. Die neueren Ver- beispielsweise die UUID „B9407F30-F5F8- Beispiele der Lokalisierung von Supermarkt, sionen von Windows, OS X und Linux haben die 466E-AFF9-25556B57FE6D“. Kino oder Hochschule sinnvoll sind. entsprechenden Treiber eingebaut. Zusätzlich besitzt jedes Beacon eine Ma- Eine GPS-Ortung funktioniert in vielen Die Anwendungsszenarien von Beacons jor- und eine Minor-ID. Diese werden ver- Fällen mehr schlecht als recht. Zum Beispiel sind relativ breit gestreut: im Restaurant, wendet, um die Beacons bestimmten Zonen sind in größeren Gebäuden mit guter Isolati- Theater, Hotel, Schwimmbad, Arztpraxis, zuordnen zu können und somit einzelne Be- on kein GPS-Empfang und damit auch keine Krankenhaus, Universität, Supermarkt oder acons zu identifizieren. Laut offizieller Dar- entsprechenden Dienste-Angebote mög- Kino. Beacons lässt sich nahezu überall für stellung von Apple sollte die Major-ID zum lich. Eine andere Möglichkeit wäre WLAN. die Verbreitung unterschiedlichster Informa- Beispiel dazu verwendet werden, Beacons Damit lässt sich zwar eine Lokalisierung in tionen einsetzen. einem bestimmten Gebäude zuzuordnen. Gebäuden erreichen, allerdings ist diese Ge- Da im Gegensatz zu normalen Bluetooth- Die Minor-ID kommt dann zum Einsatz, um nauigkeit von rund fünfzig Metern für ent- Geräten bei Beacons keine Kopplung zwischen den Raum oder die entsprechende Etage ein- sprechende Dienste nicht ausreichend. den an der Kommunikation beteiligten Geräten deutig zu definieren. Die eigentliche Verwen- Genau hier füllt Bluetooth als Basis-Techno- stattfindet, kommt bei Beacons ein anderer dungsart steht aber jeder Anwendung frei. logie die Lücke zur Micro-Location. Mittels Bluetooth-Paket-Typ zum Einsatz. Es handelt Weiterhin wird in jedem Advertising- Bluetooth ist eine Ortsbestimmung bis auf sich um ein Advertising-Bluetooth-Package, Paket die Signalstärke mit ausgeliefert, so- wenige Zentimeter genau möglich. Wie das also ein Broadcast-Paket. Um die Größen-An- dass auf dieser Basis die Entfernung zum genau funktioniert, werden wir gleich sehen. forderungen eines einzelnen Pakets zu mini- Empfänger berechnet werden kann. Man Zur Verdeutlichung zeigt Abbildung 1 noch mieren, wurde ein hochkomprimiertes Format darf aber nicht vergessen, dass Beacons auf einmal die Lokalisierungsgenauigkeiten der definiert. Abbildung 2 zeigt den schematischen einem 2,4-Ghz-Kanal senden und somit re- angesprochenen Technologien im Überblick. Aufbau, den wir im Folgenden erläutern. lativ stark durch andere Funksignale gestört werden können. Insbesondere räumliche Wer Beacons erfunden hat iBeacon (Apple Standard) Hindernisse wie Möbel oder Personen be- Das englische Wort „Beacon“ bedeutet auf Der iBeacon-Standard [2] sieht im Wesent- einflussen das Signal ebenfalls. Deutsch „Leuchtfeuer, Leuchtturm oder Blink- lichen drei unterschiedliche IDs für ein Bea- Im Netz lassen sich zahlreiche Tests fin- licht“ und beschreibt einen von Apple im Jahr con vor. Hierzu gehört eine Identifikation des den, in denen die Genauigkeit von Beacons 2013 eingeführten Standard für die Navigation Beacon oder auch Proximity ID in Form einer unterschiedlicher Hersteller untersucht wird. in geschlossenen Räumen. Beacons senden UUID. Dahinter verbirgt sich eine 16-Byte- Eins lässt sich mit Sicherheit sagen: Die Ge- ein auf Bluetooth Low Energy (BLE) basieren- Zahl, die hexadezimal notiert und in fünf nauigkeit von Beacons hängt stark vom Her- des Signal aus, das von anderen BLE-fähigen Gruppen unterteilt wird. Eine solche UUID steller und der Bauweise sowie der Konfi- Geräten empfangen und von entsprechenden dient als Hersteller-Kennung und hilft somit, guration des Beacon ab. Parameter, wie die Anwendungen verarbeitet werden kann. Das unterschiedliche Hersteller zu unterscheiden. Sendestärke (Transmit Power) selbst und die übermittelte Signal enthält die Identifika- Der Beacon-Hersteller Estimote verwendet Wiederholungsfrequenz des Signals (Adver- tising Interval), haben eine große Auswirkung auf die Qualität des Signals. Beide Parameter haben auch großen Einfluss auf den Strom- verbrauch und damit die Batterie-Lebens- dauer. Das in iOS integrierte Framework von Apple bietet aufgrund der schlecht vorher- sagbaren Genauigkeit nur drei Abstufungen von Entfernung an:

• Immediate (0-20 cm) • Near (20 cm – 2 m) Abbildung 2: Der schematische Aufbau • Far (2 – 7 m)

Java aktuell 2-2016 | 15 Beacons

Anhand dessen ist schon ersichtlich, dass Eddystone • UID-Frame eine genaue Angabe der Distanz zwischen Im Juni dieses Jahres kam von Google relativ • URL-Frame Beacon und Smartphone nicht immer an- überraschend ein eigener Beacon-Standard • TLM-Frame gegeben werden kann. Wie kommen diese namens „Eddystone“ auf den Markt. Hierbei gravierenden Unterschiede zustande? Es handelt es sich um eine direkte Alternative Der UID-Frame kommt dem des iBeacon am gibt einige Unterschiede zwischen den SDKs und damit Konkurrenz zum iBeacon-Stan- nächsten. Hierbei wird eine ID ausgesandt, der einzelnen Beacon-Hersteller: dard von Apple. Im Gegensatz zu Apple ver- die sich aus zwei weiteren IDs zusammen- sucht Google allerdings, einen Standard zu setzt. Die Namespace-ID entspricht hierbei • Drop-out-Rate schaffen, der sowohl mit iOS als auch mit An- einer Proximity-ID, während die Instance-ID • Implementierung der Empfangsstärke droid kompatibel ist. Ein weiterer Vorteil von dazu verwendet wird, zwischen einzelnen (RSSI) Eddystone ist, dass er quelloffen auf GitHub Beacons zu unterscheiden. • Konsistenz von Beacons desselben Her- unter einer Apache-2.0-Open-Source-Lizenz Der URL-Frame ermöglicht es, eine Inter- stellers zur Verfügung steht [3], während Apples Im- net-Adresse zu kodieren und diese anschlie- • Ausrichtung der Antenne im Beacon plementierung nicht öffentlich ist. ßend direkt über das Bluetooth-Advertising- • Störsignale unter den Beacons Während Beacons auf Basis des iBeacon- Paket zu verschicken. Android ist von Haus Standards eine zusätzliche App benötigen, geht aus in der Lage, diese URLs aus den Paketen Die folgende Gleichung beschreibt, wie die Eddystone einen Schritt weiter und kann Infor- zu dekodieren und dann als Physical-Web- Distanzmessung zwischen Beacon und mationen auch ohne zusätzliche App versen- Objekte gruppiert darzustellen. Empfänger funktioniert „P(d)[dBM] = P(d0) den. Dies ist möglich, da Eddystone im Gegen- Beim TLM-Frame handelt es sich um einen [dBM] – 10n log(d/d0) – Z“, wobei die ein- satz zu iBeacons nicht nur die üblichen UUIDs speziellen Frame, der für die Überwachung der zelnen Parameter Folgendes bedeuten: versenden, sondern im direkten Vergleich auch Beacons zum Einsatz kommt. Dieser Frame Internet-Adressen in Form von URLs ausstrah- enthält verschiedene Hardware-nahe Infor- • D = erwartete Distanz len kann. Dies ermöglicht es, direkt Werbe-In- mationen, etwa über Batteriestand, Tempe- • d0 = ein Maß für eine Distanz für eine be- halte an Anwender zu senden, ohne eine App ratur, Advertising-PDU-Zähler und Uptime in kannte Signalstärke dazwischenschalten zu müssen. Es entfällt Sekunden. Eddystone Beacons senden also • n = Parameter für den Signalstärkenver- also die Web-Komponente in Form eines zen- nicht nur eine UID oder URL, sondern in kon- lust über steigende Distanz tralen Registers für UUIDs. Dieser Schritt ebnet figurierbaren Sekunden-Intervallen zusätzlich • Z = Umwelt-Einflüsse den Weg zum Physical Web [4]. Es bleibt aber einen TLM-Frame mit Hardware-Informatio- zu erwähnen, dass selbst URL-Frames nicht nen. Dieses Feature ermöglicht es erst, große Es ist relativ schwierig, einen guten Algorith- ohne die Chrome-App unter iOS lesbar sind. Es Installationen von Beacons zu überwachen, mus für die Distanz-Messung zu finden, der ist also nur unter Android möglich, ohne App In- um beispielsweise herauszufinden, wann die auch noch für einen Großteil der Geräte und formationen zu erhalten, da hier Google bereits Batterien ausgewechselt werden müssen. verbauten Antennen gut funktioniert. Es hat die nötigen Automatismen in das Betriebssys- Um schnell mit Eddystone Beacons starten zu sich aber gezeigt, dass die folgende Java- tem eingebaut hat. können, sind auf der GitHub-Seite [3] mehrere Methode eine sehr gute Annäherung an die Code-Beispiele für Android und iOS verfügbar. wirkliche Distanz ermöglicht (siehe Listing 1). Eddystone Frames Der Code stammt von [1] und wurde Wie schon erwähnt, kann Eddystone auch Aktuell verfügbare Hardware durch Tests parametrisiert, die die Autoren ohne Umwege direkt Internet-Adressen (Beacons) durchführten. Die Konstanten „0.89976“, ohne UUID ausstrahlen. Realisiert wird dies Mittlerweile gibt es eine große Anzahl von „7.7095“ und „0.111“ wurden durch Aus- durch unterschiedliche Frame-Typen. Ein Beacon-Herstellern. Egal ob wetterfest, gleichsrechnung, basierend auf den Tester- Eddystone-Beacon kann zwischen drei un- wasserdicht, mit Batteriebetrieb oder fes- gebnissen, definiert. Sie sind also durch die terschiedlichen Frames wählen, die gesen- ter Stromversorgung mit Micro-USB – fast Praxis validiert und keine Natur-Konstanten. det werden sollen: alles ist verfügbar. Doch was sollte man vor dem Kauf beachten? Viele Hersteller brin- gen ein eigenes Framework mit, um die Be- /* Calculate Distance of iBeacons */ acons direkt mit möglichst wenig Aufwand protected static double calculateAccuracy(int txPower, double rssi) { in bestehende Apps einzubinden. Doch nicht if (rssi == 0) { return -1.0; // if we cannot determine accuracy, return -1. jedes Framework ist kompatibel mit iOS und } Android. Außerdem muss man als Entwick- ler die Entscheidung treffen, ob man von double ratio = rssi*1.0/txPower; if (ratio < 1.0) { den hauseigenen Cloud-Services der Her- return Math.pow(ratio,10); steller abhängig sein möchte oder nicht. } else { Hinzu kommt, dass man darauf achten soll- double accuracy = (0.89976)*Math.pow(ratio,7.7095) + 0.111; te, dass die Beacons über Firmware-Up- return accuracy; dates erweiterbar und somit Update-fähig } } sind. Da Googles Eddystone noch nicht fi- nalisiert wurde, kann man davon ausgehen, Listing 1 dass es noch einige Änderungen und Er-

16 |

iii iii iiiiii www.ijug.eu

interessante Welt neuartiger Anwendungen einsteigen zu können.

Referenzen [1] http://stackoverflow.com/questions/20416218/ understanding-ibeacon-distancing/ 204340199-20434019 [2] https://developer.apple.com/ibeacon/ [3] https://github.com/google/eddystone/ [4] https://google.github.io/physical-web/ [5] https://developers.google.com/beacons/ [6] http://estimote.com [7] http://beaconinside.com [8] https://github.com/Estimote/Android-SDK [9] https://iotcon.de/2015/sessions/future-beacons

Abbildung 3: Der offene Estimote-Beacon, Quelle: http://estimote.com Constantin Mathe [email protected] weiterungen am Protokoll geben wird. Hier bis dreihundert Millionen ansteigen wird macht es sich bezahlt, wenn die Beacon- [9]. Nachdem Google in den Beacon-Markt Hardware per Firmware- beziehungsweise eingestiegen ist, kann davon ausgegangen Software-Update aktualisiert werden kann. werden, dass das Unternehmen in den kom- Die Firma Estimote [6] hat Beacons und menden Monaten eventuell eigene Beacon- Nearables im Sortiment, die mit einem Hardware, basierend auf dem hauseigenen eigenen quelloffenen und auf GitHub ge- Framework, auf den Markt bringen wird. hosteten SDK leicht in vorhandene Pro- Es bleibt jedoch das Problem, dass keines jekte einbindbar sind. Außerdem ist das der beiden Protokolle, weder iBeacon noch Framework Android- und iOS-kompatibel. Eddystone, plattformübergreifend ohne Ein Developer-Kit, bestehend aus drei Be- eine spezielle App funktioniert. Eddystone Constantin Mathe studiert Informatik an der Ostfalia acons, ist bereits ab 99 Dollar im Angebot. ist zwar iOS-kompatibel, benötigt aber ak- (Hochschule Braunschweig/Wolfenbüttel) und schreibt Bei Testkäufen der Autoren wurden die tuell noch die Chrome-App, die auf dem iOS gerade seine Masterarbeit über das Thema „Micro- Beacons innerhalb weniger Werktage ge- Gerät installiert werden muss. Umgekehrt location mit Beacons“. Während seines Studiums hat liefert. Estimote bietet auch eine eigene gilt dasselbe für Android mit iBeacons. Diese er mehrere Jahre als Java-Software-Entwickler bei der kostenlose App für iOS und Android an, um werden nur über Apps von Dritten gefunden. Symtavision GmbH gearbeitet. die Einstellungen der Beacons zu konfigu- Es bleibt also die Hoffnung, dass sich beide rieren, also beispielsweise die Parameter. Firmen auf einen Standard einigen und die- Abbildung 3 zeigt ein Estimote-Beacon in sen dann jeweils in ihrem Betriebssystem geöffnetem Zustand. fest verankern. Eine plattformübergreifende Bernd Müller Nutzung von Beacons und deren Informa- [email protected] Verwendung mit Java tionen würde das Physical Web dramatisch Estimote stellt unter [8] ein SDK für Andro- nach vorne bringen. id zur Verfügung. Das API hinterlässt einen guten Eindruck und basiert hauptsächlich Fazit auf der Registrierung von Event-Listenern, Der durch Apple veröffentlichte iBeacon- die für Beacon-Sende- beziehungsweise Standard ermöglicht Micro-location-based Empfangsbereiche und Empfangsstärken Services beliebiger Couleur. Es zeichnet sich parametrisiert werden können. Die Auto- erst langsam ab, welch breites Spektrum an ren können hier leider noch keine Beispiele Anwendungen damit realisierbar ist. Nach- präsentieren, hoffen aber, dies in einer der dem Google auf den stark beschleunigenden nächsten Ausgaben der Java aktuell nach- Zug aufgesprungen ist, besteht kein Zwei- holen zu können. fel daran, dass Beacons zu einem großen Pfeiler in dem gerade gehypten Internet of Bernd Müller ist Professor für Software-Technik an der Was bringt die Zukunft? Things werden. Mit Eddystone steht Java- Ostfalia (Hochschule Braunschweig/Wolfenbüttel). Er Was die Zukunft angeht, rechnet man damit, Entwicklern eine Open-Source-Implemen- ist Autor mehrere Java-EE-Bücher, Sprecher auf nati- dass bis zum Jahr 2018 allein in Deutsch- tierung des Protokolls inklusive SDK zur onalen und internationalen Konferenzen und engagiert land die Anzahl an Beacons auf sechzig Verfügung, um mit wenig Aufwand in diese sich in der JUG Ostfalen sowie im iJUG.

Java aktuell 2-2016 | 17