SlideShare a Scribd company logo
1 of 39
ROME 27-28 march 2015
Improving Mobile UX
with Apache DeviceMap
wkeil@apache.org
Werner Keil
Twitter: @wernerkeil
ROME 27-28 march 2015 - Werner Keil
7/16/2015 2
Agenda
• Introduction
• History and Comparison
• Project Brief
• Tests and Results
• Examples and Demo
• Outlook
• Conclusion
ROME 27-28 march 2015 - Werner Keil
7/16/2015 3
Who am I?
• Consultant – Coach
• Creative Cosmopolitan
• Open Source Evangelist
• Software Architect
• Java Godfather
• JCP EC Member
• DevOps Guy …
Twitter @wernerkeil
Email wkeil@apache.org
ROME 27-28 march 2015 - Werner Keil
7/16/2015 4
Java Godfather?
ROME 27-28 march 2015 - Werner Keil
7/16/2015 6
What is a DDR?
ROME 27-28 march 2015 - Werner Keil
7/16/2015 7
What is a DDR?
ROME 27-28 march 2015 - Werner Keil
7/16/2015 8
What is a DDR?
ROME 27-28 march 2015 - Werner Keil
7/16/2015 9
What is a DDR?
ROME 27-28 march 2015 - Werner Keil
7/16/2015 10
What is DeviceMap?
Day after day we all experience an incredible growth and
fragmentation of devices available on a more and more
proliferated market.
Accurately tracking their specs has become very hard
work.
But this complexity can be reduced if managed by a
community daily involved in improving the Device
Description Repository (DDR).
This is the essence of the DeviceMap project, the best
open and free repository of device descriptions currently
available.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 11
Why is DeviceMap different?
If you want a comfortable user experience, you need
dynamic, “responsive” content according to hardware and
browser of your device.
Device Description Repositories (DDR) are databases that
plenty of information concerning mobile phones, tablets,
Interactive TVs, set top boxes and any device having a
Web browser. DDR allow developers to realize applications
providing appropriate user experience on each client
There are several DDR projects, most demand often hefty
fees to access to their databases and APIs or restricts free
use to non-commercial applications.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 12
WURFL Wall
ROME 27-28 march 2015 - Werner Keil
7/16/2015 13
WURFL Wall since August 2011
ROME 27-28 march 2015 - Werner Keil
7/16/2015 14
WURFL no longer Open Source
ROME 27-28 march 2015 - Werner Keil
7/16/2015 15
Project Comparison
Project Strength Weakness License
MaDDR Project The interface is a
W3C standard
Device repository only with
commercial mobileAware DDR (the
APIs are bundled with a small
sample DDR)
The maDDR project cannot offer an
adaptation technology that uses
repository knowledge to guide its
processes.
Repository:
Commercial license
only
API: Commercial
license OR Simple
DDR API
implementation
licensed as LGPL.
DeviceAtlas Data is multi-
sourced from
industry-leading
partners.
Some W3C
compliance
Only commercial licenses. Repository:
Commercial license
API: Commercial
license
Volantis Relatively wide
device coverage
Only commercial licenses.
Multiple takeovers, the new owner
does not show support for it any
more.
Repository:
Commercial license
API: Commercial
license
ROME 27-28 march 2015 - Werner Keil
7/16/2015 16
Project Comparison (2)
Project Strength Weakness License
WURFL Former
Community project
(till Aug 2011)
The license does not allow to use
the DDR without accessing through
the WURFL API
the API does not allow use in
projects with a proprietary license
Repository: Use not
allowed if accessed
without WURFL APIs
API license: dual
licensing AGPL and
commercial
(Changed since
August 2011)
51Degrees.mobi More Predictable
product catalogue,
.NET Support
Free license contains fewer
devices, usually less accurate
Repository: MPL or
Commercial
(„Pro Edition“)
API: Mozilla Public
License
NetBiscuits Service based,
seems easy to
integrate at least
via JavaScript
Free and SME offerings dependent
on using their JavaScript , no API
below Enterprise or “OEM” price
range
Repository: N/A
API: Commercial
license
ROME 27-28 march 2015 - Werner Keil
7/16/2015 17
What was Contributed?
• In late 2011 a few months after OpenDDR started,
Apache committers and members got aware of the
technology and its relevance, too. Deciding to create
both a unified Device Repository and APIs
for common languages including Java.
• OpenDDR is a Founding Member of the DeviceMap
Incubator. And made initial contribution of W3C DDR
Libraries for Java and other languages as well as
resource data.
• Also see the Proposal Wiki:
http://wiki.apache.org/incubator/DeviceMapProposal
ROME 27-28 march 2015 - Werner Keil
7/16/2015 18
Metro – DeviceMap for .NET
ROME 27-28 march 2015 - Werner Keil
7/16/2015 19
Why Open Standards?
• DeviceMap stakes on open standards:
• Repository 1.x is fully compliant with W3C DDR
• SimpleDDR library implements the W3C DDR Simple APIs
• From a developer point of view:
• You can start developing your application with confidence that
your product will work with any W3C DDR Simple API
implementation, no binding to DeviceMap DDR implementation
• Adopting a W3C standard, the Copyright of these interfaces is
owned and protected by W3C against any IP or patent claim
• The Apache License means that you are free to use all
of DeviceMap in open source or proprietary software.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 20
What's different in DeviceMap?
• Users can update the operating systems of their devices
either with custom builds, or just install a new browser.
• E.g. Google‘s Project Ara aims for modular devices with
an almost endless combination of capabilities.
• The identification of a device through the original User
Agent exposed by manufactures is no longer sufficient.
• DeviceMap considers the device as a combination of
three important aspects:
Physical Device
Operating System
Web Browser
ROME 27-28 march 2015 - Werner Keil
7/16/2015 21
Level of Confidence
• DeviceMap can identify custom builds of the operating
system and third party browsers.
• If a particular version of a browser or an operating
system is not recognized, DeviceMap returns information
about the closest version rather than not returning any
information at all.
• DeviceMap identifies a device, a web browser or an
operating system with a certain level of confidence.
• You can specify the threshold as a target to achieve in
the identification process. The higher the confidence the
slower or more memory consuming the process may be.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 22
Patching and Optimization
• Lowering the confidence improves execution speed
the process, even if you can have less accurate results.
• DeviceMap supports patching data sources.
• In DeviceMap we can specify a reduced vocabulary in
order to limit the memory load.
• It can be specified in the oddr.limited.vocabulary.path property of
the DeviceMap properties file.
• It allows developers to choose which properties need to be
loaded in memory at startup from the datasource. In most case
developers need only a subset of properties from the datasource.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 23
How we tested?
• We compared DeviceMap with WURFL API (1.3.1) in
terms of memory load in two situations:
Without limited vocabulary
With limited vocabulary
• We used jMeter as workload generator, configuring it in
order to generate 100 requests per seconds from 10
workers with a different user agent. The user agents set
contained ten of most common user agent observed in a
real environment.
• Both DeviceMap DDR and WURFL API were tested in a
simple web app.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 24
WURFL Memory Load
ROME 27-28 march 2015 - Werner Keil
7/16/2015 25
Unreduced DeviceMap Memory Load
ROME 27-28 march 2015 - Werner Keil
7/16/2015 26
Reduced DeviceMap Memory Load
ROME 27-28 march 2015 - Werner Keil
7/16/2015 27
Test Results
• We chose the W3C core (limited) vocabulary
• The memory load of Apache DeviceMap with limited
vocabulary is only about
50MB and after initialization, DeviceMap won't show a
memory spike.
• Both APIs identified correctly all the user agents in the
HTTP request
ROME 27-28 march 2015 - Werner Keil
7/16/2015 28
DDR Configuration
DeviceMap DDR implements W3C Simple DDR interfaces. It supports the
core vocabulary as specified by the DDR W3C recommendation.
To use DeviceMap Simple DDR you need to configure a property file as follows:
oddr.ua.device.builder.path=PATH/BuidlerDataSource.xml
oddr.ua.device.datasource.path=PATH/DeviceDataSource.xml
oddr.ua.device.builder.patch.paths=PATH/BuilderDataSourcePatch.xml
oddr.ua.device.datasource.patch.paths=PATH/DeviceDataSourcePatch.xml
oddr.ua.browser.datasource.path=PATH/BrowserDataSource.xml
ddr.vocabulary.core.path=PATH/coreVocabulary.xml
oddr.vocabulary.path=PATH/oddrVocabulary.xml
oddr.limited.vocabulary.path=PATH/oddrLimitedVocabulary.xml
oddr.vocabulary.device=http://www.openddr.org/oddr-vocabulary
oddr.threshold=70
The oddr.threshold property allows the developer to specify the desired
confidence to achieve the identification.
In this case we want a confidence of at least 70%.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 29
DDR Service Retrieval
To create the identification service we use the ServiceFactory
of W3C DDR-Simple-API
initializationProperties.load(context.getResourceAsStream
("/WEB-INF/oddr.properties"));
Service identificationService =
ServiceFactory.newService("org.apache.devicemap.ddrsimple.ODDRService",
ODDR_VOCABULARY_IRI,
initializationProperties);
The first argument is the class implementing the DDRService;
the second argument is the default vocabulary used in the
identification if the vocabulary is not specified;
the third argument is the SimpleDDR properties file.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 30
Java Classifier
While departing from W3C compliance a “new Java client”
(aka Classifier) 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");
ROME 27-28 march 2015 - Werner Keil
7/16/2015 31
Java Classifier (2)
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 latter is closest to the W3C DDR client.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 32
HTML5 Support
Based on the device OS, device family or actual device, mobile
web applications can decide whether or not to use HTML5:
if (<Supports HTML5>) {
// Browser supports native HTML5 canvas.
} else {
// Fallback to another solution,
such as Flash, static image, download link,…
}
ROME 27-28 march 2015 - Werner Keil
7/16/2015 33
HTML5 Support – Canvas
Using GWT this example shows how to render a device-specific
HTML5 Canvas:
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);
[…]
}
ROME 27-28 march 2015 - Werner Keil
7/16/2015 34
Demo
http://devicemap-vm.apache.org/dmap-spring/
ROME 27-28 march 2015 - Werner Keil
7/16/2015 35
Outlook
• In November 2014 after releasing W3C DDR compliant
device data and new clients beyond W3C for Java, .NET
or JavaScript, DeviceMap graduated from the Apache
Incubator.
• DeviceMap 2 with a new JSON-based data format and
improved recognition is currently planned and designed.
• Beside Java, JavaScript, C# and VB.net we consider
additional languages and bindings for popular Web
frameworks. With Groovy / Grails having just entered the
Apache Incubator, that opens new doors to interesting
synergies.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 36
Conclusion
• Open, free, based on W3C standard. Update to DDR by
the community and device manufacturers.
• Identification is not only for the device as a single entity
but extended to the web browser
and the operating system. DeviceMap can identify third
parties web browsers and customized operating
systems. A developer can specify the vocabulary and
the aspects of the property he wants to know.
• Easy migration: Device Repository and some DeviceMap
APIs are compatible with W3C DDR
ROME 27-28 march 2015 - Werner Keil
7/16/2015 37
Conclusion (2)
• Based on identification threshold. When a particular
browser version is not recognized, DeviceMap returns
properties of the nearest version, if this satisfies the
defined threshold.
• Developers can choose which properties to be loaded in
memory by specifying a limited vocabulary
► No Waste of Memory.
• Patch Support: if you want to change or update your
repository you can do that.
It is simple to add new properties updating your DDR
and your vocabulary.
ROME 27-28 march 2015 - Werner Keil
7/16/2015 38
Links
• Apache DeviceMap Incubator Site:
http://devicemap.apache.org
• DeviceMap Sources and Data:
http://devicemap.apache.org/source.html
• Mailing Lists:
http://devicemap.apache.org./mailing-lists.html
• BrowserMap GitHub Mirror:
https://github.com/apache/devicemap-browsermap
ROME 27-28 march 2015 - Werner Keil
• Apache Sling DeviceMap Demo on GitHub:
https://github.com/raducotescu/devicemap-demo
• Wikimedia LogCapture
https://github.com/wikimedia/mediawiki-extensions-
DeviceMapLogCapture
• Miri DDR:
www.ducis.net/Miri/Ddr
7/16/2015 39
Twitter @wernerkeil
Email wkeil@apache.org
Project Twitter @DeviceMap
Links (2)

More Related Content

Similar to Apache DeviceMap - codemotion Rome 2015

Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015Werner Keil
 
Apache DeviceMap - ApacheCon Europe 2014
Apache DeviceMap - ApacheCon Europe 2014Apache DeviceMap - ApacheCon Europe 2014
Apache DeviceMap - ApacheCon Europe 2014Werner Keil
 
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0Amir Zmora
 
How to setup a development environment for ONAP
How to setup a development environment for ONAPHow to setup a development environment for ONAP
How to setup a development environment for ONAPVictor Morales
 
Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...
Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...
Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...Aruba, a Hewlett Packard Enterprise company
 
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...jeckels
 
Android app development Hybrid approach for beginners
Android app development  Hybrid approach for beginnersAndroid app development  Hybrid approach for beginners
Android app development Hybrid approach for beginnersKhirulnizam Abd Rahman
 
4 Paradigm Shifts for the Connected Car of the Future
4 Paradigm Shifts for the Connected Car of the Future4 Paradigm Shifts for the Connected Car of the Future
4 Paradigm Shifts for the Connected Car of the FutureHiveMQ
 
Ratpack - SpringOne2GX 2015
Ratpack - SpringOne2GX 2015Ratpack - SpringOne2GX 2015
Ratpack - SpringOne2GX 2015Daniel Woods
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxGrace Jansen
 
RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?Mark Russell
 
Open Stack Cloud Services
Open Stack Cloud ServicesOpen Stack Cloud Services
Open Stack Cloud ServicesSaurabh Gupta
 
Java Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep DiveJava Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep Diveterrencebarr
 
Introducing RTView Enterprise Monitor 1.5
Introducing RTView Enterprise Monitor 1.5 Introducing RTView Enterprise Monitor 1.5
Introducing RTView Enterprise Monitor 1.5 SL Corporation
 
Software Tools for Building Industry 4.0 Applications
Software Tools for Building Industry 4.0 ApplicationsSoftware Tools for Building Industry 4.0 Applications
Software Tools for Building Industry 4.0 ApplicationsPankesh Patel
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationAlex Vranceanu
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDr Ganesh Iyer
 
IoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfIoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfGVNSK Sravya
 

Similar to Apache DeviceMap - codemotion Rome 2015 (20)

Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015
 
Apache DeviceMap - ApacheCon Europe 2014
Apache DeviceMap - ApacheCon Europe 2014Apache DeviceMap - ApacheCon Europe 2014
Apache DeviceMap - ApacheCon Europe 2014
 
OpenDDR
OpenDDROpenDDR
OpenDDR
 
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
 
How to setup a development environment for ONAP
How to setup a development environment for ONAPHow to setup a development environment for ONAP
How to setup a development environment for ONAP
 
E2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation PlatformsE2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation Platforms
 
Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...
Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...
Software defined networking (sdn) deep dive 3rd-party ecosystem apps and the ...
 
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
 
Android app development Hybrid approach for beginners
Android app development  Hybrid approach for beginnersAndroid app development  Hybrid approach for beginners
Android app development Hybrid approach for beginners
 
4 Paradigm Shifts for the Connected Car of the Future
4 Paradigm Shifts for the Connected Car of the Future4 Paradigm Shifts for the Connected Car of the Future
4 Paradigm Shifts for the Connected Car of the Future
 
Ratpack - SpringOne2GX 2015
Ratpack - SpringOne2GX 2015Ratpack - SpringOne2GX 2015
Ratpack - SpringOne2GX 2015
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?
 
Open Stack Cloud Services
Open Stack Cloud ServicesOpen Stack Cloud Services
Open Stack Cloud Services
 
Java Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep DiveJava Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep Dive
 
Introducing RTView Enterprise Monitor 1.5
Introducing RTView Enterprise Monitor 1.5 Introducing RTView Enterprise Monitor 1.5
Introducing RTView Enterprise Monitor 1.5
 
Software Tools for Building Industry 4.0 Applications
Software Tools for Building Industry 4.0 ApplicationsSoftware Tools for Building Industry 4.0 Applications
Software Tools for Building Industry 4.0 Applications
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containers
 
IoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfIoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdf
 

More from 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
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartWerner 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
 

More from 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
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
 
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
 

Recently uploaded

CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceanilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceanilsa9823
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Pooja Nehwal
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7Pooja Nehwal
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 

Recently uploaded (7)

CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 

Apache DeviceMap - codemotion Rome 2015

  • 1. ROME 27-28 march 2015 Improving Mobile UX with Apache DeviceMap wkeil@apache.org Werner Keil Twitter: @wernerkeil
  • 2. ROME 27-28 march 2015 - Werner Keil 7/16/2015 2 Agenda • Introduction • History and Comparison • Project Brief • Tests and Results • Examples and Demo • Outlook • Conclusion
  • 3. ROME 27-28 march 2015 - Werner Keil 7/16/2015 3 Who am I? • Consultant – Coach • Creative Cosmopolitan • Open Source Evangelist • Software Architect • Java Godfather • JCP EC Member • DevOps Guy … Twitter @wernerkeil Email wkeil@apache.org
  • 4. ROME 27-28 march 2015 - Werner Keil 7/16/2015 4 Java Godfather?
  • 5.
  • 6. ROME 27-28 march 2015 - Werner Keil 7/16/2015 6 What is a DDR?
  • 7. ROME 27-28 march 2015 - Werner Keil 7/16/2015 7 What is a DDR?
  • 8. ROME 27-28 march 2015 - Werner Keil 7/16/2015 8 What is a DDR?
  • 9. ROME 27-28 march 2015 - Werner Keil 7/16/2015 9 What is a DDR?
  • 10. ROME 27-28 march 2015 - Werner Keil 7/16/2015 10 What is DeviceMap? Day after day we all experience an incredible growth and fragmentation of devices available on a more and more proliferated market. Accurately tracking their specs has become very hard work. But this complexity can be reduced if managed by a community daily involved in improving the Device Description Repository (DDR). This is the essence of the DeviceMap project, the best open and free repository of device descriptions currently available.
  • 11. ROME 27-28 march 2015 - Werner Keil 7/16/2015 11 Why is DeviceMap different? If you want a comfortable user experience, you need dynamic, “responsive” content according to hardware and browser of your device. Device Description Repositories (DDR) are databases that plenty of information concerning mobile phones, tablets, Interactive TVs, set top boxes and any device having a Web browser. DDR allow developers to realize applications providing appropriate user experience on each client There are several DDR projects, most demand often hefty fees to access to their databases and APIs or restricts free use to non-commercial applications.
  • 12. ROME 27-28 march 2015 - Werner Keil 7/16/2015 12 WURFL Wall
  • 13. ROME 27-28 march 2015 - Werner Keil 7/16/2015 13 WURFL Wall since August 2011
  • 14. ROME 27-28 march 2015 - Werner Keil 7/16/2015 14 WURFL no longer Open Source
  • 15. ROME 27-28 march 2015 - Werner Keil 7/16/2015 15 Project Comparison Project Strength Weakness License MaDDR Project The interface is a W3C standard Device repository only with commercial mobileAware DDR (the APIs are bundled with a small sample DDR) The maDDR project cannot offer an adaptation technology that uses repository knowledge to guide its processes. Repository: Commercial license only API: Commercial license OR Simple DDR API implementation licensed as LGPL. DeviceAtlas Data is multi- sourced from industry-leading partners. Some W3C compliance Only commercial licenses. Repository: Commercial license API: Commercial license Volantis Relatively wide device coverage Only commercial licenses. Multiple takeovers, the new owner does not show support for it any more. Repository: Commercial license API: Commercial license
  • 16. ROME 27-28 march 2015 - Werner Keil 7/16/2015 16 Project Comparison (2) Project Strength Weakness License WURFL Former Community project (till Aug 2011) The license does not allow to use the DDR without accessing through the WURFL API the API does not allow use in projects with a proprietary license Repository: Use not allowed if accessed without WURFL APIs API license: dual licensing AGPL and commercial (Changed since August 2011) 51Degrees.mobi More Predictable product catalogue, .NET Support Free license contains fewer devices, usually less accurate Repository: MPL or Commercial („Pro Edition“) API: Mozilla Public License NetBiscuits Service based, seems easy to integrate at least via JavaScript Free and SME offerings dependent on using their JavaScript , no API below Enterprise or “OEM” price range Repository: N/A API: Commercial license
  • 17. ROME 27-28 march 2015 - Werner Keil 7/16/2015 17 What was Contributed? • In late 2011 a few months after OpenDDR started, Apache committers and members got aware of the technology and its relevance, too. Deciding to create both a unified Device Repository and APIs for common languages including Java. • OpenDDR is a Founding Member of the DeviceMap Incubator. And made initial contribution of W3C DDR Libraries for Java and other languages as well as resource data. • Also see the Proposal Wiki: http://wiki.apache.org/incubator/DeviceMapProposal
  • 18. ROME 27-28 march 2015 - Werner Keil 7/16/2015 18 Metro – DeviceMap for .NET
  • 19. ROME 27-28 march 2015 - Werner Keil 7/16/2015 19 Why Open Standards? • DeviceMap stakes on open standards: • Repository 1.x is fully compliant with W3C DDR • SimpleDDR library implements the W3C DDR Simple APIs • From a developer point of view: • You can start developing your application with confidence that your product will work with any W3C DDR Simple API implementation, no binding to DeviceMap DDR implementation • Adopting a W3C standard, the Copyright of these interfaces is owned and protected by W3C against any IP or patent claim • The Apache License means that you are free to use all of DeviceMap in open source or proprietary software.
  • 20. ROME 27-28 march 2015 - Werner Keil 7/16/2015 20 What's different in DeviceMap? • Users can update the operating systems of their devices either with custom builds, or just install a new browser. • E.g. Google‘s Project Ara aims for modular devices with an almost endless combination of capabilities. • The identification of a device through the original User Agent exposed by manufactures is no longer sufficient. • DeviceMap considers the device as a combination of three important aspects: Physical Device Operating System Web Browser
  • 21. ROME 27-28 march 2015 - Werner Keil 7/16/2015 21 Level of Confidence • DeviceMap can identify custom builds of the operating system and third party browsers. • If a particular version of a browser or an operating system is not recognized, DeviceMap returns information about the closest version rather than not returning any information at all. • DeviceMap identifies a device, a web browser or an operating system with a certain level of confidence. • You can specify the threshold as a target to achieve in the identification process. The higher the confidence the slower or more memory consuming the process may be.
  • 22. ROME 27-28 march 2015 - Werner Keil 7/16/2015 22 Patching and Optimization • Lowering the confidence improves execution speed the process, even if you can have less accurate results. • DeviceMap supports patching data sources. • In DeviceMap we can specify a reduced vocabulary in order to limit the memory load. • It can be specified in the oddr.limited.vocabulary.path property of the DeviceMap properties file. • It allows developers to choose which properties need to be loaded in memory at startup from the datasource. In most case developers need only a subset of properties from the datasource.
  • 23. ROME 27-28 march 2015 - Werner Keil 7/16/2015 23 How we tested? • We compared DeviceMap with WURFL API (1.3.1) in terms of memory load in two situations: Without limited vocabulary With limited vocabulary • We used jMeter as workload generator, configuring it in order to generate 100 requests per seconds from 10 workers with a different user agent. The user agents set contained ten of most common user agent observed in a real environment. • Both DeviceMap DDR and WURFL API were tested in a simple web app.
  • 24. ROME 27-28 march 2015 - Werner Keil 7/16/2015 24 WURFL Memory Load
  • 25. ROME 27-28 march 2015 - Werner Keil 7/16/2015 25 Unreduced DeviceMap Memory Load
  • 26. ROME 27-28 march 2015 - Werner Keil 7/16/2015 26 Reduced DeviceMap Memory Load
  • 27. ROME 27-28 march 2015 - Werner Keil 7/16/2015 27 Test Results • We chose the W3C core (limited) vocabulary • The memory load of Apache DeviceMap with limited vocabulary is only about 50MB and after initialization, DeviceMap won't show a memory spike. • Both APIs identified correctly all the user agents in the HTTP request
  • 28. ROME 27-28 march 2015 - Werner Keil 7/16/2015 28 DDR Configuration DeviceMap DDR implements W3C Simple DDR interfaces. It supports the core vocabulary as specified by the DDR W3C recommendation. To use DeviceMap Simple DDR you need to configure a property file as follows: oddr.ua.device.builder.path=PATH/BuidlerDataSource.xml oddr.ua.device.datasource.path=PATH/DeviceDataSource.xml oddr.ua.device.builder.patch.paths=PATH/BuilderDataSourcePatch.xml oddr.ua.device.datasource.patch.paths=PATH/DeviceDataSourcePatch.xml oddr.ua.browser.datasource.path=PATH/BrowserDataSource.xml ddr.vocabulary.core.path=PATH/coreVocabulary.xml oddr.vocabulary.path=PATH/oddrVocabulary.xml oddr.limited.vocabulary.path=PATH/oddrLimitedVocabulary.xml oddr.vocabulary.device=http://www.openddr.org/oddr-vocabulary oddr.threshold=70 The oddr.threshold property allows the developer to specify the desired confidence to achieve the identification. In this case we want a confidence of at least 70%.
  • 29. ROME 27-28 march 2015 - Werner Keil 7/16/2015 29 DDR Service Retrieval To create the identification service we use the ServiceFactory of W3C DDR-Simple-API initializationProperties.load(context.getResourceAsStream ("/WEB-INF/oddr.properties")); Service identificationService = ServiceFactory.newService("org.apache.devicemap.ddrsimple.ODDRService", ODDR_VOCABULARY_IRI, initializationProperties); The first argument is the class implementing the DDRService; the second argument is the default vocabulary used in the identification if the vocabulary is not specified; the third argument is the SimpleDDR properties file.
  • 30. ROME 27-28 march 2015 - Werner Keil 7/16/2015 30 Java Classifier While departing from W3C compliance a “new Java client” (aka Classifier) 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");
  • 31. ROME 27-28 march 2015 - Werner Keil 7/16/2015 31 Java Classifier (2) 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 latter is closest to the W3C DDR client.
  • 32. ROME 27-28 march 2015 - Werner Keil 7/16/2015 32 HTML5 Support Based on the device OS, device family or actual device, mobile web applications can decide whether or not to use HTML5: if (<Supports HTML5>) { // Browser supports native HTML5 canvas. } else { // Fallback to another solution, such as Flash, static image, download link,… }
  • 33. ROME 27-28 march 2015 - Werner Keil 7/16/2015 33 HTML5 Support – Canvas Using GWT this example shows how to render a device-specific HTML5 Canvas: 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); […] }
  • 34. ROME 27-28 march 2015 - Werner Keil 7/16/2015 34 Demo http://devicemap-vm.apache.org/dmap-spring/
  • 35. ROME 27-28 march 2015 - Werner Keil 7/16/2015 35 Outlook • In November 2014 after releasing W3C DDR compliant device data and new clients beyond W3C for Java, .NET or JavaScript, DeviceMap graduated from the Apache Incubator. • DeviceMap 2 with a new JSON-based data format and improved recognition is currently planned and designed. • Beside Java, JavaScript, C# and VB.net we consider additional languages and bindings for popular Web frameworks. With Groovy / Grails having just entered the Apache Incubator, that opens new doors to interesting synergies.
  • 36. ROME 27-28 march 2015 - Werner Keil 7/16/2015 36 Conclusion • Open, free, based on W3C standard. Update to DDR by the community and device manufacturers. • Identification is not only for the device as a single entity but extended to the web browser and the operating system. DeviceMap can identify third parties web browsers and customized operating systems. A developer can specify the vocabulary and the aspects of the property he wants to know. • Easy migration: Device Repository and some DeviceMap APIs are compatible with W3C DDR
  • 37. ROME 27-28 march 2015 - Werner Keil 7/16/2015 37 Conclusion (2) • Based on identification threshold. When a particular browser version is not recognized, DeviceMap returns properties of the nearest version, if this satisfies the defined threshold. • Developers can choose which properties to be loaded in memory by specifying a limited vocabulary ► No Waste of Memory. • Patch Support: if you want to change or update your repository you can do that. It is simple to add new properties updating your DDR and your vocabulary.
  • 38. ROME 27-28 march 2015 - Werner Keil 7/16/2015 38 Links • Apache DeviceMap Incubator Site: http://devicemap.apache.org • DeviceMap Sources and Data: http://devicemap.apache.org/source.html • Mailing Lists: http://devicemap.apache.org./mailing-lists.html • BrowserMap GitHub Mirror: https://github.com/apache/devicemap-browsermap
  • 39. ROME 27-28 march 2015 - Werner Keil • Apache Sling DeviceMap Demo on GitHub: https://github.com/raducotescu/devicemap-demo • Wikimedia LogCapture https://github.com/wikimedia/mediawiki-extensions- DeviceMapLogCapture • Miri DDR: www.ducis.net/Miri/Ddr 7/16/2015 39 Twitter @wernerkeil Email wkeil@apache.org Project Twitter @DeviceMap Links (2)