SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Apache DeviceMap 
Werner Keil 
@wernerkeil | wkeil@apache.org
Agenda 
• Introduction 
• History and Comparison 
• Project Brief 
• Tests and Results 
• Examples and Demo 
• Outlook 
• Conclusion 
11/18/2014 2
Who am I? 
• Consultant – Coach 
• Creative Cosmopolitan 
• Open Source Evangelist 
• Software Architect 
• JCP EC Member 
• DevOps Guy … 
Twitter @wernerkeil 
Email wkeil@apache.org 
11/18/2014 3
INTRODUCTION
What is a DDR? 
11/18/2014 6
What is a DDR? 
11/18/2014 7
What is a DDR? 
11/18/2014 8
What is a DDR? 
11/18/2014 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/18/2014 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/18/2014 11
HISTORY
WURFL Wall 
11/18/2014 13
WURFL Wall since August 2011 
11/18/2014 14
WURFL no longer Open Source 
11/18/2014 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/18/2014 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 
11/18/2014 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/18/2014 19
Metro – DeviceMap for .NET 
11/18/2014 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/18/2014 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/18/2014 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/18/2014 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/18/2014 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/18/2014 26
WURFL Memory Load 
11/18/2014 27
Unreduced DeviceMap Memory Load 
11/18/2014 28
Reduced DeviceMap Memory Load 
11/18/2014 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/18/2014 30
SAMPLES
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%. 
11/18/2014 32
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. 
11/18/2014 33
New Java Client 
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"); 
11/18/2014 34
New Java Client (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 last option is closest to the W3C DDR client. 
11/18/2014 35
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/18/2014 37
Outlook 
• As of November 2014 after releasing W3C DDR 
compliant device data and 
new clients beyond W3C for Java, .NET or 
JavaScript, DeviceMap is ready to graduate from 
the Apache Incubator. 
• You should find it soon under: 
http://devicemap.apache.org 
11/18/2014 38
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/18/2014 39
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/18/2014 40
Links 
• Apache DeviceMap Incubator Site: 
http://incubator.apache.org/devicemap/ 
• DeviceMap Sources and Data: 
http://incubator.apache.org/devicemap/source.html 
• Mailing Lists: 
http://incubator.apache.org/devicemap/mailing-lists.html 
• BrowserMap GitHub Mirror: 
https://github.com/apache/devicemap-browsermap 
11/18/2014 41
Links (2) 
• 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 
Twitter @wernerkeil 
Email wkeil@apache.org 
Project Twitter @DeviceMap 
11/18/2014 42

Weitere ähnliche Inhalte

Was ist angesagt?

V mware white paper virtualizing business-critical applications with confidence
V mware white paper  virtualizing business-critical applications with confidenceV mware white paper  virtualizing business-critical applications with confidence
V mware white paper virtualizing business-critical applications with confidence
ReadWrite
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
Animesh Singh
 
The Container Evolution of a Global Fortune 500 Company with Docker EE
The Container Evolution of a Global Fortune 500 Company with Docker EEThe Container Evolution of a Global Fortune 500 Company with Docker EE
The Container Evolution of a Global Fortune 500 Company with Docker EE
Docker, Inc.
 

Was ist angesagt? (20)

Cloud for agile_sw_projects-final
Cloud for agile_sw_projects-finalCloud for agile_sw_projects-final
Cloud for agile_sw_projects-final
 
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
 
V mware white paper virtualizing business-critical applications with confidence
V mware white paper  virtualizing business-critical applications with confidenceV mware white paper  virtualizing business-critical applications with confidence
V mware white paper virtualizing business-critical applications with confidence
 
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
As a Service: Cloud Foundry on OpenStack - Lessons LearntAs a Service: Cloud Foundry on OpenStack - Lessons Learnt
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
 
OpenCL Overview Japan Virtual Open House Feb 2021
OpenCL Overview Japan Virtual Open House Feb 2021OpenCL Overview Japan Virtual Open House Feb 2021
OpenCL Overview Japan Virtual Open House Feb 2021
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro services
 
Cloud Native PostgreSQL
Cloud Native PostgreSQLCloud Native PostgreSQL
Cloud Native PostgreSQL
 
컨테이너 기술 소개 - Warden, Garden, Docker
컨테이너 기술 소개 - Warden, Garden, Docker컨테이너 기술 소개 - Warden, Garden, Docker
컨테이너 기술 소개 - Warden, Garden, Docker
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
 
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
Cloud Foundry - Second Generation Code (CCNG). Technical Overview Cloud Foundry - Second Generation Code (CCNG). Technical Overview
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
 
Containers and microservices for realists
Containers and microservices for realistsContainers and microservices for realists
Containers and microservices for realists
 
Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture styles
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
 
Cloudfoundry Introduction
Cloudfoundry IntroductionCloudfoundry Introduction
Cloudfoundry Introduction
 
Devops: Enabled Through a Recasting of Operational Roles
Devops: Enabled Through a Recasting of Operational RolesDevops: Enabled Through a Recasting of Operational Roles
Devops: Enabled Through a Recasting of Operational Roles
 
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
 
Webinar: OpenStack Benefits for VMware
Webinar: OpenStack Benefits for VMwareWebinar: OpenStack Benefits for VMware
Webinar: OpenStack Benefits for VMware
 
Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...
Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...
Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...
 
The Container Evolution of a Global Fortune 500 Company with Docker EE
The Container Evolution of a Global Fortune 500 Company with Docker EEThe Container Evolution of a Global Fortune 500 Company with Docker EE
The Container Evolution of a Global Fortune 500 Company with Docker EE
 

Ähnlich wie Apache DeviceMap - ApacheCon Europe 2014

Ähnlich wie Apache DeviceMap - ApacheCon Europe 2014 (20)

OpenDDR
OpenDDROpenDDR
OpenDDR
 
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
 
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
 
Apache DeviceMap - codemotion Rome 2015
Apache DeviceMap - codemotion Rome 2015Apache DeviceMap - codemotion Rome 2015
Apache DeviceMap - codemotion Rome 2015
 
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, ...
 
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
 
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
 
Chapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side TechnologiesChapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side Technologies
 
Cloud Performance Testing with LoadRunner
Cloud Performance Testing with LoadRunnerCloud Performance Testing with LoadRunner
Cloud Performance Testing with LoadRunner
 
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
 
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
 
OFC 2014 Dinesh Dutt
OFC 2014 Dinesh DuttOFC 2014 Dinesh Dutt
OFC 2014 Dinesh Dutt
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 
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 ...
 
Docker Overview - Rise of the Containers
Docker Overview - Rise of the ContainersDocker Overview - Rise of the Containers
Docker Overview - Rise of the Containers
 
How To Reach Your Goals with Postgres Plus Cloud Database
How To Reach Your Goals with Postgres Plus Cloud DatabaseHow To Reach Your Goals with Postgres Plus Cloud Database
How To Reach Your Goals with Postgres Plus Cloud Database
 
Simplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptxSimplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptx
 
Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)
 
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
 

Mehr von Werner Keil

Mehr von Werner Keil (20)

Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21
 
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
 
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
 
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
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Apache DeviceMap - ApacheCon Europe 2014

  • 1. Apache DeviceMap Werner Keil @wernerkeil | wkeil@apache.org
  • 2. Agenda • Introduction • History and Comparison • Project Brief • Tests and Results • Examples and Demo • Outlook • Conclusion 11/18/2014 2
  • 3. Who am I? • Consultant – Coach • Creative Cosmopolitan • Open Source Evangelist • Software Architect • JCP EC Member • DevOps Guy … Twitter @wernerkeil Email wkeil@apache.org 11/18/2014 3
  • 5.
  • 6. What is a DDR? 11/18/2014 6
  • 7. What is a DDR? 11/18/2014 7
  • 8. What is a DDR? 11/18/2014 8
  • 9. What is a DDR? 11/18/2014 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/18/2014 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/18/2014 11
  • 14. WURFL Wall since August 2011 11/18/2014 14
  • 15. WURFL no longer Open Source 11/18/2014 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/18/2014 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 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/18/2014 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/18/2014 19
  • 20. Metro – DeviceMap for .NET 11/18/2014 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/18/2014 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/18/2014 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/18/2014 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/18/2014 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/18/2014 26
  • 27. WURFL Memory Load 11/18/2014 27
  • 28. Unreduced DeviceMap Memory Load 11/18/2014 28
  • 29. Reduced DeviceMap Memory Load 11/18/2014 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/18/2014 30
  • 32. 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%. 11/18/2014 32
  • 33. 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. 11/18/2014 33
  • 34. New Java Client 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"); 11/18/2014 34
  • 35. New Java Client (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 last option is closest to the W3C DDR client. 11/18/2014 35
  • 36. DEMO
  • 37. 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/18/2014 37
  • 38. Outlook • As of November 2014 after releasing W3C DDR compliant device data and new clients beyond W3C for Java, .NET or JavaScript, DeviceMap is ready to graduate from the Apache Incubator. • You should find it soon under: http://devicemap.apache.org 11/18/2014 38
  • 39. 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/18/2014 39
  • 40. 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/18/2014 40
  • 41. Links • Apache DeviceMap Incubator Site: http://incubator.apache.org/devicemap/ • DeviceMap Sources and Data: http://incubator.apache.org/devicemap/source.html • Mailing Lists: http://incubator.apache.org/devicemap/mailing-lists.html • BrowserMap GitHub Mirror: https://github.com/apache/devicemap-browsermap 11/18/2014 41
  • 42. Links (2) • 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 Twitter @wernerkeil Email wkeil@apache.org Project Twitter @DeviceMap 11/18/2014 42