开发公司简介范文大全,青岛seo杭州厂商,手机端做的优秀的网站设计,python做网站用什么软件量身定制的Web内容通常受益于定制#xff0c;以考虑多种因素#xff0c;例如屏幕大小#xff0c;标记语言支持和图像格式支持。 此类信息存储在“设备描述存储库”#xff08;DDR#xff09;中。 WURFL和OpenDDR项目都提供了访问DDR的API#xff0c;以简化并促进适应其交… 量身定制的Web内容通常受益于定制以考虑多种因素例如屏幕大小标记语言支持和图像格式支持。 此类信息存储在“设备描述存储库”DDR中。 WURFL和OpenDDR项目都提供了访问DDR的API以简化并促进适应其交付上下文的Web内容的开发。 WURFL最近将其许可证更改为AGPLAffero GPLv3 。 这就意味着它不再是免费的商业用途。 因此最近开始出现了一些免费的开源替代方案。 OpenDDR就是其中之一。 在本文中我将分享有关OpenDDR Java API与WURFL相比的发现。 向项目添加依赖项 本节介绍如何将WURFL和OpenDDR添加到Maven项目。 伍尔夫 WURFL非常简单因为它在Maven中央存储库中可用。 您要做的就是将对项目的依赖包括在内 dependencygroupIdnet.sourceforge.wurfl/groupIdartifactIdwurfl/artifactIdversion1.2.2/version!-- the last free version --
/dependency 开放DDR 另一方面OpenDDR很难配置。 请按照以下步骤在您的项目中包括OpenDDR 下载OpenDDR-Simple-API zip 。 解压缩它并根据结果文件夹在Eclipse上创建一个新的Java项目。 使用Eclipse File Export...导出OpenDDR-Simple-API JAR仅包括src文件夹中的内容不包括oddr.properties文件。 将lib文件夹中的结果JAR和DDR-Simple-API.jar安装到本地Maven存储库中 mvn install:install-file -DgroupIdorg.w3c.ddr.simple -DartifactIdDDR-Simple-API -Dversion2008-03-30 -Dpackagingjar -DfileDDR-Simple-API.jar -DgeneratePomtrue -DcreateChecksumtrue
mvn install:install-file -DgroupIdorg.openddr.simpleapi.oddr -DartifactIdOpenDDR -Dversion1.0.0.6 -Dpackagingjar -DfileOpenDDR-1.0.0.6.jar -DgeneratePomtrue -DcreateChecksumtrue 将依赖项添加到您的项目pom.xml文件中 dependencygroupIdorg.w3c.ddr.simple/groupIdartifactIdDDR-Simple-API/artifactIdversion2008-03-30/version
/dependency
dependencygroupIdorg.openddr.simpleapi.oddr/groupIdartifactIdOpenDDR/artifactIdversion1.0.0.6/version
/dependency
dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-jexl/artifactIdversion2.1.1/version
/dependency
dependencygroupIdcommons-lang/groupIdartifactIdcommons-lang/artifactIdversion2.6/version
/dependency 加载存储库/功能文件 本节介绍如何加载WURFL和OpenDDR存储库文件并将其导入项目中。 伍尔夫 将wurfl-2.1.1.xml.gz文件最后一个免费版本复制到您的项目src/main/resources文件夹中然后使用以下命令导入 WURFLHolder wurflHolder new CustomWURFLHolder(getClass().getResource(/wurfl-2.1.1.xml.gz).toString()); 开放DDR 将oddr.properties -Simple-API src文件夹中的oddr.properties和OpenDDR-Simple-API resources文件夹中的所有文件复制到项目src/main/resources文件夹中。 使用以下命令导入它们 Service identificationService null;
try {Properties initializationProperties new Properties();initializationProperties.load(getClass().getResourceAsStream(/oddr.properties));identificationService ServiceFactory.newService(org.openddr.simpleapi.oddr.ODDRService,initializationProperties.getProperty(ODDRService.ODDR_VOCABULARY_IRI),initializationProperties);
} catch (IOException e) {LOGGER.error(e.getMessage(), e);
} catch (InitializationException e) {LOGGER.error(e.getMessage(), e);
} catch (NameException e) {LOGGER.error(e.getMessage(), e);
} 使用API 本节介绍如何使用WURFL和OpenDDR Java API访问设备功能。 伍尔夫 WURFL API非常易于使用并且具有一个后备层次结构可为尚未在其存储库文件中的设备提供推断功能这是其一大优势。 Device device wurflHolder.getWURFLManager().getDeviceForRequest(getContext().getRequest());
int resolutionWidth Integer.valueOf(device.getCapability(resolution_width));
int resolutionHeight Integer.valueOf(device.getCapability(resolution_height)); 当没有可用数据时无需针对null值验证device.getCapability(resolution_width) 。 开放DDR OpenDDR恰恰相反。 非常麻烦并且没有回退层次结构这迫使开发人员验证每个属性值。 PropertyRef displayWidthRef;
PropertyRef displayHeightRef;try {displayWidthRef identificationService.newPropertyRef(displayWidth);displayHeightRef identificationService.newPropertyRef(displayHeight);
} catch (NameException ex) {throw new RuntimeException(ex);
}PropertyRef[] propertyRefs new PropertyRef[] { displayWidthRef, displayHeightRef };
Evidence e new ODDRHTTPEvidence();
e.put(User-Agent, getContext().getRequest().getHeader(User-Agent));int maxImageWidth 320; // A default value
int maxImageHeight 480; // A default value
try {PropertyValues propertyValues identificationService.getPropertyValues(e, propertyRefs);PropertyValue displayWidth propertyValues.getValue(displayWidthRef);PropertyValue displayHeight propertyValues.getValue(displayHeightRef);if (displayWidth.exists()) {maxImageWidth displayWidth.getInteger();}if (displayHeight.exists()) {maxImageHeight displayHeight.getInteger();}
} catch (Exception ex) {throw new RuntimeException(ex);
} 结果 下表显示了针对使用WURFL和OpenDDR进行服务器端图像适配的应用程序运行的测试结果。 这些测试是在真实设备上执行的页面用作XHTML BASIC与XHTML MP相同。 平台 设备 属性 WURFL max_image_width 1 / max_image_height WURFL resolution_width / resolution_height OpenDDR显示displayWidth /显示displayHeight 不适用 Firefox桌面 宽度 650 640 不支持 高度 600 480 不支持 的iOS iPhone 4S 宽度 320 320 320 高度 480 480 480 安卓系统 HTC One V 宽度 320 540 不支持 高度 400 960 不支持 HTC英雄 宽度 300 320 320 高度 460 480 480 Windows Phone 7.5 诺基亚Lumia 710 宽度 600 640 480 高度 600 480 800 黑莓 黑莓Bold 9900 宽度 228 480 640 高度 280 640 480 塞班S60 诺基亚E52Webkit 宽度 234 240 240 高度 280 320 320 诺基亚E52Opera Mobile 宽度 240 240 不支持 高度 280 320 不支持 Windows Mobile 6.1 HTC Touch HD T8282 宽度 440 480 480 高度 700 800 800 1 max_image_width功能非常方便 可见可用图像的宽度以像素为单位。 此功能指的是在“移动模式”下使用的图像即当页面用作XHTML MP时或者使用诸如“视口”“手持式”“移动优化”之类的元标记来禁用“网页渲染”和强制移动用户体验。 注意颜色9f9突出显示了效果更好的结果。 利弊 优点 缺点 伍尔夫 设备层次结构很可能会正确推断出功能的值即使尚未识别该设备也是如此。 很多很多的功能 。 易于配置。 清洁器API。 定价与许可 。 开放DDR 免费使用甚至用于商业用途。 不断增长的社区。 功能有限。 OpenDDR似乎仅限于W3C DDR核心词汇表 。 相关文章 Eclipse RCP到手机 Java EE 6测试第二部分– Arquillian和ShrinkWrap简介 Java EE 6测试第I部分– EJB 3.1可嵌入API 条带框架XSS拦截器 Maven 2 Cobertura插件–更新 上一篇文章Java EE 6测试第二部分– Arquillian和ShrinkWrap简介 参考 比较我们的JCG合作伙伴 Samuel Santos的设备描述存储库 位于Samaxes博客上。 翻译自: https://www.javacodegeeks.com/2012/06/comparing-openddr-to-wurfl.html