Java SE Embedded 8 与 Java ME CDC 比较

Java SE Embedded 8 是 Java SE 技术的新版本,首次包含了紧凑 Profile 特性。3 个新的紧凑 Profile 所代表的 3 个小的 Java SE 运行时是完整 Java SE 8 API 规范的兼容子集。第一个紧凑 Profile compact1 是 Java ME CDC 与 Java SE Embedded 融合的基础。这个 compact1 profile 是一个类似于 Java ME CDC 和 Foundation Profile 的标准,包含传统 CDC 嵌入式设备中使用的典型无头可选软件包。这个 compact1 profile 支持将 CDC 无头应用迁移至 Java SE Embedded 8,同时满足 CDC 嵌入式设备对低占用空间的要求。

比较

为了确保 Java SE Embedded 8 compact1 与 Java ME CDC 之间的兼容性,选择了 Java SE 8 最小的一组 API 核心库软件包,而不用省略类。添加了日志记录和 SSL 软件包,因为大多数嵌入式设备都需要它们。从 Java SE 8 API 中选择最小的一组核心库软件包,并仔细考虑大小约束,可提供与 Java ME CDC和 Foundation Profile 中的核心库相同的功能级别。

在此表中,您可以看到 Java SE Embedded 8 的 compact1 配置文件的软件包级别描述

compact1 核心 (java.lang.*) 安全性 序列化
   网络 引用对象 正则表达式
   日期和时间 输入/输出 集合
   日志记录 并发性 反射
   JAR ZIP 版本控制
   国际化 JNDI 覆盖机制
   扩展机制 脚本编写   

图 1 compact1 软件包描述

可以看到,上述软件包描述所对应的一组功能是嵌入式设备上的无头应用经常调用的一组库,其调用方式与 Java ME CDC 和 Foundation Profile 专家组所选择的 API 类似。大多数嵌入式应用都可以通过 Java SE 8 的最高级核心库特性来运行这组功能。

将 compact1 作为紧凑 Profile 而不是作为 Java ME 堆栈的 CDC 规范提供的好处包括:

  • 比 Java SE 更小的 Java 环境通常所需的计算资源也较少,因此开辟了一个全新的设备领域,而这在之前被认为对于 Java SE 来说太小了。
  • 更小的 Java SE 运行时环境,针对性能和启动时间进行了更好的优化。
  • 消除未使用的 Java SE 服务器和桌面代码,从安全的角度来说,这始终是一个好主意。
  • 支持将运行时与每个 Java SE 应用捆绑在一起。
  • 缩短下载捆绑的 Java SE 应用的时间。
  
  
  

compact1 运行时的典型大小约为 11MB。因此,只需经过优化的 Java SE Embedded 7 无头版本的原始占用空间的三分之一,就可以得到与 Java ME CDC 一样功能非常强大的运行时环境。典型 Java ME CDC 程序员应发现 compact1 中的特定软件包是他们所熟悉的,而且可能乐于见到其中增加了 Annotation、Concurrent、Pref、Script、Time 和 NIO,这是 CDC 和 Foundation Profile 规范所不具备的。
  

  


图 2 compact1 软件包名称

其他新增的 Java SE 8 Embedded 特性未包含在 Java ME CDC 中

还有其他一些值得一提的 Java SE Embedded 新特性,是在 CDC 之后 Java SE 体系中的新进展。其中包括 Hotspot VM 的新特性,Hotspot VM 这个 Java 虚拟机针对嵌入式设备进行了优化和调优,同时还提供 Java SE 技术的功能: 

  • 客户端 VM:针对多核 CPU 和并发支持进行了并行化
  • 分代垃圾回收
  • 分层编译

新的安全特性(不在 CDC 中):

而且,还有以下新安全特性,优于过去 CDC 所提供的安全特性:
  • 更现代化、更安全的新加密算法:TLS 1.2、Elliptical Curve、RSA 等
  • 新的 JCE 框架
  • 新的、更快的硬件加速加密支持 (PKCS11)
  • 新的和更新的一组根证书 (cacert)

总结

总的来说,采用初始 compact1 配置文件的 Java SE Embedded 8 Compact Profile 能够提供与传统 Java ME CDC 及 Foundation Profile 体系的兼容性,同时还可以发挥 Java SE 8 新特性和功能的优势,包括新的 Java SE 8 语言特性、新的嵌入式核心库功能、新的高级安全特性以及新的小型虚拟机。