`
javatgo
  • 浏览: 1168742 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

开发者眼中的Android手机平台

阅读更多

作者 仝健 发布于 2008年5月16日 上午2时54分

社区
Java
主题
JCP标准,
移动
标签
JavaFX Mobile,
Java ME

大家都知道,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,因此更加敏捷。

分享到:
评论

相关推荐

    Android手机管家源码

    本项目是一款基于Android平台的手机管理软件——“Android手机管家”的源码,它集成了四个主要功能:文件管理、应用管理、电话拦截以及文件加解密。这些功能覆盖了日常手机使用中的常见需求,使得用户能够更便捷地...

    参考文档-基于Android手机平台的音乐播放器-毕业文档.zip

    这篇毕业文档主要探讨了如何在Android手机平台上开发一个音乐播放器应用。这涉及到多个关键知识点,包括Android操作系统的基础,Java编程语言的应用,以及可能用到的Apache相关技术。以下是这些核心概念的详细解释:...

    Android中文翻译组——Android开发者指南(2).chm

    Android中文翻译组是一个非盈利性质的开源...有在线的中文API、开发者指南、开源项目以及Android视频专栏。 本合集发布日期:2012年1月31日,涵盖历次合集内容,最新版请关注翻译组微博:http://weibo.com/android2。

    基于Android 手机小闹钟源码

    【Android手机小闹钟源码】是一个典型的Android应用程序开发示例,主要展示了如何在Android平台上构建一个实用的小闹钟功能。对于想要深入学习Android开发,尤其是对系统级应用或者日常实用工具开发感兴趣的开发者来...

    手机开发者模式,远程控制SC

    在Android设备上,开启开发者模式的方法通常是进入“关于手机”设置,连续点击“版本号”或“构建号”直到系统提示已进入开发者模式。在iOS设备上,这个过程可能有所不同,但同样存在类似的隐藏功能。 开启开发者...

    android手机屏幕共享软件

    在Android平台上,屏幕共享软件是一种非常实用的工具,它能够实时传输手机屏幕的内容,使得用户可以在其他设备上观看或记录Android设备的屏幕动态。这对于Android开发人员来说尤其有用,因为它们能够远程调试应用,...

    基于Android的手机银行系统.zip

    在这个项目中,开发者利用Android平台的强大功能,结合网络通信技术,实现了安全、用户友好的界面以及与服务器端的数据交互。 在Android Studio环境下,开发者可以利用其强大的集成开发环境(IDE)进行代码编写、...

    Android开发者指南-中文API

    "Android开发者指南-中文API"是一个非常有价值的资源,它提供了中文版的Android API文档,帮助开发者更好地理解和使用Android系统提供的各种功能和服务。这个文档通常会涵盖以下几个核心方面: 1. **Android体系...

    判断android手机是华为小米魅族系统

    这个"判断android手机是华为小米魅族系统"的工具类就是针对这种情况设计的,它可以帮助开发者识别用户设备是属于华为、小米还是魅族等品牌。这个类通常会包含一系列方法,用于检测设备的制造商信息,从而确定其所属...

    基于Android手机平台的记事本设计课程设计.doc

    《基于Android手机平台的记事本设计》是一个课程设计项目,旨在通过开发一款适用于Android手机的记事本应用,让学生熟悉Android开发环境、Java组件的使用以及数据存储的方法。以下是该项目涉及的主要知识点: 1. **...

    oppo 开发者指引, Android13兼容性处理建议

    在 Android 13 中,OPPO 开发者需要注意以下几个关键点,以确保应用程序的兼容性和稳定性。 前台服务 (FGS) 任务管理器 Android 13 中引入了前台服务 (FGS) 任务管理器,用于管理应用程序的前台服务。开发者需要...

    安卓Android源码——ipcamera-for-android 手机变成IP Camera.zip

    通过学习和分析这个源码项目,开发者不仅可以掌握如何将Android手机转变为IP Camera,还可以深入了解Android平台上的多媒体处理、网络通信和硬件访问等核心技能。这对于那些希望从事Android应用开发,尤其是涉及...

    android手机 OTG功能调试usb串口的demo源码程序,可在android studio运行调试

    在Android平台上,OTG(On-The-Go)功能允许设备作为一个USB主机,连接并控制其他USB设备,如键盘、鼠标或串口设备。这个【标题】提到的是一个用于调试USB串口的Android应用的源码示例,适配了Android Studio开发环境...

    android手机开发C_C++_QTSDK及教程

    3. **Qt for Android**:Qt for Android是Qt SDK的一部分,它使得开发者可以使用Qt工具链在Android平台上开发原生应用。Qt for Android提供了完整的API集,可以访问Android的各种服务和功能,如传感器、多媒体、网络...

    Android PC机摄像头摄像数据在Android手机上同步显示的源-IT计算机-毕业设计.zip

    该资源是一个针对Android开发的...总之,这个项目涵盖了Android应用开发的多个核心领域,对提升开发者在Android平台上的实际操作能力大有裨益,尤其是对于正在准备毕业设计的学生,能够提供宝贵的实践经验和理论知识。

    传智播客_Andorid_Android项目手机卫士视频video_day07视频

    在Android平台上,开发一款名为“手机卫士”的应用程序是一项综合性的任务,它涉及到多个Android开发技术与实践。在这个项目中,开发者将深入理解Android应用的基本架构,学习如何实现安全防护功能,以及优化用户...

    android手机应用,企业web平台

    【Android手机应用与企业Web平台】是现代移动办公和企业信息化的重要组成部分。在智能手机普及的今天,Android作为全球最广泛使用的移动操作系统之一,为开发者提供了丰富的API和工具,使得构建功能强大、用户友好的...

    android手机信息获取程序

    在Android平台上,获取手机信息是开发过程中常见的需求之一。在这个"android手机信息获取程序"项目中,开发者显然是针对新手入门,使用Android Studio作为集成开发环境(IDE)来编写代码,专注于短信的获取功能。...

    基于Android平台的拼图游戏的设计与实现毕业论文.docx

    Android 平台是当前最流行的智能手机平台之一,其市场份额不断扩大,吸引了大量的移动应用开发者。基于 Android 平台的拼图游戏就是其中的一个代表,它结合了经典的益智游戏和当前最流行的智能手机平台 Android,...

Global site tag (gtag.js) - Google Analytics