Apache DeviceMap - Web-Dev-BBQ Stuttgart

210 Aufrufe

Veröffentlicht am

Das Wachstum an Mobiltelefonen, Tablets und ähnlichen Geräten, die den Markt geradezu überschwemmen erleben wir Tag für Tag.
Die Spezifikation jedes Einzelnen genau zu verfolgen ist ein Knochenjob. Diese Mühe kann reduziert werden, wenn zur Verbesserung dasDevice Description Repository – kurz DDR - beigesteuert wird und Anwender dieses selbst verwaltet können.

Apache DeviceMap entstand als Kooperation von OpenDDR und anderen, um ein umfassendes Open Source Daten-Repository mit Geräteinformationen, Bilder und andere relevante Informationen für alle Arten von mobilen Geräten zu schaffen, Smartphones, Tablets, Smart-TV, u.dgl.

Das Projekt begann im Januar 2012, im Herbst 2012 wurden DDR APis für Java und .NET von OpenDDR beigesteuert. Im Herbst 2014 verließ DeviceMap erfolgreich den Apache Incubator. Die nächsten Schritte umfassen verbesserte Erkennung von Informationen im UserAgent String. Java Portlet 3.0 Integration via Apache Pluto. Sowie Crowd-Sourcing der Device Repository Daten und eine Speicher-Struktur, die langfristige Erhaltung und Pflege dieser Daten durch die Apache Gemeinde erlaubt.

Veröffentlicht in: Geräte & Hardware
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
210
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Apache DeviceMap - Web-Dev-BBQ Stuttgart

  1. 1. Apache DeviceMap Lasst uns Mobile Inhalte gemeinsam optimieren Werner Keil @wernerkeil | wkeil@apache.org @DeviceMap
  2. 2. #WebDevBBQ Einleitung Geschichte Projektvergleiche Grundlagen Anwendungsbeispiele Benchmarks Demos Zusammenfassung Links Agenda 2
  3. 3. #WebDevBBQ Einleitung  Consultant – Coach  Creative Cosmopolitan  Open Source Evangelist  Software Architect  JCP EC Member  UOMo Project Lead  JSR 363 Co Spec Lead  DevOps Guy … Email wkeil@apache.org Twitter @wernerkeilWas bin ich? Werner Keil 3
  4. 4. #WebDevBBQ Einleitung Das Wachstum an Geräten, die den Markt überschwemmen schreitet beinahe täglich voran. Von Mobiltelefonen, Tablets über Smart TV bis zum Auto oder gar zur Smart Watch reichen vernetzte Geräte im IoT Zeitalter. Lasst uns Mobile Inhalte gemeinsam optimieren Apache DeviceMap 4
  5. 5. #WebDevBBQ
  6. 6. #WebDevBBQ Einleitung Die Spezifikation jedes Einzelnen genau zu verfolgen ist ein Knochenjob. Diese Mühe kann reduziert werden, wenn zur Erkennung Informationen bereitstehen, die möglichst viele Anwender/Entwickler selbst mit verwaltet können. Wenn Sie ansprechende Benutzererlebnisse schaffen wollen, benötigen Sie dynamisch anpassbare Inhalte gemäß den Hardware-und Browser Spezifikationen des jeweiligen Geräts. Apache DeviceMap Lasst uns Mobile Inhalte gemeinsam optimieren 6
  7. 7. #WebDevBBQ Einleitung DDR 7
  8. 8. #WebDevBBQ Einleitung DDR 8
  9. 9. #WebDevBBQ Einleitung DDR 9
  10. 10. #WebDevBBQ Einleitung DDR 10
  11. 11. #WebDevBBQ Es hilft, wenn zur Erkennung ein Device Description Repository – kurz DDR beigezogen wird Device Description Repository (DDR) ist eine Datenbank, die große Mengen an Information über Mobiltelefone, Tablets, Interactive TV, Set-Top-Boxen und jedes Gerät mit einem Web-Browser speichert. DDR ermöglichen es Entwicklern, Anwendungen mit angemessenem Benutzererlebnis für jeden Client zu realisieren. Apache DeviceMap ist das derzeit beste Open Source Repository zur Geräteerkennung für die Nutzung mit Java (und anderen) APIs, das den W3C Standard DDR Simple API implementiert. Einleitung DDR 11
  12. 12. #WebDevBBQ Titolo presentazione - data Geschichte 12
  13. 13. #WebDevBBQ Titolo presentazione - data Geschichte 13
  14. 14. #WebDevBBQ Geschichte 14
  15. 15. #WebDevBBQ Geschichte  Ende 2011 wurde ein paar Monate nach dem Start von OpenDDR auch die Apache Foundation auf das Thema aufmerksam. Und beschloss, ein Device Repository sowie APIs für die wichtigsten Plattformen und Sprachen zu schaffen.  OpenDDR gehörte zu den Gründungsmitgliedern des DeviceMap Inkubators und stellte wesentliche Grundlagen des Client Code (Java, .NET) sowie DDR Ressource Daten und damit verbundenen Quellcode als Initial Contribution zur Verfügung. Ursprüngliches Proposal im Apache Wiki: http://wiki.apache.org/incubator/DeviceMapProposal 15
  16. 16. #WebDevBBQ Es gibt einige DDR oder DDR-artige Projekte, aber: die meisten davon erheben Lizenzen oder eine Gebühr für „ihre“ Datenbanken und APIs ODER Gewähren Zugriff auf diese Informationen kostenlos nur für die Entwicklung von nicht-kommerzielle Anwendungen Einer der wenigen Auswege aus diesem Dilemma: Das Apache DeviceMap Projekt Projektvergleiche 16
  17. 17. #WebDevBBQ Titolo presentazione - data Projekt Stärken Schwächen Lizenz MaDDR Projekt Kompatibel zu W3C Standard Device Repository funktioniert nur mit kommerziellem mobileAware DDR (APIs beinhalten einfaches Beispiel DDR) Das maDDR Projekt bietet keine adaptive Technologie für optimierte Geräteerkennung Repository: Nur kommerzielle Lizenz API: Kommerzielle Lizenz oder Simple DDR API mit LGPL Lizenz DeviceAtlas Daten werden von verschiedenen , führenden Partnern aus der Industrie geliefert Nur kommerzielle Lizenz Repository: Kommerzielle Lizenz API: Kommerzielle Lizenz Volantis Relativ breite Geräteabdeckung Nur kommerzielle Lizenz Repository: Kommerzielle Lizenz API: Kommerzielle Lizenz WURFL Ehemals Community Projekt (bis Aug 2011) Die Lizenz erlaubt keine Nutzung des Repositories ohne das kommerzielle API Die API erlaubt keine Nutzung in Projekten mit eigener Lizenz! Repository: Nutzung ohne WURFL API unzulässig API: Kommerzielle Lizenz, „Alibi“ AGPL, kommerzielle Nutzung unzulässig 51Degrees.mobi Vorhersehbare Produktpalette, .NET Unterstützung Eingeschränkter Umfang und Nutzungsmöglichkeit freier Daten Repository: MPL oder Kommerziell („Pro Edition“) API: Mozilla Public Lizenz Projektvergleiche 17
  18. 18. #WebDevBBQ Grundlagen  DeviceMap basiert auf Offenen Standards:  Repository ist kompatibel zum W3C DDR Standard  Client Bibliothek implementiert W3C DDR Simple APIs  Aus Entwicklersicht:  Erlaubt es Anwendungen im Vertrauen darauf zu entwickeln, dass diese kompatibel zu anderen W3C DDR Simple API Implementationen sind, also man sich nicht fix an jene von DeviceMap binden muss.  Adaptiert W3C Standard, demnach sind Schnittstellen definiert und geschützt durch W3C sowie Apache Foundation gegen IP oder Patentansprüche.  DeviceMap unterliegt der Apache License 2.0. APIs und Daten sind in freier oder kommerzieller Software nutzbar. 18
  19. 19. #WebDevBBQ Grundlagen Anwender können bzw. müssen Betriebssysteme ihrer Geräten aktualisieren (auch eigene Builds) und / oder einen neuen Web- Browser installieren. Die Identifizierung eines Gerätes durch den ursprünglichen User Agent, der von Herstellern bereitgestellt wird, ist oft nicht mehr ausreichend. DeviceMap betrachtet das Gerät als ein Kombination dreier wichtiger Aspekte:  Physical Device  Operating System  Web Browser 19
  20. 20. #WebDevBBQ Grundlagen  DeviceMap kann spezielle Versionen ihres Betriebssystems und Webbrowser von Drittherstellern erkennen. Falls die Version eines bestimmten Browsers oder ein Betriebssystem nicht genau bekannt ist, liefert DeviceMap die Information der nächst gelegenen Version, statt gar keiner.  DeviceMap erkennt ein Gerät, einen Browser oder ein Betriebssystem mit einem gewissen Vertrauensgrad. Sie können dessen gewünschte Präzision beim Erkennungsprozess selbst bestimmen. Größerer Vertrauensgrad kann längere Erkennungszeiten bewirken; während geringerer Vertrauensgrad die Erkennung beschleunigt, dabei aber das Risiko weniger präziser Erkennung birgt.  DeviceMap erlaubt auch das Patchen der Datenquelle. 20
  21. 21. #WebDevBBQ Titolo presentazione - data Metro Für .NET Grundlagen  C#  VB.NET 21
  22. 22. #WebDevBBQ DeviceMap implementiert die W3C Simple API Schnittstelle. Es unterstützt das Basisvokabular, das im DDR W3C Recommendation Dokument festgelegt wurde. Um DeviceMap Simple API zu nutzen, müssen Sie lediglich Werte einer derartigen Property Datei anpassen: oddr.ua.device.builder.path=PATH_TO_FILE/BuidlerDataSource.xml oddr.ua.device.datasource.path=PATH_TO_FILE/DeviceDataSource.xml oddr.ua.device.builder.patch.paths=PATH_TO_FILE/BuilderDataSourcePatch.xml oddr.ua.device.datasource.patch.paths=PATH_TO_FILE/DeviceDataSourcePatch.xml oddr.ua.browser.datasource.path=PATH_TO_FILE/BrowserDataSource.xml ddr.vocabulary.core.path=PATH_TO_FILE/coreVocabulary.xml oddr.vocabulary.path=PATH_TO_FILE/oddrVocabulary.xml oddr.limited.vocabulary.path=PATH_TO_FILE/oddrLimitedVocabulary.xml oddr.vocabulary.device=http://www.DeviceMap.org/oddr-vocabulary oddr.threshold=70 Die oddr.threshold Eigenschaft erlaubt dem Entwickler, den gewünschten Vertrauensgrad festzulegen. In diesem Fall wählten wir einen Vertrauensgrad von zumindest 70%. W3C DDR Simple 22
  23. 23. #WebDevBBQ W3C DDR Simple (2) Zur Erstellung eines Identification Service nutzen wir die ServiceFactory der W3C DDR-Simple-API.jar Service identificationService = ServiceFactory.newService ("org.apache.devicemap.simpleapi.ODDRService", ODDR_VOCABULARY_IRI, initializationProperties); Das erste Argument ist die implementierende Klasse des DDRService; das zweite Argument ist das Standardvokabular zur Identifikation, falls kein Vokabular explizit angegeben wurde; das dritte Argument ist die DeviceMap Properties Datei. Hier ein kurzes Beispiel um “displayWidth”, “model” und “vendor” Eigenschaften aus dem Standardvokabular zu erhalten. PropertyRef displayWidthRef; PropertyRef vendorRef; PropertyRef modelRef; try { displayWidthRef = identificationService.newPropertyRef("displayWidth"); vendorRef = identificationService.newPropertyRef("vendor"); modelRef = identificationService.newPropertyRef("model"); } catch (NameException ex) { throw new RuntimeException(ex); } […] 23
  24. 24. #WebDevBBQ Java Classifier (aka Java client) 24 While departing from W3C compliance a new Java client offers more flexibility e.g. when it comes to ways of loading device data. Data can be loaded via: • URL • JAR file • File system Get client using data from a URL DeviceMapClient client = DeviceMapFactory.getClient(LoaderOption.URL, "http://devicemap-vm.apache.org/data/latest");
  25. 25. #WebDevBBQ Java Classifier (2) 25 Get the client using JAR data source DeviceMapClient client = DeviceMapFactory.getClient(LoaderOption.JAR); Get client using data from file system DeviceMapClient client = DeviceMapFactory.getClient(LoaderOption.FOLDER, "/some/path/devicemap/latest/devicedata"); The last option is closest to the W3C DDR Simple client.
  26. 26. #WebDevBBQ HTML 5 Unterstützung 26 Basierend auf Betriebssystem, Gerätefamilie oder konkretem Gerät können Mobile Webanwendungen entscheiden, ob HTML 5 nutzbar ist oder nicht: if (<Supports HTML5>) { // Browser supports native HTML5 canvas. } else { // Fallback to another solution, such as Flash, static image, download link,… }
  27. 27. #WebDevBBQ HTML 5 Unterstützung – Canvas 27 Dieses GWT Beispiel zeigt wie man einen geräte- spezifischen HTML5 Canvas darstellen kann: private void createCanvas(){ PropertyRef widthRef = service.newPropertyRef("displayWidth"); PropertyRef heightRef = service.newPropertyRef("displayHeight"); PropertyRef[] refs = new PropertyRef[] {widthRef, heightRef}; Evidence evidence = new ODDRHTTPEvidence(); PropertyValues values = service.getPropertyValues(evidence, refs); PropertyValue width = values.getValue(widthRef); PropertyValue height = values.getValue(heightRef); canvas.setWidth(width + "px"); canvas.setHeight(height + "px"); canvas.setCoordinateSpaceWidth(width.getInteger()); canvas.setCoordinateSpaceHeight(height.getInteger()); RootPanel.get(canvasHolderId).add(canvas); […] }
  28. 28. #WebDevBBQ Profiling für WURFL Benchmarks 28
  29. 29. #WebDevBBQ Profiling für unreduced DeviceMap Benchmarks 29
  30. 30. #WebDevBBQ Profiling für reduced DeviceMap Benchmarks 30
  31. 31. #WebDevBBQ Benchmarks Wir wählten für den Test das limitierte W3C core vocabulary Der Speicherbedarf von DeviceMap mit limited vocabulary ist lediglich 50MB und nach einer initialen Startphase hat DeviceMap keinen erhöhten Speicherbedarf mehr. Beide APIs konnten alle User Agents aus den HTTP requests korrekt erkennen. 31
  32. 32. #WebDevBBQ Titolo presentazione - data Demo 32
  33. 33. #WebDevBBQ Demo DeviceMap Servlet Beispiel auf Apache VM: http://devicemap-vm.apache.org/dmap-servlet DeviceMap Spring Beispiel auf Apache VM : http://devicemap-vm.apache.org/dmap-spring 33
  34. 34. #WebDevBBQ Zusammenfassung  Offen, Frei und basierend auf W3C Standards.  Unter der Apache Lizenz.  Aktualisierung des DDR erfolgt durch Mitglieder der Gemeinschaft oder Gerätehersteller  Die Erkennung erfolgt nicht nur für das Gerät als Einzelnes, sondern in Erweiterter Form zusammen mit Webbrowser und Betriebssystem. DeviceMap kann darüber hinaus Browser von Drittherstellern und speziell angepasste Versionen von Betriebssystemen erkennen → Embedded/Automotive,…  Entwickler können das Vokabular zur Erkennung angeben, sowie Aspekte und Eigenschaften, die sie darin nutzen wollen. 34
  35. 35. #WebDevBBQ Zusammenfassung  Basierend auf identification threshold. Falls eine bestimmte Version des Browsers oder Geräts nicht gefunden wird, liefert DeviceMap die Eigenschaften der nächst gelegenen Version, so lange diese Annahme die vom Entwickler gewünschte Genauigkeit erfüllt.  Entwickler können entscheiden, welche und wie viele Eigenschaften sie benötigen, und so ein limitiertes Vokabular nutzen → Keine Speicherverschwendung.  Patch Unterstützung: Falls eine geänderte oder neuere Version des Repositories erforderlich ist, kann diese Änderung einfach durch Anpassung der entsprechenden Eigenschaften vorgenommen werden. Und neues Repository und Vokabular werden genutzt. 35
  36. 36. #WebDevBBQ Links DeviceMap Site: http://devicemap.apache.org DeviceMap Quellcode und Ressourcen: http://devicemap.apache.org/source.html Mailing Listen: http://devicemap.apache.org/mailing-lists.html BrowserMap GitHub Mirror: https://github.com/apache/devicemap-browsermap 36 Email wkeil@apache.org Twitter @wernerkeil | @DeviceMap
  37. 37. #WebDevBBQ Links (2) Apache Sling DeviceMap Demo auf GitHub: https://github.com/raducotescu/devicemap-demo Wikimedia LogCapture https://github.com/wikimedia/mediawiki-extensions-DeviceMapLogCapture DDR Compare auf GitHub: https://github.com/keilw/ddr-compare Ruby Client für DeviceMap https://github.com/soylent/device_map Clojure Wrapper für DeviceMap Client https://github.com/timgalebach/clj-devicemap 37

×