SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Apache DeviceMap
Lasst uns Mobile Inhalte
gemeinsam optimieren
Werner Keil
@wernerkeil | wkeil@apache.org
@DeviceMap
#WebDevBBQ
Einleitung
Geschichte
Projektvergleiche
Grundlagen
Anwendungsbeispiele
Benchmarks
Demos
Zusammenfassung
Links
Agenda
2
#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
#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
#WebDevBBQ
#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
#WebDevBBQ
Einleitung
DDR
7
#WebDevBBQ
Einleitung
DDR
8
#WebDevBBQ
Einleitung
DDR
9
#WebDevBBQ
Einleitung
DDR
10
#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
#WebDevBBQ
Titolo presentazione - data
Geschichte
12
#WebDevBBQ
Titolo presentazione - data
Geschichte
13
#WebDevBBQ
Geschichte
14
#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
#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
#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
#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
#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
#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
#WebDevBBQ
Titolo presentazione - data
Metro
Für .NET
Grundlagen
 C#
 VB.NET
21
#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
#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
#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");
#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.
#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,…
}
#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);
[…]
}
#WebDevBBQ
Profiling für WURFL
Benchmarks
28
#WebDevBBQ
Profiling für unreduced DeviceMap
Benchmarks
29
#WebDevBBQ
Profiling für reduced DeviceMap
Benchmarks
30
#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
#WebDevBBQ
Titolo presentazione - data
Demo
32
#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
#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
#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
#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
#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

Weitere ähnliche Inhalte

Andere mochten auch

Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011
Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011
Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011Mónica Urigüen
 
Betriebsabrechnungsbogen1a
Betriebsabrechnungsbogen1aBetriebsabrechnungsbogen1a
Betriebsabrechnungsbogen1aMarkus Hammele
 
BASF - Berufsfeld Dienstleistung, Gastronomie und Hotel
BASF - Berufsfeld Dienstleistung, Gastronomie und HotelBASF - Berufsfeld Dienstleistung, Gastronomie und Hotel
BASF - Berufsfeld Dienstleistung, Gastronomie und Hotelazubister GmbH
 
Estonian open 2015 resultsjunior
Estonian open 2015 resultsjuniorEstonian open 2015 resultsjunior
Estonian open 2015 resultsjunioremiliomerayo
 
Señor, señora, señorita
Señor, señora, señoritaSeñor, señora, señorita
Señor, señora, señoritalehines
 
Presentacion del libro mu 2006
Presentacion del libro mu 2006Presentacion del libro mu 2006
Presentacion del libro mu 2006Mónica Urigüen
 
D I S C I P U L A N D O A L E S T I L O
D I S C I P U L A N D O  A L  E S T I L OD I S C I P U L A N D O  A L  E S T I L O
D I S C I P U L A N D O A L E S T I L OSaúl Loera
 

Andere mochten auch (20)

Mariobenedetti
MariobenedettiMariobenedetti
Mariobenedetti
 
Proximo amanecer
Proximo amanecerProximo amanecer
Proximo amanecer
 
Investitionsmöglichkeiten in Uruguay
Investitionsmöglichkeiten in UruguayInvestitionsmöglichkeiten in Uruguay
Investitionsmöglichkeiten in Uruguay
 
0apunts ciencia politica (1)
0apunts ciencia politica (1)0apunts ciencia politica (1)
0apunts ciencia politica (1)
 
Prueba de gabriela yasuff
Prueba de gabriela yasuffPrueba de gabriela yasuff
Prueba de gabriela yasuff
 
Archive am Oberrhein werden digital
Archive am Oberrhein werden digitalArchive am Oberrhein werden digital
Archive am Oberrhein werden digital
 
Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011
Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011
Elementos determinantes para evaluar posgrados m. uriguen, mayo 2011
 
Betriebsabrechnungsbogen1a
Betriebsabrechnungsbogen1aBetriebsabrechnungsbogen1a
Betriebsabrechnungsbogen1a
 
BASF - Berufsfeld Dienstleistung, Gastronomie und Hotel
BASF - Berufsfeld Dienstleistung, Gastronomie und HotelBASF - Berufsfeld Dienstleistung, Gastronomie und Hotel
BASF - Berufsfeld Dienstleistung, Gastronomie und Hotel
 
Kapitel 12
Kapitel 12Kapitel 12
Kapitel 12
 
Navidad frases-famosos
Navidad frases-famososNavidad frases-famosos
Navidad frases-famosos
 
11. maria, una hermana cuidadosa
11. maria, una hermana cuidadosa11. maria, una hermana cuidadosa
11. maria, una hermana cuidadosa
 
Estonian open 2015 resultsjunior
Estonian open 2015 resultsjuniorEstonian open 2015 resultsjunior
Estonian open 2015 resultsjunior
 
El hombre justo
El hombre justoEl hombre justo
El hombre justo
 
Año 1 semana-2
Año 1 semana-2Año 1 semana-2
Año 1 semana-2
 
Año 1 semana-3
Año 1 semana-3Año 1 semana-3
Año 1 semana-3
 
Señor, señora, señorita
Señor, señora, señoritaSeñor, señora, señorita
Señor, señora, señorita
 
Presentacion del libro mu 2006
Presentacion del libro mu 2006Presentacion del libro mu 2006
Presentacion del libro mu 2006
 
Muro de berlim
Muro de berlimMuro de berlim
Muro de berlim
 
D I S C I P U L A N D O A L E S T I L O
D I S C I P U L A N D O  A L  E S T I L OD I S C I P U L A N D O  A L  E S T I L O
D I S C I P U L A N D O A L E S T I L O
 

Ähnlich wie Apache DeviceMap - Web-Dev-BBQ Stuttgart

Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Jürg Stuker
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1DNUG e.V.
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Smartphone Betriebssysteme Android
Smartphone Betriebssysteme AndroidSmartphone Betriebssysteme Android
Smartphone Betriebssysteme Androiddm-development
 
Per Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysPer Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysQAware GmbH
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
Slides zum Impulsreferat: HCL UDP - DNUG Stammtisch Salzburg
Slides zum Impulsreferat: HCL UDP - DNUG Stammtisch SalzburgSlides zum Impulsreferat: HCL UDP - DNUG Stammtisch Salzburg
Slides zum Impulsreferat: HCL UDP - DNUG Stammtisch SalzburgDNUG e.V.
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerStefan Oehrli
 
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...DNUG e.V.
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...BOSTON Server & Storage Solutions GmbH
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
Lasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentationLasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentationSOASTA
 

Ähnlich wie Apache DeviceMap - Web-Dev-BBQ Stuttgart (20)

Company Appstore Suite
Company Appstore SuiteCompany Appstore Suite
Company Appstore Suite
 
OpenDDR Deutsch
OpenDDR DeutschOpenDDR Deutsch
OpenDDR Deutsch
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Smartphone Betriebssysteme Android
Smartphone Betriebssysteme AndroidSmartphone Betriebssysteme Android
Smartphone Betriebssysteme Android
 
Per Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysPer Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API Gateways
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Slides zum Impulsreferat: HCL UDP - DNUG Stammtisch Salzburg
Slides zum Impulsreferat: HCL UDP - DNUG Stammtisch SalzburgSlides zum Impulsreferat: HCL UDP - DNUG Stammtisch Salzburg
Slides zum Impulsreferat: HCL UDP - DNUG Stammtisch Salzburg
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
 
JavaFX Real-World Apps
JavaFX Real-World AppsJavaFX Real-World Apps
JavaFX Real-World Apps
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
2020 oracle lizenznews
2020 oracle lizenznews2020 oracle lizenznews
2020 oracle lizenznews
 
Lasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentationLasttest auf Zuruf CloudTest on Demand webinar presentation
Lasttest auf Zuruf CloudTest on Demand webinar presentation
 

Mehr von Werner Keil

Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21Werner Keil
 
OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021Werner Keil
 
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021Werner Keil
 
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 VirtualOpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 VirtualWerner Keil
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualWerner Keil
 
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDRJCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDRWerner Keil
 
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020Werner Keil
 
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)Werner Keil
 
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)Werner Keil
 
NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)Werner Keil
 
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR DayHow JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR DayWerner Keil
 
JNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL DatabasesJNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL DatabasesWerner Keil
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabasesEclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabasesWerner Keil
 
Physikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG MunichPhysikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG MunichWerner Keil
 
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017Werner Keil
 
Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Werner Keil
 
Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363Werner Keil
 
Java2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the CloudJava2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the CloudWerner Keil
 
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-BrandenburgThe First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-BrandenburgWerner Keil
 
JSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short OverviewJSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short OverviewWerner Keil
 

Mehr von Werner Keil (20)

Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21
 
OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021
 
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
 
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 VirtualOpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 Virtual
 
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDRJCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
 
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
 
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
 
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
 
NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)
 
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR DayHow JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
 
JNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL DatabasesJNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL Databases
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabasesEclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
 
Physikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG MunichPhysikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG Munich
 
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
 
Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017
 
Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363
 
Java2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the CloudJava2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the Cloud
 
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-BrandenburgThe First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
 
JSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short OverviewJSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short Overview
 

Apache DeviceMap - Web-Dev-BBQ Stuttgart

  • 1. Apache DeviceMap Lasst uns Mobile Inhalte gemeinsam optimieren Werner Keil @wernerkeil | wkeil@apache.org @DeviceMap
  • 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. #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
  • 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
  • 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. #WebDevBBQ Titolo presentazione - data Geschichte 12
  • 13. #WebDevBBQ Titolo presentazione - data Geschichte 13
  • 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. #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. #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. #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. #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. #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. #WebDevBBQ Titolo presentazione - data Metro Für .NET Grundlagen  C#  VB.NET 21
  • 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. #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. #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. #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. #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. #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); […] }
  • 29. #WebDevBBQ Profiling für unreduced DeviceMap Benchmarks 29
  • 30. #WebDevBBQ Profiling für reduced DeviceMap Benchmarks 30
  • 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
  • 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. #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. #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. #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. #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