Android 为什么选择了Java

开发 开发工具
Java 语言非常成熟,性能也可以(当然得优化一下), 用的人超级多(全球号称有1000万) , 能把1/10的人拉进来做Android开发那就非常不得了, 社区更加成熟, 跨平台更是java 的招牌。

[[184252]]

2007年Android 刚刚出生的时候, 看到开发语言是Java , 我很高兴, 因为想在手机端编程的话不用去学Object-C这个看起来怪怪的语言了, 但另一方面我心里也是打了个大大的问号 :因为在很多人眼里, Java 是很慢的, 用Java 来开发手机端的应用, 尤其是游戏, 到底行不行?

事实证明,用Java来开发应用完全没有问题, Android 这八九年的发展超出了所有的人预料, 在智能手机端的占有率高达80%。

一个好玩的现象是:这些年大家似乎并不太关注应用程序的性能, 相反关注的是手机的性能, 小米倡导的跑分文化流行一时, 大家拼命的堆砌硬件, CPU从双核,4核 到8核 , RAM 从1G 到2G,3G, 4G, 6G... , ROM从4G 到8G,16G,32G,64G, 甚至128G。

Google 在刚刚发布Android的时候绝对想不到现在的手机性能会过剩成这个样子, 那他们当时为什么选择了Java 作为应用开发语言呢?

想象一下,如果你是当时的负责人, 需要作出决断, 你会怎么选择?

首先看看C语言, 简单灵活, 贴近硬件, 性能***, 指针异常灵活, 是开发系统软件的不二之选, 但是Android要讨好的是无数的应用程序开发者, 如果让他们用C语言去写界面程序, 非累得吐血不可。

那C++是不是好一点? 从C发展而来,面向对象, 性能好,类库也不少,在游戏领域也取得了成功。 拜托,这个语言复杂到了令人发指的地步, 也没有摆脱C的指针和内存管理的陷阱, 就别去折腾程序员了。

另外可移植性也是非常重要的考虑因素, 相比电脑,手机平台更加多样化,如果用C或者C++ , 把移植的工作交给程序员做, 一定会被骂死。

C# 怎么样? 看起来不错, 但这是微软平台的东西, 而微软是Google的死对头, 再说了Android 肯定是要开源的, 就不用考虑C#了吧。

Lisp ? 强大的令人发指, 学习曲线之陡峭也令人发指, 不改变编程思维是学不好的, 能用Lisp编程的人都是黑客, 为了吸引广大屌丝, 果断放弃!

Smalltalk ? 估计会的人也不多了。

有人说Javascript , 这们只是运行在浏览器中的语言, 而我们要的是能开发原生(Native)应用的语言!

Ruby 呢? 简洁优雅, 别的语言都是对机器友好, 要充分的压榨机器的性能, Ruby 可是号称对程序员最友好的语言啊。

其实Ruby 各个方面都很好, 除了致命的一个因素: 太慢 ! 这一点就把Ruby 排除在外了。

剩下的知名度较高的高级语言也就剩下Python 和 Java 了。

Python 性能还行, 用的人不少, 也能跨平台。

Java 语言非常成熟,性能也可以(当然得优化一下), 用的人超级多(全球号称有1000***把1/10的人拉进来做Android开发那就非常不得了, 社区更加成熟, 跨平台更是java 的招牌。

所以, 还是选择Java 吧。

【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2020-06-10 09:06:48

MongoDB架构高可用

2016-09-27 21:25:08

Go语言Ken Thompso

2017-02-27 15:43:14

iOSObject-CJava

2018-12-21 11:26:49

MySQLMongoDB数据库

2021-01-20 14:25:53

Vue3CSS前端

2024-02-05 21:48:25

VueReactHooks

2021-08-23 13:25:25

Vue3CSS前端

2018-03-14 21:20:19

JavaC#编程语言

2011-11-28 10:21:52

Nginx特性

2020-02-13 17:49:55

SpringBoot放弃选择

2022-06-14 11:01:48

SpringBootTomcatUndertow

2021-12-14 07:40:07

企业内部开源

2009-06-25 15:09:34

选择JSFESRI

2009-12-21 17:11:38

Linux认证

2012-02-28 09:11:51

语言Lua

2021-03-01 08:19:09

Java 包装类对象

2022-01-23 22:45:52

物联网Java编程语言

2016-08-19 16:27:52

数据库Mongo DB开发

2012-11-14 20:55:07

容错服务器选型CIO

2020-09-28 15:45:23

数据
点赞
收藏

51CTO技术栈公众号