NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:149307
用户头像

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

关注

评论

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

VMware Fusion Pro 13密钥 VM虚拟机安装教程

Rose

VMware Fusion Pro 13 VM虚拟机破解版 Mac双系统

专业级音频制作软件:Logic Pro X中文激活版

真大的脸盆

Mac 音频制作 Mac 软件 音频处理

Mac大扫除!这些App帮你迅速清理不需要的内容,释放宝贵空间

Rose

Mac清理软件 电脑运行缓慢 Mac系统清了 苹果电脑卡机

比尔·盖茨最新AI演讲:人工智能时代已经开启

Chares

人工智能 机器学习 微软 ChatGPT

电商秒杀系统

Ryan

Spring事务失效场景

TaurusCode

Spring Boot 事务 java基础 事务失效 事务回滚

IT 数字化转型

L3C老司机

数字化转型 产品研发 工程效能 项目交付 胜任力模型

WordPress 插件 g5plus 修改属性

HoneyMoose

Jetpack-Compose 学习笔记(三)—— Compose 的自定义“View”

修之竹

android Compose JetPack android jetpack

Navicat Premium mac用于增强数据库管理系统的优势是什么?

Rose

数据库 Navicat Premium下载 Navicat Premium中文版 Navicat Premium破解版 Navicat Premium15

WordPress 网站 Error Establishing a Database Connection(建立数据库连接时出错)

HoneyMoose

CnosDB 2.0 Arrow Flight SQL使用指北

CnosDB

开源 时序数据库 CnosDB Arrow Flight SQL

功能全面的数据库软件:DBeaverUltimate 中文旗舰版

真大的脸盆

Mac 数据库管理 Mac 软件 管理数据库 数据库工具

ChatGPT研究(一)——AI平民化的里程碑

Chares

人工智能 机器学习 AIGC ChatGPT

5年MacBook用户最常用的Mac软件推荐

Rose

苹果 mac软件下载

IntelliJ IDEA 2023主要更新 支持M1/intel/win

Rose

IntelliJ IDEA 2023下载 IntelliJ IDEA 2023破解 IntelliJ IDEA 2023最新

Linux 查看 SELinux 的状态

HoneyMoose

《零代码应用实例》,从案例到使用

明道云

IntelliJ IDEA 2023.1 版本添加了包中类的列表功能

HoneyMoose

Spring 项目运行提示错误 Not a managed type

HoneyMoose

Jenkins 修改启动的端口

HoneyMoose

Sketch创建自定义快捷的方法 Sketch中文最新版

Rose

sketch Mac Sketch快捷键 Sketch下载

浙江杭州|Hi TECH 2023 年全球青年创业大赛

科兴未来News

数字经济 杭州 新能源 生物医药 #双创赛事#

ChatGPT4.0,基础生产力的变革!

老张

人工智能 ChatGPT ChatGPT4

好用的无损播放器:Audirvana v3.5.50中文激活版

真大的脸盆

Mac 软件 音乐播放 无损播放器

Linux 开启或关闭 SELinux

HoneyMoose

强大的绘图软件:OmniGraffle中文激活版

真大的脸盆

Mac Mac 软件 绘图软件 绘图工具

秒懂算法 | 链表

TiAmo

算法 链表 C++ STL 静态链表 动态链表

极客时间运维进阶训练营第七周作业

忙着长大#

极客时间

C++面试必备:常见C++面试题汇总及详细解析

小万哥

面试 软件开发 C/C++ 常见 汇总

发声全球边缘计算大会,火山引擎荣获“最佳边缘云服务商”称号

火山引擎边缘云

火山引擎 边缘云 火山引擎边缘计算

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