设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

Android为何要用据说效率很低的Java呢?

2011-12-2 16:37| 发布者: joejoe0332| 查看: 16902| 评论: 2|原作者: ictch|来自: ictch的博客

摘要:   在hiapk网看到一个帖子,引发了很精彩大讨论。   原帖地址:http://www.hiapk.com/bbs/thread-155312-1-2.html   原楼主标题:今天突然知道了一件事,让我彻彻底底的否定了milestone和android的前途!   1 ...

  3、NDK是什么

  对NDK进行了粗略的研究后,我对“NDK是什么”的理解如下:

  1)NDK是一系列工具的集合。

  NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。

  NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

  NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

  2)NDK提供了一份稳定、功能有限的API头文件声明。

  Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。

  4、NDK带来什么

  1)NDK的发布,使“Java+C”的开发方式终于转正,成为官方支持的开发方式。

  使用NDK,我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。

  使用NDK,我们可以将需要保密的应用逻辑使用C开发。毕竟,Java包都是可以反编译的。

  NDK促使专业so组件商的出现。(乐观猜想,要视乎Android用户的数量)

  2)NDK将是Android平台支持C开发的开端。

  NDK提供了的开发工具集合,使开发人员可以便捷地开发、发布C组件。同时,Google承诺在NDK后续版本中提高“可调式”能力,即提供远程的 gdb工具,使我们可以便捷地调试C源码。在支持Android平台C开发,我们能感觉到Google花费了很大精力,我们有理由憧憬“C组件支持”只是 Google Android平台上C开发的开端。毕竟,C程序员仍然是码农阵营中的绝对主力,将这部分人排除在Android应用开发之外,显然是不利于 Android平台繁荣昌盛的。

  uiiang

  我就是做JAVA开发的,楼主说JAVA的效率比C++低,确实是这样。不过现在的CPU和内存等等各方面机器性能越来越快,这种效率上的差别只是理论上的数据罢了,没有专业的评测软,已经很难看到这种效率上的差别.

  另外有一点很重要的就是,手机也好,电脑也好,不论操作系统做的多好,多炫,最重要的是软件的支持。

  没有广大软件开发者的支持,没有众多的软件,再好的系统也白搭。

  JAVA和C++相比,执行效率上是有些差,但是JAVA的入门门槛比C++低,可以吸引更多的开发者,这一点非常重要。

  学习和精通C++的成本实在比JAVA要高太多了。

  haniklz (精彩的在这里****************)

  现在还停留在哪个语言好这种层次上的话,你确实应该认真学习一下了。

  java很差?你问问你老师看看。

  为什么android为选择java?就看到执行效率了吗?有没有想过什么叫开发效率。

  android短时间内3w应用java可谓功不可没。android如果仅仅是linux那么简单,最终可能也就落得和形形色色的linux移动发行版一个下场。

  同样的绚丽的界面,用C语言开发可能耗时几个月,发现菜单还没做好,java语言几个小时搞定。

  如果一定要追求效率为什么不直接arm汇编开发好了。

  微软的wp7已经确定没有原生c++开发,也是基于.net的托管代码,原因?具有虚拟机层有很多好处,很重要一点就是安全性。开发的发展最初是C+汇编,现在除了在特定领域(比如驱动开发)还有人用汇编吗?

  开发难度当然是越低越好,你问问现在业内的开发人员,谁愿意做symbian的程序开发烦不烦?我们公司同样的程序在两个平台同时开 发,symbian平台用了半年,android只用了不到3个月就进入测试期,如果不是仗着nokia的推广,明天symbian可能就不存在了。

  好吧,告诉楼主一个残酷的消息,qt程序的效率可没有你想的那么高R。

  android的虚拟机做过一定改进,是基于寄存器而不是基于栈的虚拟机,每个进程单独有虚拟机,版本路线图中未来也会加入jit,如果楼主还停留 在十几年前的java的运行效率的认识上,那就太失败了。多学习下,如果lz是业内人士的话,少点浮躁情绪,对你以后的发展有好处。

  另外提句NDK里面一直都有openelgs库。jni调用即可。android为什么会采用java + c开发模式,google的架构师懂的比你多,他们对这些的分析和权衡恐怕不是你一句java是垃圾得来的。

  还有现在不是硬件不够,而是硬件过剩了。

  c语言和java都用了很多年,说实话最看不起就是你们这些以为某某语言比某某语言高级的人了,每个语言都有它擅长的领域。比如你用c语言给我整几个web应用出来看看,看你会不会吐血。

  最后再提醒楼主一句,就算你要比,你也得说是 编译型语言和解释型语言的区别啊,恐怕你就知道个C语言把。。。你让苹果的object c情何以堪,微软wp7上的c#情何以堪。

  另外还有一点,ANDROID是支持C++开发的,google并没有完全封锁掉C++的接口。

  语言是表现形式,比如我也可以做个编译器把java编译成机器码,把c编译成字节码 。

  运行效率的区别是编译型语言和解释型语言的区别,上面的源代码何种形式并不是对效率的决定因素 。

  还有个重要的方面就是架构问题,qt只是图形库而已,其效率并不一定被android的图形库效率高 。

  android的设计并不是为单一硬件平台,而是未来可能根本无法想象的各种硬件,如果不是采用了java虚拟机,今天的android恐怕只有htc那几台机器在运行而已,其他厂商更是在忙于调试中吧,再等个三五年才上得了。
可以说不是java的话,android早就挂了,还谈什么未来。

  如果还在质疑android现在的开发模式性能不达标,建议去装个雷神3的移植版。

  然后你再找一台可以按这个帧数运行的诺基亚程序出来。

  milestone在硬件上最接近的机器,就是诺基亚的n900了,两者cpu/ram一样。n900的利于虚拟内存的因素,程序切换非常快。但可以看出雷神3在两者上的运行帧数相差并不大。

1

酷毙
4

雷人
2

鲜花

鸡蛋
2

漂亮

刚表态过的朋友 (9 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部