
大家好,今天小编关注到一个比较有意思的话题,就是关于java语言只支持的问题,于是小编就整理了3个相关介绍Java语言只支持的解答,让我们一起看看吧。
安卓为什么用J***a语言不用C语言?
我做移动互联开发多年,也做过不少大大小小的Android项目,所以我来回答一下这个问题。
众所周知,Google选择了J***a语言作为Android平台的开发语言,而且并没有使用Oracle公司的JVM,而是自己写了独立的编译器(DVM)。而且DVM与JVM的还是比较明显的,JVM是基于栈的,而DVM是基于寄存器的,所以从速度上来说,DVM理论上要更快一些。另外,JVM执行的是class文件,而DVM执行的是dex文件,这就说明JVM与DVM在执行的字节码方面也是不同的。
从这些区别上来看,Google对J***a的改造还是比较大的,只是在语法上保留了J***a语言的。在我看来,Google为安卓平台选择J***a语言有以下几个方面的原因:
第一,J***a语言有较为广泛的程序员基础。由于目前J***a语言的应用领域十分广泛,所以使用J***a语言能迅速建立庞大的开发群体。
第二,J***a语言的生态比较健全。Android平台的功能越来越强大,这就需要有一个能与之匹配的编程语言,而编程语言自身的生态就显得比较重要的,而J***a语言的生态环境是比较健全的。
目前我们在实际的开发过程中发现,用J***a语言的Android平台在某些性能指标上,明显要优于iOS平台。比如大列表的装载问题,Android平台是没有问题的,但是同样的操作在iOS系统下就会出现崩溃的问题。
我的研究方向是大数据和人工智能,目前也在带大数据方向的研究生,我会陆续在头条上写一些关于大数据方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。
如果有软件开发方面的问题,或者是考研方面的问题,也可以咨询我。
谢谢!
谢谢邀请
首先安卓是可以使用C语言写代码的
题主应该是接触安卓比较少,其实安卓本身底层是一个linux的系统,既然是Linux系统,那么必然可以使用Linux上面的特性了;不知道有没有网友用过第一代安卓手机,我的第一个安卓手机是中兴N760,很古老的手机了,12年的时候,在学校里面的营业厅,充700元话费,送一台手机,当时的这个手机,上面有一个terminal,你没听错,这个手机真的搭载了一个terminal,在这个terminal里面,你可以属于Linux常用的命令。就是下面这个货。
既然安卓系统的底层是一个Linux系统,如何才能用C/c++编程放到上面跑呢?安卓的编译器里面,有一个叫做NDK的东西,此神器就是解决如何用c/C++开发的问题,有兴趣的可以了解一下。
顺便说一下,一般来说对于CPU密集型的程序,追求效率,都基本上会选择用C/C++开发,然后ndk编译,比如输入法,需要再本地做音字转换,效率要求极高,所以用c语言研发引擎部分。
内核是linux,就是c啊,为什么要搞虚拟机为什么要搞系统,就好比搞基础建设啊,修高速,建铁路,架电网,通网络,为什么?有了这些基础才能跑汽车,才能网购啊,搞开发一样,j***a好比汽车,c好比牛车,有高速肯定汽车好,泥洼路肯定牛车好啊
为什么j***a自带的一些工具类不使用c语言来写
首先,j***a语言要在很多平台上运行,用c语言写的话,你得每个平台都编译一次,每个平台都要[_a***_]优化,麻不麻烦,而且产生不同的好几个库,增大运行时体积。
第二,并不是说c语言写就一定好,用c写很考验程序员的编程水平,作为一个工具类,就要追求性能,考虑内存、指针、代码优化等等复杂问题。而目前jit的优化功能已经非常强大了,在很多情况下运行速度与c语言相差无几。
第三,这些代码都要被用户的j***a代码调用,如果要在c实现那么这些工具类就必须要弄一套jni调用,会增加不必要的运行时开销,代码复杂度增加。另外如果要在c实现,那就意味着放弃了已经写好的j***a优良特点不用,捡了芝麻丢了西瓜,例如垃圾回收,异常捕捉等非常方便的特性。
第四,方便调试,设想,***如工具类是用c写的,一个j***a程序员调用这个库,结果出异常了,你得从j***a调试器换到支持c的调试器,例如gdb,lldb等等,然后学习怎么调试,找c里面的bug,这对于一个j***a程序员来说,是非常痛苦的。而用如果j***a写的话直接就可以调试,并且可以使用j***a的异常机制。
如果你j***a和c都会那当然是可以,如果不会c那就还是老老实实玩j***a把,就说一点,调用的C肯定编译后的,逻辑肯定看不了,报个错,你不得当场去世,要简单拓展一下,也是当场懵逼,j***a写你好歹能看懂一点,这个方式是可行的,但并不适合只会j***a的程序员
Android现在支持纯C/C++ 语言开发应用吗?还需要ART/J***a虚拟机吗?
目前截止到2.3系统来看,最终安装的文件仍然是apk格式,界面和系统大多数功能均使用J***a开发,但是稍微高端的应用考虑到性能和安全性使用 C/C++是必要的,C/C++最终编译的so文件就相当于Windows下的dll动态库,需要一个宿主去加载调用,我们通过J***a的JNI去调用这些本地方法,目前从NDK的版本来看Google不断增强和开放C++在Android开发的用处,以保证和iPhone这种使用本地语言开发出来的软件体验度不能差距太大。
到此,以上就是小编对于j***a语言只支持的问题就介绍到这了,希望介绍关于j***a语言只支持的3点解答对大家有用。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。 转载请注明出处:http://www.rongung.com/post/40431.html