大家好,今天小编关注到一个比较有意思的话题,就是关于java语言底层的问题,于是小编就整理了3个相关介绍Java语言底层的解答,让我们一起看看吧。
为什么安卓不去掉JAVA语言底层?
这就是历史的选择,当年Android为了拉拢更多的开发者建立生态选择了Java语言,现在全套API和设计以及生态都在这个环境下,即使把Java语言换成Kotlin兼容性这么高的操作,要普及所有app可能还要几年,更别说另起炉灶把现在的开发者全部抛弃掉。
此外,我认为Android出现“卡”的问题,一方面是UI层面对物理模拟的高性能API提供不足,导致很多效果动画需要开发者自己实现。另一方面是开发者不按标准开发程序,都想在后台占用CPU导致的。从绝对性能来看,Android机型的CPU性能也是不如同时期iOS设备的。
而题主认为去掉Java的整套Runtime就能提高性能我认为也是不成立或是弊大于利的。从软件优化角度来讲,这套VM运行环境性能也没有想象的弱,在Server级别,现在普通开发者开发的Java程序不考虑内存占用的话,不一定比水平一般cpp开发者写的程序性能弱,对于GC算法,目前也有低延迟的算法可供提供和推广。目前Android设备普遍内存较大,对VM可能多占用的内存也有很好的补充。
退一万步说,程序中真的存在某一块计算密集型的程序造成的热点且在Java层面不可能优化的话,开发者也可以提供native的高性能模块供Java层调用。事实上,考虑到增加反编译的门槛和难度以及跨平台的复用性,目前很多App的核心模块都是native实现,您可以随便解包一个apk软件,您可以发现大多数App都提供了跨多个CPU的so库,这些库模块就是开发者针对该App的native代码编译后的结果(这些文件类似于Windows上的dll文件)。
底层算法基本知识?
底层算法的基本知识:底层算法用底层代码来表达。底层代码是指被封装好的代码,底层代码写的就是比较原始,比较基础的代码。底层代码编写是非常接近机器的编程,使用底层开发语言(如C或汇编)。这与使用高级语言(例如Python,Java)的程序员进行编程不同。
对于java来说,底层代码一般是指框架的实现代码,这些代码一般都是一些常用代码或比较接近于原始的代码,这些代码封装好,可以方便复用和调用。
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
JAVA虚拟机,俗称JVM(JAVA Virtual Machine)!是运行JAVA代码的抽象计算机!
我们知道JAVA最重要的特性就是跨平台,借此能让JAVA运行在智能手表,,游戏机,电脑等大部分的平台上,其原因就是因为JAVA源码运行在JVM中,JVM提供了跨平台实现!
为什么JAVA能跨平台?不同的操作系统会有不同的指令集,将高级编程语言转化为汇编语言,进一步的解释为只有0和1机器码由操作系统执行,而JAVA官方根据不同的操作系统定制了一套不同的JVM,能把相同的源码根据不同的指令集解释为不同的机器码以执行!真正实现了与平台无关,让JAVA开发者脱离底层的语言开发,而专注于业务应用开发!
JVM模拟了一套硬件计算机环境,有一套自己的字节码指令集,堆,栈,方法区,包括寄存器等!
在JAVA类加载和运行的时候,会把对象引用,实例对象,静态变量,方法,类等放入不同的区域,提供运行计算式快速的存取数据!
区别于大部分其他的语言,JAVA封装了对于内存的管理,通过提供的垃圾算法(标记清除,标记整理,复制算法等)对内存自动进行回收!
关于JVM的垃圾收集器,内部回收算法,JVM如何运行等,市面上有大量的书籍,因为JVM与运行效率,吞吐量,高并发等息息相关,所以通常为JAVA技术面试的必问知识点,值得大家用功掌握,更多的技术分享,敬请关注。。
到此,以上就是小编对于java语言底层的问题就介绍到这了,希望介绍关于java语言底层的3点解答对大家有用。