Java工作效率低真的很低吗?Android为何要采用

2014年7月荣获微软MVP称号2013年7月 荣获微软MVP称号2012年7月 荣获微软MVP称号2011年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号
2016年8月 硬件/嵌入开发大版内专家分月排行榜第一2016年6月 硬件/嵌入开发大版内专家分月排行榜第一2015年12月 硬件/嵌入开发大版内专家分月排行榜第一2015年7月 硬件/嵌入开发大版内专家分月排行榜第一2015年6月 硬件/嵌入开发大版内专家分月排行榜第一2015年4月 硬件/嵌入开发大版内专家分月排行榜第一2014年12月 硬件/嵌入开发大版内专家分月排行榜第一2014年10月 硬件/嵌入开发大版内专家分月排行榜第一2014年9月 硬件/嵌入开发大版内专家分月排行榜第一2014年8月 硬件/嵌入开发大版内专家分月排行榜第一2014年7月 硬件/嵌入开发大版内专家分月排行榜第一2014年5月 硬件/嵌入开发大版内专家分月排行榜第一2014年4月 硬件/嵌入开发大版内专家分月排行榜第一2014年3月 硬件/嵌入开发大版内专家分月排行榜第一2014年1月 硬件/嵌入开发大版内专家分月排行榜第一2013年12月 硬件/嵌入开发大版内专家分月排行榜第一2013年10月 硬件/嵌入开发大版内专家分月排行榜第一2013年9月 硬件/嵌入开发大版内专家分月排行榜第一2013年8月 硬件/嵌入开发大版内专家分月排行榜第一2013年7月 硬件/嵌入开发大版内专家分月排行榜第一2013年5月 硬件/嵌入开发大版内专家分月排行榜第一2013年4月 硬件/嵌入开发大版内专家分月排行榜第一2013年3月 硬件/嵌入开发大版内专家分月排行榜第一2012年12月 硬件/嵌入开发大版内专家分月排行榜第一2012年11月 硬件/嵌入开发大版内专家分月排行榜第一2011年3月 硬件/嵌入开发大版内专家分月排行榜第一2011年2月 硬件/嵌入开发大版内专家分月排行榜第一2009年10月 硬件/嵌入开发大版内专家分月排行榜第一2009年7月 硬件/嵌入开发大版内专家分月排行榜第一2009年6月 硬件/嵌入开发大版内专家分月排行榜第一2007年12月 硬件/嵌入开发大版内专家分月排行榜第一2003年6月 硬件/嵌入开发大版内专家分月排行榜第一2002年9月 硬件/嵌入开发大版内专家分月排行榜第一2002年8月 硬件/嵌入开发大版内专家分月排行榜第一2002年7月 硬件/嵌入开发大版内专家分月排行榜第一2002年5月 硬件/嵌入开发大版内专家分月排行榜第一2002年4月 硬件/嵌入开发大版内专家分月排行榜第一
2013年1月 硬件/嵌入开发大版内专家分月排行榜第一2012年10月 硬件/嵌入开发大版内专家分月排行榜第一2012年9月 硬件/嵌入开发大版内专家分月排行榜第一2012年8月 硬件/嵌入开发大版内专家分月排行榜第一2012年7月 硬件/嵌入开发大版内专家分月排行榜第一2012年6月 硬件/嵌入开发大版内专家分月排行榜第一2012年5月 硬件/嵌入开发大版内专家分月排行榜第一2012年4月 硬件/嵌入开发大版内专家分月排行榜第一2012年3月 硬件/嵌入开发大版内专家分月排行榜第一2012年2月 硬件/嵌入开发大版内专家分月排行榜第一2012年1月 硬件/嵌入开发大版内专家分月排行榜第一2011年11月 硬件/嵌入开发大版内专家分月排行榜第一2011年10月 硬件/嵌入开发大版内专家分月排行榜第一2011年9月 硬件/嵌入开发大版内专家分月排行榜第一
2014年10月 硬件/嵌入开发大版内专家分月排行榜第二2014年2月 硬件/嵌入开发大版内专家分月排行榜第二2013年10月 硬件/嵌入开发大版内专家分月排行榜第二2013年8月 硬件/嵌入开发大版内专家分月排行榜第二2013年3月 硬件/嵌入开发大版内专家分月排行榜第二2012年12月 硬件/嵌入开发大版内专家分月排行榜第二2012年11月 硬件/嵌入开发大版内专家分月排行榜第二2011年12月 硬件/嵌入开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。Android 为什么要用 Java 开发软件?Java 的运行效率不是很低吗? - 知乎200被浏览68426分享邀请回答3313 条评论分享收藏感谢收起12添加评论分享收藏感谢收起查看更多回答当前位置: >
问下,为什么Android要用低效率的JAVA虚拟机呢
整理时间: 19:15 来源: 作者:编辑 点击:次
【楼主】 10:28& 那为什么不换个高效率的虚拟机东东呢,看过一篇新闻,说有个组织要用C#把Android写一遍,然后效率就能大为提升,1000块钱的低端安卓手机就能如态度般丝滑,小白纯询问,这可能吗,楼主纯小白,求各位大神骂的时候轻骂有大神说版权,可是JAVA不是属于那个甲骨文还是那个sun的吗,也有版权的啊 不明。。。。网友评论 10:31版权问题?网友评论 10:32问孩子他爹小片片~网友评论 10:34兼容性?我猜的..
网友评论 10:34为了迎合开发者啊,不然你以为那发了疯一样的应用数量从哪来的?网友评论 10:34C#重写一遍不就是.net了....匿网友评论 10:35 Post by MysTic伦 ( 10:34)网友评论 10:37java开发方便哪,起码比态度那个Objective-C方便多了。不过C#又比java方便多了。网友评论 10:38用C#能提高性能?不是有个庞大无比的framework么?网友评论 10:40哪里用了java虚拟机
。。。网友评论 10:40主要还是兼容性方面的考虑,当初发明JAVA也是为了在不同机器上跑。以目前安卓机的五花八门的CPU,用JAVA还是比较合适的。网友评论 10:40c#的却比java快那么一点 安卓版的雀龙门使用jni调用libmono再调用c#的dll实现核心算法的网友评论 10:43linux上的.net虚拟机很一般吧.安卓的问题是渲染有时候不按照预先设定的schedule.这个是历史问题.安卓开发的时间太早了.比ios出现还早. 渲染和ui是在同一个线程,所以app代码没写好就会坑掉.在安卓的调试里就有在ui线程做长操作的时候可以闪烁屏幕或者直接崩溃掉.不过因为market是没审核的,很多开发者就随便写写.ios和wp7就已经分开了语言绝对不是影响性能的唯一因素. 你用native代码的性能很多时候都比不上just in time优化过的java代码的.网友评论 10:49...C#么,那会不会后续装个软件要求装Framework X.0呢。。。网友评论 10:49 linux上的.net虚拟机很一般吧.安卓的问题是渲染有时候不按照预先设定的schedule.这个是历史问题.安卓开发的时间太早了.比ios出现还早. 渲染和.......网友评论 10:50另外就是用java做语言,可以吸收以前那些做j2me的人啊.这也是一个很大的力量网友评论 10:51不明所以
上一篇: 下一篇:没有了
【猜您喜欢】
【其他人还看了】
Copyright & 日Android为什么选择Java作为开发语言?【电脑爱好者吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:88,552贴子:
Android为什么选择Java作为开发语言?收藏
Android系统基于Linux,内核和驱动都是使用C/C++语言做开发,为什么又设计一个 Dalvik JVM,然后在SDK 层面选择Java作为开发语言?
笔记本电脑 认证会员专享优惠,中小客户专场,硬盘存储路由套餐,音视频空调特价专场,管材桥架直击底价.全场裸价钜惠,给你不一样的采购狂欢!
避免Native作为应用代码导致的因为设备多样化导致App生态了支离破碎,是从Nokia哪里的教训。重新实现Dalvik,一是避来自Oracle Java的产权问题,二是从Sun J2ME来的教训。Java在过去的发展累积下了很多为业务逻辑产生的人力资源链,而移动应用开发的人力分布基本重合,可以充分复用。
个人一点不成熟的理解是:安卓最初设计出来的时候就是要在不同厂商的不同硬件平台上运行的。不同硬件平台意味着不同的CPU不同的指令集。在系统层面为了保持效率以及系统开发一般都用c/c++开发在应用层面就必须面对跨平台的支持性那么哪种语言能做到一次编译,到处运行呢?最成熟、可靠且流行的方案应该只有java了 3 条评论 感谢 分享 收藏 • 没有帮助 • 举报赞同2反对,不会显示你的姓名知乎用户,寻C | C++程序员,在苏州工作。随时都可…知乎用户、李慧 赞同linux是河床。sdk是水。jvm是船。你说过河是趟过河床还是坐船呢。java开发者那个数量之庞大啊。 添加评论
赞同2反对,不会显示你的姓名匿名用户不说、wood 赞同其实是历史原因。当时正是java火的时候,如果你是程序员,必定选用java而不是c++。当时对CPU太乐观了。摩托罗拉使用java开发手机系统,结果太慢无法运行。(微软也干过这种蠢事)。但是Android很幸运,内核和系统运行库是用c/c++写的,而应用是java或c++或java&c++写的,所以才能运行。现在后悔也晚了,大局已定,除非被其它系统取代。现在分析为何使用java就是在扯蛋,说什么吸引程序员,应对更多复杂的设备,开发成本低,想多了。现在优秀点的应用都是c++和java结合使用,两种语言一起使用反而增加了复杂度。 添加评论
赞同1反对,不会显示你的姓名知乎用户,学生。Linux/Linux C/Android/Python/Jav…知乎用户 赞同首先我们需要选用一个语言来开发本地App。那么,我们第一步干啥了。在现有的语言中挑选语言。那么首先考虑的条件是不火的语言和没前途的语言是不在选择范围的。---因为没人用,那么库就会少。因为库少就不会好用。因为不好用。所以用的人更少。生态圈的核心思想。--那这个世界是不是只有C++/Java了。肯定不是。因为有些语言是有前途的。最大的特点是。简化了程序员的负担。或者效率更高。未来肯定是主流。那么我们常用的语言和有前景的语言是哪些C/C++/Java/C#/Python/Ruby/Go/JavaScript+Html好。这些是我们常用的语言。我们看待的是怎么把这些语言一步步的踢掉。然后只剩下Java的。首先踢掉的是C。至今大型的超过10万行代码的图形化界面程序没有几个是用C的。因为复杂的错误处理和没有纠错机制。使得程序非常容易崩溃。同时。因为C没有面向对象。那么工程化开发显得非常麻烦。相信没有人现在主动说。用C开发App这种多界面程序吧。继续踢掉的是C#。我干嘛要用一个一出生就为了对付Java的。还是微软的私货的语言。对。Android是开源界的。而C#注定不是适合开源界的语言。那我们继续踢语言:我们该要一门重语言还是轻语言?Java/C++/C#/Go/C是重语言。Python/Ruby/JavaScript+Html/是轻语言。对。我心目中划分语言的标准基本上是属于这样的,只要在代码中体现我们需要讲效率的。那就是重语言。重语言首先讲究的是运行效率。然后讲究工程化。轻语言讲究开发效率,讲究敏捷性开发。回到我们选语言的原则。我们想开发一款本地App。还在性能不高的手机上。那么除了C之外的开发语言中。运行效率最高的是C++,然后是Java。那么轻型语言就要被一个个踢掉了。Ruby在网页端有作为。但是库太少。图形库更少,开发者都是网页端的人。被踢。JavaScript+Html - ----& 这是未来大一统的趋势。但是我们现在是找一门开发本地App的语言。外加真心html+JavaScript有着先天的劣势。(效率+Offline)Python有着完善的库。有着极高的人气社区。在手机上开发也有过尝试。(Nokia就干过这事。Ubuntu Phone的UML也是一种类python的语言。)Google也是python的大用户。效率是问题。但是不是绝对的。先对Python实现保留意见。那么我们看这一轮入围的四门语言Java/C++/Python/Go再说Go。Go语言还不成熟。库也不多。开发者少。但是作为Google主打的语言。很有可能。Google会提供基于Go的Android sdk。至少现在Android的主打语言不会是Go。剩下三门C++/Python/JavaC++重运行效率。但是跨平台性较弱。开发难度较高。库多,用的人多。Python,重开发效率。跨平台性高。开发难度低,库多,用的人多。Java。重开发效率。不及python,重运行效率,不及C++。开发难度低。库多。用的人多。那再回到需求:Google是想要一门开发本地App的语言。Google想屏蔽掉底层硬件的差异。实现对于开发者来说是一个统一的平台。同时。对于手机这个现阶段的平台来说。耗电,以及性能。是无法回避的问题。那么这门语言的跨平台性要求很高。同时效率又很高。说Python:效率实在无法达到其普遍的手机要求。尤其是对于图像处理这种高计算操作。且。社区无法与C++/Java相比。意味着库没有Java和C++多,开发者不是跟Java和C++一个等级的。说C++:用过JNI的人都知道本地的C/C++库,至少要编译多次。不同的框架就代表者不同的编译环境。而且直接用C++编译运行的话。C++并不能很好的屏蔽掉硬件差异。所以对于开发来说调试来说,都是一个比较艰巨的任务。C++也不是一个非常好的工程化开发语言。那有没有破解法。Qt。可以用框架屏蔽掉大部分的细节操作。Qt5.0支持Android。为什么没用。估摸着是跟Qt不是Google家的产品加不开源的问题吧。说Java:虚拟机是核心。因为虚拟机真正能屏蔽掉开发的很多差异。而且通过虚拟机。开发者只要在打包的时候翻译成运行码而不需要翻译成机器码。通过虚拟机完成很多差异的解决。而效率并不是丢的非常严重。且Java比C++更受开源界和工业界的共同欢迎。即使Java也有版权问题。。。我们屏蔽掉最基础的硬件差异。通过Linux,在屏蔽掉手机的一些基本功能差异。然后提供纯粹的利于开发者开发和测试的方法。只有通过虚拟机了。而这个虚拟机是需要讲性能的。Google搞了一个Davlik虚拟机。对。这就是Android的核心。就是因为性能要求高。不得不重新开发虚拟机。Davlik就是一个非常讲效率的虚拟机。而其他的常用库都有的,现成的。根本就不需要自己去写的。只要打包就好。那么还有些必须考效率的库和应用。怎么办。用JNI技术调用C++对就这么坑爹。为什么Object-C这门语言无视我说的大部分要求了。因为Apple有能力创造一门更好的语言。Google对于Android,只是在开源社区挑一门语言。且。ObjectC生在Apple,死在Apple。兼容性。人家才不需要考虑。所以人家敢用Object-C,而Android为了实现真正的跨平台。只能选Java。参考:Dalvik VM vs Sun JVM人家的回答:Dalvik 虚拟机和 Sun JVM 在架构和执行方面有什么本质区别?显示全部 添加评论
赞同0反对,不会显示你的姓名方静远,希望有一天的知识阅历能贡献出一些高质答…居然妖我,我真滴不会写java呀&_&开发难度和效率之间是存在不可协调的矛盾滴……不可否认,java写起来感觉比c++更简单,更容易上手,而且有丰富的类库支持Android的终端繁多,硬件多样化,java虚拟机出色的实现了跨平台,其他系统恐怕没有抽象出高层的接口给程序调用,另外google优化过了自己的虚拟机其他我就不知道了。。。卖个萌好了~(@^_^@)~ 8 条评论
赞同0反对,不会显示你的姓名郭昊,我想成为技术宅;已经成功三分之一了。这问题应该有标准答案的,先去stackoverflow找找。我个人感觉主要是三点,java良好的封装性和对内存操作的隐藏带来的便捷;还是它的封装性让你不至于写错程序把手机烧了;另外就是java学习成本低,本身比较流行,在linux上也比较成熟。java有良好的封装性的具体解释:你开发个应用只需要api接口就可以了,不需要也不应该把硬件层面的东西交给你控制,用dma传输一段数据都要操作n个寄存器,太麻烦了,(当然ti什么的封装了arm之后也提供了各种简单的*ware,但仍然不如java友好)另外作为一个从学c嵌入式开发到面向对象再到脚本语言的人,我觉得是越学越顺越方便,如果反过来学我估计会疯的。 添加评论
赞同0反对,不会显示你的姓名Vizhen Tan,苦逼Android程序员我个人猜测是:1.Java在互联网时代已经取得了重大成功,所产生的第三方的优秀的类库也就比较容易移植了,而且Java有者很强的面对对象语言特性。2.从整个生态链的角度讲,Java程序员众多,Java是比较简单易学,这样容易聚集众多的开发者。而之所以重新设计了一个JVM,一方面剔除了Java中自己的UI组件(awt,swt)等其他部分,另一方面是由于嵌入式设备的性能,Google重新设计JVM目的是想更加高效的操作硬件。 添加评论
赞同0反对,不会显示你的姓名李静岳,知人者智,自知者明。现在安卓手机和平板里面已经有ARM、Intel、MIPS几种CPU了,ARM又有几代。如果用C,会很麻烦,因为要考虑不同的硬件,对于很多性能要求不高的小软件来说,也过于大材小用了。现在这样很好,大部分不需要高性能的小应用,纯JAVA,跨硬件毫无压力。3D游戏,视频图像之类需要高性能的,也能JNI。 添加评论
赞同1反对,不会显示你的姓名汪鹏,前后端一起干张洋 赞同因为Java可以做到平台无关性,想想Android上有多少乱七八糟的硬件。全都匹配会累死人的。另外,在大部分手机应用都是CS模式的情况下,用于网络通信的时间远远大于处理数据的时间,总运行效率上C并没有优势,反而会增加开发的复杂性。比如在我的备胎机诺基亚2730c上用UC,下载网页数据占载入时间的80%以上。在高端机器上,用于数据处理的时间更是少得可怜,这时,程序的运行效率就不如开发效率重要了 添加评论
赞同0反对,不会显示你的姓名Hanyu Liu,码农我也很诧异为什么要用Java来实现android。已有答案这么多洗地的,其实我认为Java的不可控gc,就能(而且该)要了android的命!但真不知道为什么android能逆水行舟到今天!看来只能归为天数了。。。
有人说android的跨平台性,安全性,工具,已有代码等等。。。其实。。。android就是个linux,你都linux了,还怕这些?居然还有人说java的内存管理。。。java的gc机制根本就不适合做交互程序!因为gc是不可预知的,所以gc带来的卡顿也是不可预知的!只能是程序员蛋疼的遵守java的规范,祈求gc开恩罢了。作为4年的Qt developer和首批MeeGo的试用者,我只能对MeeGo表示惋惜,并对Nokia的中2行为表示惋惜!上面的答案我尽量不夹杂个人好恶,真的尽力了。 4 条评论
赞同0反对,不会显示你的姓名黄新宇,创业者,壁球爱好者,App及嵌入式软件开发,…说原生语言C++不会成熟,请参考iOS 的 object-C ,基本就是C++叔伯兄弟。开发了这么久的Android应用,我越来越觉得,用JAVA就是让你源码开放!!,随随便便就能反编译了,受用不少啊。 添加评论
赞同6反对,不会显示你的姓名Jaskey Lam,@Oracle知乎用户、sahwn wang、廖家 等人赞同1.Java是世界上使用人数最多的语言,所以更容易吸引开发者到Android生态里开发。(懂了Java又想做Android开发几乎没有什么学习难度和心理压力)2.Java有一堆现成的开发工具,开发难度更小(对比新语言)。3.很多手机开发人员已经熟悉使用Java(Java ME),这个领域中,Java已为人所熟悉。
留✎﹏₯㎕﹍﹍﹍﹍﹍﹍                文          能 武        提 能 进      笔 床 可 退      控 上 欺 可     萝 定 身 提     莉 人 压 臀       妻 正 迎         太 众           基
请问,想要成为黑客难吗?
一个复制粘贴!
登录百度帐号推荐应用为什么Android派生于Linux效率却如此低下? - 知乎77被浏览6375分享邀请回答236 条评论分享收藏感谢收起53 条评论分享收藏感谢收起查看更多回答

我要回帖

更多关于 公务员办事效率低坏处 的文章

 

随机推荐