Android为什么选择Java作为开发语言之我见

我们先来看一组数据:

根据调研机构Strategy Analytics的最新统计数据,2014第三季度,iOS和Android已经占据全球首能手机96%的市场份额。

其中,Android依然是绝对的霸主,豪取83.6%,而且相比去年同期又增长了3个百分点,iOS占比为12.3%,同比下降1.1个百分点,差距还是很明显的。接着就是Windows Phone,目前占比4.1%,小幅增长,而黑莓系统已经只剩下可怜的0.7%。其它操作系统合计0.1%。

毫无疑问,iOS、Android已经成为这个世界上最主流的两大移动操作系统。而安卓系统则是继ios之后一个非常差成功的移动操作系统。

现在,我们要考虑的是安卓为什么能成功?

也许你会说”是开源造就了安卓的成功“,没错,安卓能够成功的最重要的因素是开源,任何手机厂商都可以谷歌通过的开源政策免费获得操作系统的使用权,同时也可以基于该操作系统进行个性化定制,打造自己的操作系统(安卓系统的定制版)!也正是由于安卓系统,才造就了包括三星、华为、中兴、小米等众多国内外手机厂商的成功。

当然,除了”开源“这个原因外,操作系统自身的良好特性也是非常重要的原因,比如实用性、易用性、稳定性、安全性以及功能性(也叫拓展性)和娱乐性。其中,操作系统的实用性、易用性、稳定性以及安全性是由操作系统自身决定的(比如选择linux作为操作系统内核加上谷歌对基础功能特性的完善);操作系统的功能性和娱乐性则是通过第三方应用程序来实现的,而这第三方程序开发简称安卓开发,其开发语言就是大名鼎鼎的java。

下面言归正传,来聊一下谷歌为什么选择java语言作为安卓系统的开发语言

上面说到了安卓操作系统是开源的,其开源的初衷便是希望通过该措施整合所有的手机硬件提供商以及手机生产厂商,说的更本质一点的就是谷歌希望让安卓系统能运行于任何不同类型的硬件上,而其中的硬件主要便是指CPU,其中包括,高通、德州仪器、三星,甚至包括国产的华为(海思处理器)。如果要让一个app(应用程序)能够在各种不同的平台设备上运行,开发语言就必须跨平台(也许你会问,”跨平台“是相对于不同的操作系统而言的,运行安卓系统的手机虽然硬件不同,但操作系统都是安卓啊?这是一个常识性的问题,跨平台包括两个概念,一个是跨操作系统,另一个是跨硬件,而我们所说的就是跨硬件。),通过跨平台屏蔽底层硬件的差异,而不必让程序员为了考虑底层硬件的不同写出不同的代码。那么是谁能够做到跨平台、一次编译到处运行并且能够保证效率?显然是java。当然你也会说python也可以,那我只想说一点,这个东西纯解释型的语言,效率太低。为什么不用c或c++?哦,别开玩笑了,他们不能跨平台;为什么不用object-c?这就更开玩笑了,这个东东是苹果的儿子,先不说他跨不跨平台了,单是苹果是谷歌的生死对手就不会用;为什么不用C#?这个问题的答案见上一个;为什么不用go,这可是google自家的语言啊?

对于这个问题,得细说一下:go是编译型语言,做不到跨平台,如果要做跨平台,谷歌必须为go在安卓系统中开发出一套运行时环境(RunTime,类似于微软的CLR和甲骨文的JVM),而让go写出的程序先”编译“成中间语言,然后在这套”运行时环境“中再次编译成机器码。也许有些朋友会说了,这一套东西不就是微软的.NET(CLR)和甲骨文的JVM做的事情么,呵呵,你说对了,我相信凭借谷歌的实力是很容易做到的,毕竟开发出一套运行时环境或者叫虚拟机不是难事(Davilik就是谷歌开发的应用于安卓的"JVM")。其实还有一个非常重要的原因,是因为当时Java语言是一个相当成熟的计算机编程语种,除了基础类库完善,各种高效的第三方组件更是不计其数,最最重要的一点是Java虚拟机规范也是开放的,谷歌只要按照甲骨文的虚拟机规范很容易写出一套虚拟机(这个虚拟机总比为go写一套”虚拟机“容易的多,有现成的规范)。除了这些之外,还有一个原因是因为,当时java的程序员太多了,而让这些人转向安卓开发太容易了(而go才刚起步,用的人并不多)!

PS:

1.谷歌采取开源措施是非常时期的妥协政策,内在原因如下:

当时的市场iPhone占的份额已经相当高了,塞班,黑莓等老大已经显露颓势,在这种情况下:

一方面其他硬件厂商希望能进入市场分一杯羹;

另一方面Google出于自身利益,当时Google是iOS的默认搜索引擎,但是万一Apple和Google翻脸呢?Google不能冒这种风险,正巧这时又冒出了一个Android,所以Google就顺势收购了Android团队,并把安迪·鲁宾收编进了Google最开始Google对Android也没有太高的期望,只是为了捅iOS一刀,所以采取了非常妥协的政策:完全开源,厂家自主定制 。

2.采取开源的弊端:

这个弊端现在已经比较严重了,那就是,开源导致系统的碎片化以及部分设备版本滞后的问题。乐观的是,谷歌现在正致力于解决这个问题而努力。

3.何为跨平台,以及实现跨平台的技术要点?

跨平台泛指程序语言、软件或硬件设备可以在多种作业系统或不同硬件架构的电脑上运作。

跨平台的核心要点就是”Runtime/中间件环境“的支持,具体可以参考.NET的CRL和甲骨文的JVM,http://blog.csdn.net/zhu_xun/article/details/40681105

时间: 2024-10-12 20:49:23

Android为什么选择Java作为开发语言之我见的相关文章

在Android(Java)开发中如何实现类似C语言中的中断程序

在Android开发过程中,有时候会遇到这样的情况,在一个线程中,执行A操作,B操作需要等A操作结束后才进行,因此需要wait,在java中可以如下代码实现 Handler mBlueHandler = new Handler(Looper.getMainLooper()); Task task = new Task(); mBlueHandler.post(task); while (!task.finish) { synchronized (task) { try { task.wait()

新手入坑 java的开发语言环境

开发java程序的环境 1.下载jdk,从官网下载或从可靠渠道下载 2.安装jdk,jdk包括jre,把jdk和jre安装到相同的父级文件目录中 3.配置系统环境变量path,把jdk中的bin目录添加到path变量中,应该与其他路径以分号相分隔 4.编写Hello.txt源文件,将后缀名改为java,使用javac命令对源文件进行编译.生成目标文件 字节码文件Hello 5.win+r运行,找到相应文件路径,javac Hello.java 6.java语言可跨平台:wins.linux.ma

开发语言之我见

语言  有其符号和处理规则   一般称为文法 ,符号称为文字 编程语言:定义计算机程序的形式语言: 数据+操作符+操作流程 =语言物质骨架 算法是灵魂骨架

6.5 为什么Android用Java不用c实现?

C/C++过于底层,开发者要花很多的经历对C/C++的语言研究清楚,例如C/C++的内存机制,如果稍不注意,就会忘了开启或者释放.而Java的GC会自动处理这些,省去了很多的时间让开发者专注于自己的业务.所以才会从C/C++的底层慢慢向上变成了JAVA的开发语言,该层通过JNI和核心运行库层进行交互.其实这些也是Java能发展这么迅速的原因,现象对象语言的优势.不用太关注内存,才有时间去创造新的事物.举例: Activity Manager:用来管理应用程序生命周期并提供常用的导航回退功能. W

Java软件开发工程师市场需求大不大

Java编程语言是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异.多线程的动态语言.为什么Java开发工程师的待遇一直那么高呢? Java行业市场需求存在巨大的缺口 这几年中国在移动互联网这块发展非常迅猛,各种创业公司.小团队如雨后春笋般冒出来,对Java开发的需要变大.但存在人才发展跟不上市场的需求的现状,相对应的给优秀Java人才开出的薪资待遇随之水涨船高,为此很多大学生看中了这一前景,纷纷加入了动力节点Java培训机构,接受专业的培训,与企业零距离对

从Java/Android到Swift iOS开发:语言与框架对比

本文是我在『移动前线』微信群2016年4月28日的分享总结整理. 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还不够成熟没有正式发布.2016年初我们正式使用swift开发上线了销售助手App产品,积累了比较丰富的swift项目实战经验,开源框架都是用的swift版本,大量使用了面向协议和函数式编程.iOS App开发人员基本都是以前安卓版本的开发人员,同时维护安卓和iOS 2个版本,效率很高. 今天分享的主题是Jav

如何看待 Kotlin 成为 Android 官方支持开发语言?

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 如何看待 Kotlin 成为 Android 官方支持开发语言? - Thinkblog - 博客频道 - CSDN.NET Thinkblog 爱编程,爱分享,不仅限于技术. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]

如何看待 Kotlin 成为 Android 官方支持开发语言

Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin>,着实狠狠地蹭了一波热度(尽管这样会被鄙视).眼下Android圈已经躁动了,甚至严重到如果对Kotlin视而不见就显得自己不像一个合格的Android程序员. 本文尝试从一个客观全面一点儿的角度来看待这件事情,尽力为大家提供一个比较理性的观点供参考. 为什么会选用Kotlin 关于 Google 为什么

Android与Swift iOS开发:语言与框架对比

Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有SwiftyGPIO库,可以通过GPIO控制一些硬件. Object C is old and ugly,oc是1983年苹果推出的,过于陈旧和臃肿. Swift语法类似Scala,Javascript ES6, Java,OC, C++, Python 这是tiobe发布的编程语言排行 Swift支持