2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Google Android SDK 舍弃 Java ME,支持 Java Lite 和 Apache Harmony

  • 2007-11-14
  • 本文字数:1772 字

    阅读完需:约 6 分钟

今天 Google 发布了 Android SDK 。 它是在 Open Handset Alliance (开放手机联盟)宣布后不久发布的。Sun 公司 CEO Jonathan Schwartz高度称赞了 OHA 以及它对 Java 的支持。然而,直到今天我们仍旧不是很了解 Android 中关于 Java 的一些细节。

Android 使用 Linux2.6 作为硬件抽象层的基础,该底层系统提供了驱动支持、内存管理和网络支持等功能。在该抽象层之上是一套用 C/C++ 编写的本地库,该库提供了如下一些特性:OpenGL、字体、多媒体编解码器、SQL Lite 和用于浏览器渲染的 Web 工具集。其中比较有趣的地方就来自于该抽象层的上一层和 Dalvik 虚拟机。

Google 没有提供一个 Java SE 或 Java ME 的完整版本,而是另行其道。首先,Google提供了一套Java 核心包的有限子集。该子集包含了平时使用比较多的包,例如:java.nio、java.lang 和java.util。除了Android 的类库外,还使用了一些开源项目,其中包含Apache 的HttpClient。然而,JME 类和传统意义上的Java UI 包(Swing 和AWT)并没有出现。实际上这种方式正是Google 在另一个项目 GWT 所采取的模式,GWT 使用 Java 作为开发语言,但是并不是说 JDK 的所有特性它都支持。

Android 使用了一个定制的虚拟机来运行应用程序,这些应用程序是用它所支持的 Java 语言子集来编写的:

每个 Android 应用都运行在它自己的进程里面,使用它自己的 Dalvik 虚拟机实例。Dalvik 被设计成为可以在一个设备中有效运行多个虚拟机。Dalvik 虚拟机执行 Dalvik 格式(.dex)的文件,该格式对于有限内存的情况做了优化。该虚拟机是基于寄存器的,并且运行由 Java 编译器(已经被内嵌的“dx”工具转换为.dex 格式)编译成 class 文件。Dalvik 虚拟机依赖于 Linux 内核来完成一些底层的功能,例如:线程和底层的内存管理。

Dalvik 已经对在有限的电池和 CPU 的情况下移动设备的运行做了优化。Apache V.P.,JCP 的 Geir Magnusson 指出 Dalvik 使用了 Apache 的 Harmony 类库。Android SDK 采用的是 Apache 软件许可。Ars Technica详细比较了该许可和GPLv2 许可之间的差别。

上面的图片展示了Android 栈示意图。蓝色部分是用Android 的Java 子集来编写的。这包含了应用框架服务,例如资源管理和窗口。Android Phone 的核心部分、Browser 和Contacts 应用也是使用Java 来编写的,并且运行在Dalvik 虚拟机下。

Android SDK 目前支持 Windows XP 及之后的版本、OS X10.4.8+ 和 Linux,同时需要 JDK5 或 6。虽然 Eclipse 并不是必须的,仍有一个 Eclipse3.2+ 的插件随着调试工具和模拟工具一起被提供。

先前一些开发者对该 SDK 的评论是好坏参半。一些人认为不应该使用 Java lite:

……我认为这是令人失望的。没有与任何一个 Java 组织结盟是一个让人感到可惜的设计抉择。在我看来,Android 与现存的所有东西都是不兼容的,然而这种设计毫无必要。除此之外,Android 重复了很多 Java、J2ME 和很多开源项目的现有功能。我相信每种情况 Android 都会有自己的考虑,但是结果却是重复发明轮子。总的来说,我怀疑与现存的东西相比,Android 的 APIs 是否更快、更灵活、更易用……

Ryan Block 从更一般的角度提出了对 Java 的质疑:

Android 采用 Java 作为应用层环境,对此感到失望的肯定不止我一个人。……Android 已经拥有了比一般支持 Java 设备更优化的框架,一个移动多任务的 Java 虚拟机应用环境肯定不如操作系统的本地代码运行效率高。这一点已经可以在演示视频里面看到了,视频中一些挥动、轻点、轻触的手势比起 iPhone / iPod Touch 要笨拙得多,视觉上也没那么炫……

其他人比如 Ed Burnette 认为 Android 这样做是对的:

……对于开发者来说这确实是一个好消息,因为我们不必再为了不同的架构去重新编译程序,例如编译一个 ARM 版本,再去编译一个 x86 版本。这对于厂商来说也是一个好消息,因为他们在手机硬件设备的使用上拥有了更大的灵活性。他们可以采用新的处理器而不用担心影响现有的应用。……

查看英文原文: Google’s Android SDK Bypasses Java ME in Favor of Java Lite and Apache Harmony


译者简介:张龙,同济大学软件工程硕士,现就职于理光软件研究所。主要从事文档工作流和办公自动化解决方案的研发工作。热衷于 Java 轻量级框架的研究,对敏捷方法很感兴趣。曾有若干年的 J2EE 培训讲师经历。参与 InfoQ 中文站内容建设,请邮件至 china-editorial@infoq.com

2007-11-14 23:1410301
用户头像

发布了 88 篇内容, 共 272.5 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

BeeWorks 协同办公能力:局域网内企业级协作的全场景重构

BeeWorks

即时通讯 IM 私有化部署

出版社题库系统的开发

北京木奇移动技术有限公司

题库系统 软件外包公司 出版社

和鲸科技亮相 2025 河南省人工智能大会,共绘“气象+AI”新图景

ModelWhale

人工智能 科学智能 河南省人工智能大会

华为开发者空间 - 自主编程之Cline×DeepSeek的智能融合探索

华为云开发者联盟

人工智能 华为云ModelArts 华为开发者空间

HarmonyOS应用闪屏问题性能优化三

李洋-蛟龙腾飞

IM即时通讯软件,构建企业局域网内安全协作

BeeWorks

即时通讯IM 私有化部署

企业im,为企业设计的私有化即时通讯工具

BeeWorks

即时通讯 IM 私有化部署

什么是低代码?2025年低代码开发平台发展现状及标准化研究

优秀

低代码 低代码开发平台

HarmonyOS应用闪屏问题性能优化一

李洋-蛟龙腾飞

618特惠 | 全场75折、免费领500MB动态流量,更多福利叠加、零门槛领取!速来!

kookeey代理严选

静态代理 代理IP 跨境电商 动态代理IP 618特惠

TikTok直播没人看?被限流了怎么解决?

Ogcloud

直播专线 tiktok直播 tiktok直播专线 tiktok直播网络 tiktok直播加速

IPLC/CN2/BGP/CIA与普通网络线路差异对比

Ogcloud

BGP 企业组网 企业网络 IPLC 国际IPLC专线

融云上线大模型 API 服务,20 万 Token 免费送

融云 RongCloud

《长安的荔枝》中隐藏的“算法思维”

博文视点Broadview

AI 技术在出版社信息化中的应用

北京木奇移动技术有限公司

软件外包公司 AI技术应用 出版社

融云大模型 API 服务上线,专注业务创新,底层交给融云

融云 RongCloud

vivo Pulsar万亿级消息处理实践(1)-数据发送原理解析和性能调优

vivo互联网技术

Java 大数据 后端 服务器 消息队列

为什么架构师都在偷偷练系统思维?

秃头小帅oi

大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI

武子康

大数据 hadoop mapreduce hive

大数据-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看

武子康

大数据 hadoop mapreduce hive

从互联网女皇 AI 趋势报告,看大模型 API 服务

融云 RongCloud

通义灵码你问我答:看看 5 月上线了哪些新功能?

阿里云云效

BOE(京东方)控股子公司武汉京东方回购少数股东股权 归母权益进一步提升

爱极客侠

软件测试 | 使用 Playwright 实现滑动验证码

测试人

软件测试

还在用 Jmeter 做压测?试试 oha 吧!你会毫不犹豫的爱上它!

左诗右码

网络安全自动化:最需要自动化的 12 个关键功能

天翼云开发者社区

安全

CAD图纸如何批量打印?详细教程来了

在路上

cad看图 cad软件 CAD看图王 CAD、

CAD面积如何快速测量?详细步骤来了

在路上

cad cad看图 CAD看图王

从互联网女皇 AI 趋势报告,看融云大模型 API 服务

融云 RongCloud

AI API、AI 聊天助手,融云两大 AI 服务助力应用智能化转型

融云 RongCloud

HarmonyOS应用闪屏问题性能优化二

李洋-蛟龙腾飞

Google Android SDK舍弃Java ME,支持Java Lite和Apache Harmony_Java_Scott Delap_InfoQ精选文章