10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

开发者眼中的 Android 手机平台

  • 2008-05-16
  • 本文字数:3565 字

    阅读完需:约 12 分钟

大家都知道,Google 推出了他的手机平台——Android,Google 做什么都会引来无数人的眼球,并总能创造出非凡的奇迹。相信这次他推出这个手机平台,应该会吸引到无数开发人员的眼球,甚至会吸引很多有识之士转向手机开发。因为相对于现有的其他平台,手机可是一块尚未充分开拓的新大陆,Android 又是新中之新,机会要多很多。似乎是为了加速这个过程,Google 还举办了“Android 开发者大赛”,奖金总额高达 1000 万美元。

在这次 Beijing Open Party 上,我们有幸认识了一位经验丰富的技术专家和两位 db4o (注:著名对象数据库,主要应用在嵌入式设备平台)的核心开发人员。InfoQ 中文站特邀编辑仝健对三位进行了采访,请他们从开发者角度谈一下对 Android 的认识和感觉。


三位受访者的履历:

屠程远(以下简称屠):94 年毕业,一直从事软件编程工作。掌握汇编、C、C++、Delphi、.NET、Java 等语言及架构,主要从事操作系统底层和软件框架的编程工作。 rcpandroid 项目owner。

张黄瞩(以下简称张):自由职业者, Apache Harmony 的 committer, db4o 核心开发人员, P-Unit 项目作者,熟悉 java 语言,应用程序架构设计,测试驱动开发,以及增量重构代码。

杨普(以下简称杨): Apahce Harmony PMC(Project Management Committee) 成员, committer,主要兴趣是编程语言,敏捷方法,开源软件和社区。


InfoQ 中文站: 我们知道,Android 是基于 Java 的,那么目前它支不支持其他语言呢?

:目前 Android SDK 只支持 Java。

:其实我们不能说 Android 是基于 java 的。对于开发者而言,Android 支持使用 java 语言语法编程,注意,不是支持 Java,而是 Java 语言语法,因为 Android 支持的 Java 语法类库仅仅是 J2SE 5 的子集,并无通过任何 java 标准认证。Android 将代码编译为 Dalvik 虚拟机字节码来运行。目前 Android 官方仅支持 java 编程语法。

:是的,Java 是 Sun 的注册商标,只有通过了相关规范的兼容性测试才能叫做 Java,Android 的 Dalvik 虚拟机和相关类库也不承诺遵守任何 Java 规范,有关这个问题,Apache Board 的成员,MIT 的 stefano mazzocchi 有一篇非常精彩的 Blog: Dalvik: how Google routed around Sun’s IP-based licensing restrictions on Java ME

InfoQ 中文站:那么,对 Java 语法编程的程序员而言,最大 Java 开发群体是 J2EE 程序员,对于一个想转向移动平台开发的 J2EE 程序员来说,转向 Android 平台是不是一个好选择?又会有哪些困难?

:我所编程接触过的移动平台支持 Java 的有 J2ME、 BlackBerry、Android。J2ME 的功能实在太有限,仅支持 J2SE 很小的一个子集;Android 所支持 J2SE 的子集已经很充分了,在 Java 编程方面和 J2SE 相比几乎没什么限制。很多开源的 Java 类库仅仅需要很小的修改就能在 Android 上运行。而在 J2ME 上要想运用那些类库几乎不可能,只能重新造轮子。BlackBerry 里的 Java 环境比 J2ME 要强,但强的有限,基本还是无法利用现有众多的 J2SE 的类库。所以对想转到移动平台的 J2EE 程序员来说,转向 Android 平台的代价最小,所能做的事情最多。
转向 Android 平台的困难主要在于这是个全新的平台,手机硬件还没发布,没有实际项目积累和实际的运行环境。现在开发基于 Andoid 的应用难免有些空中楼阁的意味,无法经过实际运行环境的检验。也很少有客户愿意为半年一年后还不保证能运转的应用买单,所以对程序员来说会有较长的投入期。

:我个人觉得这个转型会非常容易。尽管 Android 支持的不是标准的 Java TM,但是已经覆盖了大部分的 Java 的语法和类库。困难之处,我觉得可能在于开发人员对移动设备和服务器设备的理解。移动设备的具有一些独有的特性,比如电源消耗问题,屏幕大小限制,以及 CPU 的速度等。因此,在各个资源之间的平衡策略往往和传统的服务端编程不一样。

:还有两个原因选择 Android,

  • Google 承诺 Android 将会是一个以 Apache License 开源的项目(尽管 Google 没有公开的开源时间表),而 Apache License 是一个对商业应用和开源应用都非常宽松的 License。
  • Android 可以说是一个为移动互联网设计的手机系统,在上面内置了诸如 json, location, gdata, browser, map 等等很多 API,因此对于 J2EE 程序员来说,Android 这样的终端设备不仅提供了熟悉的场景,而且又提供了实现很多 idea 的可能性。

Android 目前还有一个困难就是它的 API 和实现都还不是非常稳定,文档也不是很好,因为太新所以缺乏成功案例,当然它的社区非常活跃,几乎所有问题都可以在那里得到迅速回答,而 Google 为此举办的 Android 编程大赛有望带来一些让人激动的应用案例。

InfoQ 中文站:从您个人的经验出发,Android 手机与以往的手机平台开发上有怎样的不同呢?

:以往手机平台感觉是各个厂商各自一套封闭体系,J2me 只能作为二等公民存在,一等公民是 C、C++。在 Android 平台,Java 是标准语言,一等公民。在 Android 平台上编程感觉受限制最小,甚至有在为 PC 机编程的感觉。个人感觉 C、C++ 语言最好退缩到其最擅长的底层驱动领域。在应用层,Java 还是最好的语言,资源丰富、编程简单、可移植性强,前提是硬件速度已经快到了一个程度。Android 平台所对应的硬件是半年一年后的,那时手机的硬件能力会有新的发展。记得十年前 PC 机的标准配置是 128M 内存、 300Mhz CPU,跑 WIndows 98,已经有很有丰富的应用了。即使今天很多手机的硬件已经超过这一水平,更别说半年一年之后了。

:在 Android 上开发会容易很多。 Android 是一个全新的开放的平台,其目标程序员为普通 Java 开发人员。相比 J2ME, Symbian 程序员,Android 的入门门槛应该说非常低。

InfoQ 中文站:能不能从开发者的角度把 J2ME 和 Android 对比评价一下?

:J2ME 的提出是因为当初手机硬件速度很低,Java 虚拟机运行负担较重,所以大幅裁剪了 J2SE,推出了 J2ME。大幅精简的后果就是开发功能大大受限,和 PC 平台差距巨大。随着硬件能力的提高,个人认为手机支持 J2SE 是必由之路。Android 平台朝这个方向迈出了大大的一步,大大缩小了手机和 PC 平台上编程的差距。

InfoQ 中文站:Android 平台上有可以使用的数据库吗,可不可以大概介绍一下?

:目前我了解到的一个是 SQLite,一个就是 db4o。SQLite 是 Android 内置的精简型关系型数据库,能实现标准关系型数据库的大部分功能。db4o 是对象数据库,在编程上更为简单。个人比较看好对象数据库在手机上的使用。因为在手机上所要处理的数据毕竟是少量的,对性能要求不象数据库服务器那么高。这时对象数据库编程简单、可灵活适应未来变化的优点就显现出来了。但因为 db4o 不是 Android 内置支持的,目前还做不到和 Android 特有的一些编程部件的无缝结合。

:Android 内嵌了 SQLite 数据库,这是一个轻量级的关系型数据库。与 J2SE 不同,Android 上定义了一套新的数据库操作 API,而不是使用 JDBC。 db4objects 宣布了其旗舰产品 db4o 可以无缝的运行在 Android 平台。db4o 是一款面向对象的原生 (native) 数据库。我个人不是很喜欢 Android 内置的这套数据库 API,因为它并不遵循 JDBC 规范。在我的理解,Android 的一大亮点就是拥抱现有的技术,赢得了 java 开发人员的喜欢,而新的查询 API 意味着原有的基于 JDBC 的数据库相关的程序不能直接运行于 Android。从这个角度来讲,db4o 在所有的 API 方面保持了高度一致,无需做任何修改,因为 db4o 是完全基于 java 的原生数据库。

开发人员可能更习惯使用面向关系型数据库,但是 db4o 在 API 设计方面非常适合移动设备的开发,非常简洁。拿 Android 平台内置的联系人数据结构来讲,存储,读取联系人,如果使用 db4o,只需 10 行只有的代码,如果使用 SQLite 的话,则需要上百行代码。db4o 直接面对对象,无需把对象转化为表结构字段,因为编程更不容易出错。和服务端不同,手机上的数据库更要求自适应管理,而无需数据库管理员,这也是 db4o 的设计目标之一。

:db4o 在 Android 上的部署不需要任何配置或改动,就当作一个普通的 library 就可以流畅运行了。由于市场上还没有 Android 手机出售所以无法给出确切的性能比较,但是在模拟器上的比较证明 db4o 的综合性能丝毫不逊于 SQLite, 在一些情况下甚至有数量级的优势,比如已知数据的 id 来进行删 / 改 / 查等,对于手机应用这是非常普遍的使用场景。

Android 上目前没有成熟的 O/R Mapping 框架,对于大多数习惯了 Hibernate,JDO,iBatis 等各种框架的开发人员来说,面向对象数据库更符合他们的使用习惯。而且面向对象数据库直接避免了 O/R Mapping 的问题,重构代码完全不用考虑重构数据库或者配置,更不用修改 SQL,因此更加敏捷。


作者简介:仝键,网名咖啡屋的鼠标,06 年大学毕业,普通程序员,专注于 Java、Flex 方面的开发、Agile 等软件开发方法论的学习。爱好参加社区活动。

2008-05-16 02:543594

评论

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

如何在PPT放网页链接?2个高效PPT制作技巧盘点!

职场工具箱

人工智能 效率 PPT 办公软件 AI生成PPT

AI智能体的运维

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

AI智能体 软件外包公司 AI技术应用

1688商品列表API秘籍!轻松获取商品列表数据

tbapi

1688商品列表接口 1688API 1688数据采集 1688数据分析

分享一个人开发一套MES系统的历程——智能制造实践者

万界星空科技

数字化 制造业 mes 生产管理软件

SSL证书安装不成功是怎么回事?有哪些原因?

国科云

HarmonyOS SDK助力高德地图创新,带来便捷出行新体验

HarmonyOS SDK

HarmonyOS NEXT HarmonyOS SDK应用服务

破解能源管控难题:MyEMS 开源系统的实战价值与创新路径

开源能源管理系统

开源 能源管理系统

FFmpeg 8.0 将集成 Whisper,支持实时字幕和转录;DeepMind 生物声学模型从鸟类拓展到哺乳昆虫和两栖丨日报

声网

AI智能体外包开发的流程

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

AI智能体 软件外包公司 AI技术应用

舆情监测≠舆情管理:海外舆情监测系统如何从预警到施策闭环?

沃观Wovision

海外舆情监控 沃观Wovision 舆情监测系统

昆仑万维「Skywork UniPic 2.0」开源,统一多模态模型再迎新突破

新消费日报

Hunches背后的科学:深度设备嵌入技术

qife122

机器学习 设备嵌入

3分钟,手摸手教你用OpenResty搭建高性能隧道代理(附完整配置!)

左诗右码

基于视觉推理的Img2LaTeX转换技术突破

qife122

计算机视觉 视觉语言模型

等保服务费包括哪些?谁来付?企业吗?

行云管家

等保 等保测评 等保服务

MyEMS:全场景能源管控的开源解决方案,驱动低碳未来

开源能源管理系统

开源 能源管理系统

【干货】TikTok限流怎么破?先搞清楚这些问题!

kookeey严选代理

tiktok直播专线 海外IP tiktok封号 Tiktok shop 住宅代理

技术战略引擎:2025中国出海企业全球化增长范式重构

xuyinyin

鸿蒙 NEXT 开发之后台任务开发服务框架学习笔记

最新动态

AI智能体的开发费用

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

AI智能体 软件外包公司 AI技术应用

上车!KWDB 核心挑战赛培训来了!

KaiwuDB

数据库 开源

大数据-66 Kafka 分区与副本机制详解:高可用与高性能的核心与实战 副本与分区

武子康

Java 大数据 kafka 分布式 消息队列

什么是低代码?为什么低代码开发很重要?

优秀

低代码 低代码开发

从“字”到“画”:基于Elasticsearch Serverless 的多模态商品搜索实践

阿里云大数据AI技术

大数据 elasticsearch Serverless 搜索 向量检索

1688商品详情API秘籍!轻松获取商品详情数据

tbapi

1688商品详情接口 1688API 1688商品数据采集 1688数据采集 1688商品详情API

什么是DDOS攻击?带你了解10家最佳的DDOS防御平台

编程猫

什么是低代码?低代码和无代码的区别,以及低代码的用户是谁?

优秀

低代码 无代码

超融合架构狂飙突进!下一代数据中心革命与万亿市场新风口解析

智驱前线

超融合架构

说说内存泄漏的常见场景和排查方案?

王磊

CST如何在没有场监视器的情况下获得EBDH场

思茂信息

仿真 CST软件 电场磁场

MyEMS 开源能源管理系统核心代码解读 026

开源能源管理系统

开源 能源管理系统

开发者眼中的Android手机平台_Java_仝健_InfoQ精选文章