采访嵌入式 Java 首席架构师 Greg Bollella 重新认识嵌入式

   
作者:Janice J. Heiss    
2011 年 8 月发布
Greg Bollella
Greg Bollella
 

自从 Java 首次转向嵌入领域以来,Greg Bollella 始终是嵌入式 Java 和实时 Java 领域的领导者。二十世纪九十年代,Greg Bollella 供职于 IBM 期间领导了 Java Community Process (JCP) 下属的实时 Java 专家组的工作。他于 2000 年加盟了备受尊敬的 Sun Microsystems 实验室。他在将 Java 实时规范 (RTSJ) 用于物理系统(从火箭到发电厂再到汽车)控制方面做出了积极探索,从而成为 Sun 的著名工程师。

现在,作为 Oracle 嵌入式 Java 的首席架构师,他正继续努力使 Java 在快速发展的嵌入式领域内有更大的作为。他拥有北卡罗来纳大学教堂山分校的博士学位。

我们就 Java 和嵌入领域的最新进展对 Greg Bollella 博士进行了采访。

嵌入领域的定义

“我用‘嵌入式领域’指代所有这样的设备:它们具备通用处理器、操作系统以及软件执行环境,但就算外行也不会把它们当成计算机。”

Greg Bollella
Oracle 嵌入式 Java 首席架构师
问: 您如何定义嵌入式领域?
 

答:我用“嵌入式领域”指代所有这样的设备:它们具备通用处理器、操作系统以及软件执行环境,但就算外行也不会把它们当成计算机。这包括从打印机、电冰箱、汽车到 ATM 等各种设备。汽车制造商现在声称,从整体来看,一辆新车 70% 的感知价值体现在软件和电子方面。这是一个惊人的见解!想想看,车轮、轮胎、尾翼、内饰材料这些东西不再能够让自己的汽车与众不同,占据竞争优势。汽车公司正日益关注电子和软件方面,以此来提高其产品的价值。除电子设备和软件外,汽车的其余部分十分相似 — 都有四个轮子,都配有发动机,现在甚至可能用电动机代替汽油机。这些部分都非常类似。

我的工作就是以全新的视角探讨如何为嵌入式开发人员提供支持,如何在嵌入式开发人员领域创建一个生态系统,从而使人们认为 Java 适于实现嵌入式设备上的软件。目前,我们将 Java 部署于各种嵌入式设备中,包括电子阅读器、ATM、路由器、多功能打印机、VOIP 企业电话、POS 系统、医疗设备、工业控制器以及智能仪表。甚至还包括熟食店称量器和电子停车计时器系统。

尽管如此,在将 Java 用于嵌入式这一方面,我们也只是初涉皮毛。遗憾的是,我们了解到有许多开发人员,他们不会自动地考虑使用 Java 进行下一个嵌入式项目的开发。我们希望改变这一现状,因为对嵌入式开发人员来说,Java 有许多有价值的特性,包括多核支持、安全性、多平台支持和联网功能。

为开拓新的项目,我们希望创建一个 VM 和一个库集以及一些工具,从而促使嵌入式开发人员使用 Java 开发自己的下个项目。这就是我的使命。

问: 您打算如何实现此构想?

答: 这需要坚持不懈。我们必须以事实向人们证明 Java 是正确的答案。我们希望消除 Java 平台内的人为划分,因为嵌入式设备的功能越来越多,我们可能希望,举例来说,在嵌入式设备上承载 Web 服务器和数据库。如今,用户希望拥有更多功能,因此我们可能需要的不仅仅是 Java 平台中以前为手机构建的某个功能子集,而是需要 Java 平台所有组成部分的功能。

最近,我们发布了 Oracle Java ME Embedded Client 1.0。与以往 ME 的发布方式相比,该版本首次出现重大不同,我们正在针对特定操作系统/处理器架构发布二进制运行时。现在,嵌入式开发人员只需几分钟就可以在典型的嵌入式硬件上下载、安装并开始创建 Java 程序。这个对嵌入式 Java 开发工具集和运行时的补充令我们十分兴奋。

快速发展的嵌入式领域

问: 请您为我们介绍一下嵌入式领域的发展状况。

答: 嵌入式领域的发展日新月异。代码库以指数级扩展;代码越来越复杂,提供更强的功能和更多的多核功能。与 Web 和 OEM 总部的联系更加广泛,当然,材料成本至关重要。

“现在,嵌入式开发人员只需几分钟就可以在典型的嵌入式硬件上下载、安装并开始创建 Java 程序。”

Greg Bollella
Oracle 嵌入式 Java 首席架构师

正如我前面所说,如今硬件已不再是重点关注的部分,不仅汽车是这样,一切均是如此。我们清楚如何制造打印机、立体声音响、照相机、电视机及 DVD、交通信号控制器、飞机、洗衣机、电冰箱,这些都不成问题。制造商目前需要凭借软件上的创新进行功能上的竞争,因此需要更大更复杂的代码库。传统的嵌入式代码很简单,可能只需要 200 行的汇编语言对硬件进行一些基本的操控。而现在需要连接到互联网和总部进行维护。需要记录有关设备行为的信息,这样制造商才能对系统提供支持并利用某些信息实现创收。因此,代码越来越复杂,要求的功能也越来越多,这样制造商才能使自己的产品与众不同。制造商告诉他们的嵌入式开发团队“我们需要六个按钮,因为我们的竞争对手只有四个按钮。”并且半开玩笑地说“六个按钮的洗衣机一定比四个按钮的好。”

多核功能是正在进入嵌入式领域的一个重大新功能 — 这是前所未有的,制造商不知道如何面对这一功能。嵌入式开发人员对多线程应用程序知之甚少。多核对他们来说也是全新的,因此他们缺乏应对这一功能的工具和语言支持。仍在使用的一些早期 C 函数库甚至不是多线程安全的,不能用于多线程环境。因此,出现多核后,嵌入式软件开发将发生巨变。当然,Java 从一开始就具有卓越的多核支持,我们将把这种支持带给嵌入式开发人员。

汽车制造商希望减少产品中处理器的数量。为此,特定处理器上的代码库就必须更加复杂,因为它必须完成以前六个处理器使用简单代码完成的工作。现在,在汽车中,所有代码都位于一个连接到网络的大处理器中。嵌入式系统的所有这些发展趋势都导致对软件开发环境的新要求,要求更高级、更抽象。这就是我们所处的现状。

如今,大多数设备都对其内部发生的情况进行测量,以保持设备正常运行。但是,这些测量仅在内部由控制算法使用以保持设备正常工作。我们以电冰箱为例,冰箱有许多机械功能,冰箱中有一个处理器。它必须对几个储藏室的温度进行调节 — 目前,这一操作还是机电方式的,但正在向制冷系统数字控制的方向发展。系统测量储藏室的温度,还测量开门的时间以及开门的次数。系统测量压缩机中氟利昂的内部压力,还测量压缩机工作时和不工作时的温度。所有这些都用于管理系统和代码逻辑。

系统定期依据所有这些信息作出决策,然后返回到测量模式。如果对所有这些数据进行收集和存储,并移动到制造商 IT 端的大型数据库上,就可以在多方面使这些数据发挥作用。这对于制造商对其设备进行统计分析非常有用,他们分析设备在实际应用中的表现、中断的原因、维修成本,还可以确定趋势,以便改善设计从而降低所部署设备的故障率。

这些信息还可以为客户带来经济效益。最简单的例子就是汽车。如果来自汽车上所有处理器的全部信息都记录在本地数据库中,然后上传给制造商,当您进入您的家庭 Wi-Fi 范围后,制造商可以为您提供爱车的详细报告。该报告会告诉您机油液位的变化,还会提供有关其他问题的信息。

如果您需要了解机油的变化,制造商可以给您发送邮件。如果汽车有合适的内部传感器,制造商还可以说明机油的情况。是确实需要更换机油,还是可以延长机油的使用时间?

如果您是在高速公路上行驶,机油的使用时间将比在城市道路上行驶要长。这是发动机行为的作用结果。因此,如果三个月中您大部分时间都在高速公路上行驶,可能四到五个月都无需更换机油。如果您频繁地起步、停车,或者环境污染严重,灰尘会污染您的机油,您最好每两个月更换一次机油。如果有合适的传感器、监视和分析手段,可以向客户发送电子邮件,通知客户需要采取哪些维护,而不是让他们按照标准时间周期进行维护(这种标准时间周期可能适用于某款特定汽车,也可能不适用于该特定汽车),这样可以使客户获得经济效益。所有这些都非常适合当今的现状,也就是说,作为社会的一分子,我们都需要最好地利用燃料和能源。我们设备上更复杂更大型的智能软件程序使我们可以在尽量节省燃料和能源的情况下,还能获得满意的功能和性能。

这可以节约机油 — 您可能不必经常更换,有其他人为您跟踪机油的使用情况。收集工作数据并将它们发回 OEM 用于分析及实现后续的经济效益,这种功能非常具有价值。

新嵌入式领域中的 Java

问: Java 如何适应这种形势?

答: 前边谈论了许多有关汽车的例子,现在我们来推广一下。您需要一个相当复杂的软件架构才能将这些设备集成到联网的环境中。一切从头开始是非常困难的。Oracle 可以提供客户端软件、设备中软件,以及后端服务器和中间件。结合设备制造商提供的非常少量的工程设计,这些软件就能使制造商收集设备上的工作数据、对数据添加时间标记、将数据保存在本地数据库、使这些数据自动与后台数据库同步,从而可用于分析及为设备所有者提供新的服务。

“我们认为 Java 是正确的答案,是语言抽象方面的下一步。Java 使得构建大型复杂软件构件更加容易。”

Greg Bollella
Oracle 嵌入式 Java 首席架构师

问: 沿着这些脉络 Oracle 正在做哪些努力?

答: 在 Oracle,已经有称为 Oracle Berkeley Database (BDB) 的产品。它是一个嵌入式数据库,带有一个瘦客户端,您针对 BDB 编写的一切代码都是基于该客户端的,因此,只要系统位于范围之内,瘦客户端能够连接到母数据库,就可以将数据从客户端复制到母数据库。开发人员不必考虑这些 — 他们只需安装 BDB 和瘦客户端,这些都包含在一个程序包中。

控制循环执行时,将生成许多工作数据,这些数据可以保存在 BDB 的一个对象中,而后反映到制造商总部。BDB 作为一个 Java 程序运行在 Java 上。我们与其他嵌入式领域的区别之一就是,我们有一个专用设计的 Java VM 来为您编写应用程序,还有 BDB 和客户端。这是一个程序包,它使得工作数据的收集和传输对嵌入式开发人员来说几乎是轻而易举的。

要做到这点,真的很简单。那么,为什么选择 Java 呢?嵌入式开发人员又为什么选择 Oracle 呢?用于通用环境的中间件数据移动基础架构已经存在,我们正在推动这个大世界中一些小工具,从而使其可以在这些嵌入式客户端上运行。

问: 何时能够实现这一目标?

答: 现在,我们已经有一些嵌入式 Java 产品,我们正在与 BDB 人员探讨将 BDB 与嵌入式 Java 打包在一起使开发人员更方便地利用其功能。我们拥有这些软件,如今我们可以为客户创建这些程序包。它目前还不是一个产品,但所需的软件都已存在。嵌入式软件开发人员正在冲破其开发工具的限制,提高自己的开发能力。我们认为 Java 是正确的答案,是语言抽象方面的下一步。Java 使得构建大型复杂软件构件更加容易。

面向开发人员的行动呼吁

问: 目前开发人员需要采取什么行动?有什么呼吁吗?

答: 我们呼吁开发人员下载 Oracle 的嵌入式 Java 产品,获取一个受支持的嵌入式硬件参考平台,例如 SheevaPlug,然后编写自己的首个 Java 程序。

 
另请参见

Java Embedded 概览
Java Embedded 下载
网播:Java SE Embedded 使开发更加轻松
Oracle Java ME Embedded Client 1.0
博客:非官方的 Java SE Embedded SDK
Java 热点新闻随身播 3:Greg Bollella — 嵌入式 Java 首席架构师
利用 Java 实时规范 (RTSJ) 进行编程:与著名工程师 Greg Bollella 对话
Oracle Berkeley DB Java 版
Beagle Embedded Starter Kit
博客:Java SE for Embedded:多核及其他