Mittwoch, 9. Mai, JavaOne 2007
Hinweis: im JavaOne TODAY Newsletter vom Mittwoch wurde der Ablageort sämtlicher Slides der Speeches von JavaOne 2007 publiziert: http://www.cplan.com/javaone2007/contentcatalog (Zugangsdaten über mich).
Bring Map and Navigation Capabilities to Your Location-Based Applications with JSR 293, Location API 2.0
Zu Beginn der Session wurden ein paar nette Zahlen serviert: LBS sei die am schnellsten wachsende Sparte im Wireless Bereich, mehr als 85% aller Subscriber seien an solchen Dienstleistungen interessiert (naja). Ende 2008 würden 25 Prozent aller WCDMA Geräte GPS tauglich sein; also: los gehts! Aber es gibt Hürden: die Lokalisierung und das Mapping. Genau hier setzen die beiden JSR 179 und 293 (Erweiterung von 179) an.
Die Location 2.0 API soll folgende Funktionen regeln:
- Geocoding (Adresse -> Koordinaten; aber auch Reverse, Koordinaten -> Adresse)
- Mapping (Das Anzeigen einer Karte)
- Navigation (Routing)
- Landmark exchange (einheitliches Format zum Austausch von POIs)
Typische Einsatzgebiete für Anwendungen, die auf Location Based Services basieren, liessen sich folgendermassen kategorisieren: Sicherheit, POI Navigation, Verkehr, Social Networking, Sport und Fitness sowie Gaming. Und eine Map bestehe immer aus einer Kombination von Inhalten der Typen Area (das von der konkreten Map abgedeckte Gebiet), Landmarks (der auf der Map angezeigten POIs), Location (Standort des Subjekts/Objekts) und Route. Was genau auf der Karte dargestellt wird, unterscheide sich aufgrund der "Operation" auf welcher die aktuelle Map basiert; einerseits können einer Map die darzustellenden Informationen mitgegeben werden. Andererseits kann die Map alle in jenem Umkreis verfügbaren Informationen darstellen.
Eine auf dem Location API basierende Anwendung funktioniert nun (grob) nach dem folgenden Muster: die Klasse ProviderManager bietet den Zugriff auf vorhandene ServiceProvider, von welchen es drei Typen gibt: Geocoding, Map und Navigation. Alle drei Typen erweitern das Interface ServiceProvider und bieten eigene, ihrem Zweck dienende, Methoden an.
Mehr Infos dazu auf jcp.org.
Stress Your Web App Before It Stresses You: Tools and Techniques for Extreme Web Testing
Leider konnte der etwas reisserische Titel zumindest meine Erwartungen nicht erfüllen; die beiden redegewandten und zu Scherzen aufgelegten Brasilianer beschränkten sich neben den üblichen Testtipps (teste NICHT oder zumindest nicht nur die einfachen Fälle etcetera) auf die Vorstellung und Demonstration von Apaches JMeter. Für jemanden der das Tool bisher nicht kannte sicherlich interessant, für mich soweit aber nix neues, leider.
Erwähnenswert an dieser Stelle vielleicht noch das JMeter nicht nur zum parallelen Zugriff und Testen von Webapps verwendet werden kann, sondern auch Tests gegen DB, Mail und andere Server fahren kann.
Hands-on DWR
DWR (Direct Web Remoting) kurz beschrieben: man kann damit sehr schnell und einfach bestehende Java Services oder Controller Klassen als Javascript Bibliotheken exportieren und diese dann mit Ajax ansprechen. Drei Schritte sind dazu notwendig:
- 1. dwr.jar in Classpath aufnehmen
- 2. Im web.xml ein DWR Servlet hinzufügen
- 3: DWR mittels dwr.xml konfigurieren
Fertig. DWR wird im Übrigen mit einem WAR File geliefert, welches Beispiele und die Dokumentation enthält.
Das dies wirklich so einfach funktioniert wies tönt, habe ich bereits selbst ausprobieren können; die POI Layers Anwendung von namics verwendet DWR um per Ajax die POIs auf die Map zu kriegen und - demnächst - um auch neue POIs hinzuzufügen.
Was bei DWR sicherlich von grossem Interesse ist: die Sicherheit. Dieser wird bei DWR grosse Bedeutung beigemessen; grundsätzlich tut DWR daher nichts was man nicht explizit zulässt. So kann man zum Beispiel die Methoden einer Klasse einzeln freigeben und die exportierten Domainklassen (die Return Werte und Übergabeparameter der freigegebenen Methoden), sofern nicht Java Sprachumfang, müssen für den Export ebenfalls freigegeben werden.
Nachdem DWR 1 nun seit etwa 2 Jahren existierte, wurde vor circa 2 Wochen DWR 2 lanciert. Grösste Neuerung dabei ist das sogenannte "Reverse Ajax". Damit kann der Server die "verbundenen" Browser über sogenannte Scriptsessions (ein fünfter Scope wenn man so möchte) über neue Daten informieren und diese auch mit Daten versorgen. Auch hier wurde der Sicherheit natürlich grossen Stellenwert beigemessen (Stichwort Cross Site Scripting).
Beeindruckend war das Schiffe-Versenken Spiel realisiert mit Ajax, an der Session haben sie das zu dritt (ein Teilnehmer aus dem Publikum gesellte sich ohne Vorankündigung noch dazu) live demonstriert.
DWR hat im Übrigen auch eine eingebaute Unterstützung für Accessability; sogenannte "Pluggable Notifiers" informieren den Benutzer etwa bei Veränderungen mittels Ton oder lassen ein Feld aufblinken. Es können auch eigene solche Notifiers entwickelt werden.



