SlideShare a Scribd company logo
1 of 46
OCTOBER 1-2 , 2015
Apache DeviceMap
Werner Keil
@wernerkeil | @DeviceMap | wkeil@apache.org
Agenda
• Introduction
• History and Comparison
• Project Brief
• Tests and Results
• Examples and Demo
• Outlook
• Conclusion
11/14/2015 2
Who am I?
• Consultant – Coach
• Creative Cosmopolitan
• Open Source Evangelist
• Software Architect
• JCP EC Member
• DeviceMap PMC Member
• Java DevOps Guy …
11/14/2015 3
Twitter @wernerkeil | Email wkeil@apache.org
INTRODUCTION
What is a DDR?
11/14/2015 6
What is a DDR?
11/14/2015 7
What is a DDR?
11/14/2015 8
What is a DDR?
11/14/2015 9
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/14/2015 10
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.
11/14/2015 11
HISTORY
WURFL Wall
11/14/2015 13
WURFL Wall since August 2011
11/14/2015 14
WURFL no longer Open Source
11/14/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
11/14/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
(free cloud-based solution available
online, but usage also restricted by
license terms)
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
11/14/2015 17
PROJECT BRIEF
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
11/14/2015 19
Metro – DeviceMap for .NET
11/14/2015 20
Why Open Standards?
• DeviceMap stakes on open standards:
• Repository 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.
11/14/2015 21
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
11/14/2015 22
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.
11/14/2015 23
Patching and Optimization
• Lowering the confidence speeds up
the process, even if you can have less accurate results.
• DeviceMap supports Patching the data source.
• 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.
11/14/2015 24
TESTS
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.
11/14/2015 26
WURFL Memory Load
11/14/2015 27
Unreduced DeviceMap Memory Load
11/14/2015 28
Reduced DeviceMap Memory Load
11/14/2015 29
Test Results
• We chose as limited vocabulary the W3C core
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
11/14/2015 30
SAMPLES
DDR Configuration
11/14/2015 32
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%.
DDR Service Retrieval
11/14/2015 33
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.
Java Classifier (aka Java client)
11/14/2015 34
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");
Java Classifier (2)
11/14/2015 35
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.
HTML 5 Support
11/14/2015 36
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,…
}
HTML 5 Support – Canvas
11/14/2015 37
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);
[…]
}
DEMO
Links
• DeviceMap Servlet Example on Apache VM:
http://devicemap-vm.apache.org/dmap-servlet
• DeviceMap Spring Example on Apache VM :
http://devicemap-vm.apache.org/dmap-spring
11/14/2015 39
Outlook
11/14/2015 40
• 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 “version 2” aims to use JSON data in
addition to the current XML format. A first PoC was
created based on JSON transformation of existing
DeviceMap Data. Including a basic Java client.
Outlook (2)
11/14/2015 41
• Beside Java, JavaScript, C# and VB.net we consider
additional languages and bindings for popular Web
frameworks. With Groovy in Apache Incubator, that
opens new doors to interesting synergies.
• Other projects, especially Apache Portals / Pluto
signaled interest in using DeviceMap to support new
features like Device-specific Portlet rendering for an
optimized User Experience.
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 an some DeviceMap
APIs are compatible with W3C DDR
11/14/2015 42
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.
11/14/2015 43
Q & A
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
11/14/2015 45
Links (2)
• Apache Sling DeviceMap Demo on GitHub:
https://github.com/raducotescu/devicemap-demo
• DDR Compare on GitHub:
https://github.com/keilw/ddr-compare
• Wikimedia LogCapture
https://github.com/wikimedia/mediawiki-extensions-
DeviceMapLogCapture
11/14/2015 46
Twitter @wernerkeil
Email wkeil@apache.org
Project Twitter @DeviceMap

More Related Content

What's hot

Integrating Splunk into your Spring Applications
Integrating Splunk into your Spring ApplicationsIntegrating Splunk into your Spring Applications
Integrating Splunk into your Spring ApplicationsDamien Dallimore
 
Open source applied: Real-world uses
Open source applied: Real-world usesOpen source applied: Real-world uses
Open source applied: Real-world usesRogue Wave Software
 
Open source: Top issues in the top enterprise packages
Open source: Top issues in the top enterprise packagesOpen source: Top issues in the top enterprise packages
Open source: Top issues in the top enterprise packagesRogue Wave Software
 
Eco4Cloud - Company Presentation
Eco4Cloud - Company PresentationEco4Cloud - Company Presentation
Eco4Cloud - Company PresentationEco4Cloud
 
Construire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeConstruire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeOpen Source Experience
 
Splunking the JVM (Java Virtual Machine)
Splunking the JVM (Java Virtual Machine)Splunking the JVM (Java Virtual Machine)
Splunking the JVM (Java Virtual Machine)Damien Dallimore
 
AWS & Intel Webinar Series - Accelerating AI Research
AWS & Intel Webinar Series - Accelerating AI ResearchAWS & Intel Webinar Series - Accelerating AI Research
AWS & Intel Webinar Series - Accelerating AI ResearchIntel® Software
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...cornelia davis
 
AngularJS for Web and Mobile
 AngularJS for Web and Mobile AngularJS for Web and Mobile
AngularJS for Web and MobileRocket Software
 
Open Source Licensing: Types, Strategies and Compliance
Open Source Licensing: Types, Strategies and ComplianceOpen Source Licensing: Types, Strategies and Compliance
Open Source Licensing: Types, Strategies and ComplianceAll Things Open
 
Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018
Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018
Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018Chaitali Sengupta
 
3 additional dpdk_theory(1)
3 additional dpdk_theory(1)3 additional dpdk_theory(1)
3 additional dpdk_theory(1)videos
 
AIDC NY: BODO AI Presentation - 09.19.2019
AIDC NY: BODO AI Presentation - 09.19.2019AIDC NY: BODO AI Presentation - 09.19.2019
AIDC NY: BODO AI Presentation - 09.19.2019Intel® Software
 
Vulkan Update Japan Virtual Open House Feb 2021
Vulkan Update Japan Virtual Open House Feb 2021Vulkan Update Japan Virtual Open House Feb 2021
Vulkan Update Japan Virtual Open House Feb 2021The Khronos Group Inc.
 
App Optimizations Using Qualcomm Snapdragon LLVM Compiler for Android
App Optimizations Using Qualcomm Snapdragon LLVM Compiler for AndroidApp Optimizations Using Qualcomm Snapdragon LLVM Compiler for Android
App Optimizations Using Qualcomm Snapdragon LLVM Compiler for AndroidQualcomm Developer Network
 

What's hot (16)

Integrating Splunk into your Spring Applications
Integrating Splunk into your Spring ApplicationsIntegrating Splunk into your Spring Applications
Integrating Splunk into your Spring Applications
 
Open source applied: Real-world uses
Open source applied: Real-world usesOpen source applied: Real-world uses
Open source applied: Real-world uses
 
Open source: Top issues in the top enterprise packages
Open source: Top issues in the top enterprise packagesOpen source: Top issues in the top enterprise packages
Open source: Top issues in the top enterprise packages
 
Eco4Cloud - Company Presentation
Eco4Cloud - Company PresentationEco4Cloud - Company Presentation
Eco4Cloud - Company Presentation
 
Construire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeConstruire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edge
 
Splunking the JVM (Java Virtual Machine)
Splunking the JVM (Java Virtual Machine)Splunking the JVM (Java Virtual Machine)
Splunking the JVM (Java Virtual Machine)
 
AWS & Intel Webinar Series - Accelerating AI Research
AWS & Intel Webinar Series - Accelerating AI ResearchAWS & Intel Webinar Series - Accelerating AI Research
AWS & Intel Webinar Series - Accelerating AI Research
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
 
AngularJS for Web and Mobile
 AngularJS for Web and Mobile AngularJS for Web and Mobile
AngularJS for Web and Mobile
 
Open Source Licensing: Types, Strategies and Compliance
Open Source Licensing: Types, Strategies and ComplianceOpen Source Licensing: Types, Strategies and Compliance
Open Source Licensing: Types, Strategies and Compliance
 
Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018
Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018
Qualcomm Centriq Arm-based Servers for Edge Computing at ONS 2018
 
3 additional dpdk_theory(1)
3 additional dpdk_theory(1)3 additional dpdk_theory(1)
3 additional dpdk_theory(1)
 
AIDC NY: BODO AI Presentation - 09.19.2019
AIDC NY: BODO AI Presentation - 09.19.2019AIDC NY: BODO AI Presentation - 09.19.2019
AIDC NY: BODO AI Presentation - 09.19.2019
 
Balancing Power & Performance Webinar
Balancing Power & Performance WebinarBalancing Power & Performance Webinar
Balancing Power & Performance Webinar
 
Vulkan Update Japan Virtual Open House Feb 2021
Vulkan Update Japan Virtual Open House Feb 2021Vulkan Update Japan Virtual Open House Feb 2021
Vulkan Update Japan Virtual Open House Feb 2021
 
App Optimizations Using Qualcomm Snapdragon LLVM Compiler for Android
App Optimizations Using Qualcomm Snapdragon LLVM Compiler for AndroidApp Optimizations Using Qualcomm Snapdragon LLVM Compiler for Android
App Optimizations Using Qualcomm Snapdragon LLVM Compiler for Android
 

Viewers also liked

Java EE 7: The Voyage of the Cloud Treader
Java EE 7: The Voyage of the Cloud TreaderJava EE 7: The Voyage of the Cloud Treader
Java EE 7: The Voyage of the Cloud TreaderWerner Keil
 
Apache DeviceMap - codemotion Rome 2015
Apache DeviceMap - codemotion Rome 2015Apache DeviceMap - codemotion Rome 2015
Apache DeviceMap - codemotion Rome 2015Werner 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
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeos890
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartWerner Keil
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Viewers also liked (9)

Java EE 7: The Voyage of the Cloud Treader
Java EE 7: The Voyage of the Cloud TreaderJava EE 7: The Voyage of the Cloud Treader
Java EE 7: The Voyage of the Cloud Treader
 
Apache DeviceMap - codemotion Rome 2015
Apache DeviceMap - codemotion Rome 2015Apache DeviceMap - codemotion Rome 2015
Apache DeviceMap - codemotion Rome 2015
 
OpenDDR
OpenDDROpenDDR
OpenDDR
 
Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpike
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar to Apache DeviceMap - ApacheCon core Europe 2015

OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 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
 
Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015
Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015
Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015Codemotion
 
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
 
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
 
Chapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side TechnologiesChapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side TechnologiesIt Academy
 
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
 
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...LF_DPDK
 
Cloud Performance Testing with LoadRunner
Cloud Performance Testing with LoadRunnerCloud Performance Testing with LoadRunner
Cloud Performance Testing with LoadRunnerRichard Bishop
 
Spark forspringdevs springone_final
Spark forspringdevs springone_finalSpark forspringdevs springone_final
Spark forspringdevs springone_finalsdeeg
 
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
 
Catching the Software Defined Storage Wave
Catching the Software Defined Storage WaveCatching the Software Defined Storage Wave
Catching the Software Defined Storage WaveDataCore Software
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
 
Containerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the CloudContainerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the CloudSubbu Rama
 
Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)Niraj Solanke
 
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat DasNull Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat Dasnullowaspmumbai
 
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Tomek Borek
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsVMware Tanzu
 

Similar to Apache DeviceMap - ApacheCon core Europe 2015 (20)

OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 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
 
Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015
Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015
Improving Mobile UX with Apache DeviceMap - Werner Keil - Codemotion Rome 2015
 
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
 
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, ...
 
Geode Meetup Apachecon
Geode Meetup ApacheconGeode Meetup Apachecon
Geode Meetup Apachecon
 
Chapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side TechnologiesChapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side Technologies
 
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 ...
 
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...
 
Cloud Performance Testing with LoadRunner
Cloud Performance Testing with LoadRunnerCloud Performance Testing with LoadRunner
Cloud Performance Testing with LoadRunner
 
Spark forspringdevs springone_final
Spark forspringdevs springone_finalSpark forspringdevs springone_final
Spark forspringdevs springone_final
 
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
 
Catching the Software Defined Storage Wave
Catching the Software Defined Storage WaveCatching the Software Defined Storage Wave
Catching the Software Defined Storage Wave
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Containerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the CloudContainerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the Cloud
 
Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)
 
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat DasNull Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
 
MapR Unique features
MapR Unique featuresMapR Unique features
MapR Unique features
 
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
 

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
 
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
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualWerner 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
 
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
 
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaJavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaWerner Keil
 
Enterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like AgoravaEnterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like AgoravaWerner Keil
 
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015Werner Keil
 
The First IoT JSR: Units of Measurement - DevoXX BE 2015
The First IoT JSR: Units of Measurement - DevoXX BE 2015The First IoT JSR: Units of Measurement - DevoXX BE 2015
The First IoT JSR: Units of Measurement - DevoXX BE 2015Werner 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
 
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
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 Virtual
 
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
 
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
 
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaJavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
 
Enterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like AgoravaEnterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like Agorava
 
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015
 
The First IoT JSR: Units of Measurement - DevoXX BE 2015
The First IoT JSR: Units of Measurement - DevoXX BE 2015The First IoT JSR: Units of Measurement - DevoXX BE 2015
The First IoT JSR: Units of Measurement - DevoXX BE 2015
 

Apache DeviceMap - ApacheCon core Europe 2015

  • 1. OCTOBER 1-2 , 2015 Apache DeviceMap Werner Keil @wernerkeil | @DeviceMap | wkeil@apache.org
  • 2. Agenda • Introduction • History and Comparison • Project Brief • Tests and Results • Examples and Demo • Outlook • Conclusion 11/14/2015 2
  • 3. Who am I? • Consultant – Coach • Creative Cosmopolitan • Open Source Evangelist • Software Architect • JCP EC Member • DeviceMap PMC Member • Java DevOps Guy … 11/14/2015 3 Twitter @wernerkeil | Email wkeil@apache.org
  • 5.
  • 6. What is a DDR? 11/14/2015 6
  • 7. What is a DDR? 11/14/2015 7
  • 8. What is a DDR? 11/14/2015 8
  • 9. What is a DDR? 11/14/2015 9
  • 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/14/2015 10
  • 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. 11/14/2015 11
  • 14. WURFL Wall since August 2011 11/14/2015 14
  • 15. WURFL no longer Open Source 11/14/2015 15
  • 16. 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 11/14/2015 16
  • 17. 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 (free cloud-based solution available online, but usage also restricted by license terms) 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 11/14/2015 17
  • 19. 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 11/14/2015 19
  • 20. Metro – DeviceMap for .NET 11/14/2015 20
  • 21. Why Open Standards? • DeviceMap stakes on open standards: • Repository 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. 11/14/2015 21
  • 22. 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 11/14/2015 22
  • 23. 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. 11/14/2015 23
  • 24. Patching and Optimization • Lowering the confidence speeds up the process, even if you can have less accurate results. • DeviceMap supports Patching the data source. • 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. 11/14/2015 24
  • 25. TESTS
  • 26. 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. 11/14/2015 26
  • 28. Unreduced DeviceMap Memory Load 11/14/2015 28
  • 29. Reduced DeviceMap Memory Load 11/14/2015 29
  • 30. Test Results • We chose as limited vocabulary the W3C core 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 11/14/2015 30
  • 32. DDR Configuration 11/14/2015 32 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%.
  • 33. DDR Service Retrieval 11/14/2015 33 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.
  • 34. Java Classifier (aka Java client) 11/14/2015 34 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");
  • 35. Java Classifier (2) 11/14/2015 35 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.
  • 36. HTML 5 Support 11/14/2015 36 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,… }
  • 37. HTML 5 Support – Canvas 11/14/2015 37 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); […] }
  • 38. DEMO
  • 39. Links • DeviceMap Servlet Example on Apache VM: http://devicemap-vm.apache.org/dmap-servlet • DeviceMap Spring Example on Apache VM : http://devicemap-vm.apache.org/dmap-spring 11/14/2015 39
  • 40. Outlook 11/14/2015 40 • 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 “version 2” aims to use JSON data in addition to the current XML format. A first PoC was created based on JSON transformation of existing DeviceMap Data. Including a basic Java client.
  • 41. Outlook (2) 11/14/2015 41 • Beside Java, JavaScript, C# and VB.net we consider additional languages and bindings for popular Web frameworks. With Groovy in Apache Incubator, that opens new doors to interesting synergies. • Other projects, especially Apache Portals / Pluto signaled interest in using DeviceMap to support new features like Device-specific Portlet rendering for an optimized User Experience.
  • 42. 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 an some DeviceMap APIs are compatible with W3C DDR 11/14/2015 42
  • 43. 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. 11/14/2015 43
  • 44. Q & A
  • 45. 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 11/14/2015 45
  • 46. Links (2) • Apache Sling DeviceMap Demo on GitHub: https://github.com/raducotescu/devicemap-demo • DDR Compare on GitHub: https://github.com/keilw/ddr-compare • Wikimedia LogCapture https://github.com/wikimedia/mediawiki-extensions- DeviceMapLogCapture 11/14/2015 46 Twitter @wernerkeil Email wkeil@apache.org Project Twitter @DeviceMap