大家好,今天小编关注到一个比较有意思的话题,就是关于java公共语言运行时的问题,于是小编就整理了3个相关介绍Java公共语言运行时的解答,让我们一起看看吧。
有知道CLR是什么意思?
CLR是公共语言运行时,Common Language Runtime)和JAVA虚拟机一样也是一个运行时,它负责***管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
clr是什么意思?
CLR是公共语言运行库(CommonLanguageRuntime)和J***a虚拟机一样也是一个运行时环境,它负责***管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。CLR存在两种不同的翻译名称:公共语言运行库和公共语言运行时。
J***a能不能像C语言不通过JVM虚拟机直接编译成二进制机器码,让计算机直接运行?
C语言的编译过程如下:
C源程序-->预编译处理(.c)-->编译、优化程序(.s、.a***)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等),如图1所示。其实编译里面还包括词法分析、语法分析、语义分析,就不展开说了。
而J***a的可以分为两大步骤,如图2所示,第一是编译,这一过程就是调用的j***ac命令,编译成对应的.class文件。第二是解释执行,这一过程是调用的j***a命令,其实我理解的是调用了J***a里的jvm,即j***a虚拟机。JVM其实计算机把高级语言解析成机器码都会存在一个类似这样的中间件。在c#中,我知道先编译成CIL托管代码,然后Jit编译器在CLR(公共语言运行时)这样一个库下把托管代码解释成可执行文件.exe或者dll。现在我就把JVM看作是JIT编译器。把要执行的代码翻译给计算机听,然后机器执行,大致也就是这么个道理。当然了J***a程序还是通过解释器进行解释执行时,当JVM发现某个方法或代码块运行特别频繁的时候,就会认为这是“热点代码”(Hot Spot Code)。然后JIT会把部分“热点代码”翻译成本地机器相关的机器码,并进行优化,然后再把翻译后的机器码缓存起来,以备下次使用。总的来说还是需要JVM。
如果你想把J***a编译成二进制机器码,那要重新开发一个编译器,将J***a源代码通过编译(包括词法分析、语法分析、语义分析,中间代码,优化等)生成汇编语言,然后再转化成机器码。这样以来,每个平台(X86,ARM,MIPS,PowerPC等)都需要重新编译生成相应平台的机器码,而且如果没有JVM,就没有GC(垃圾自动回收)功能了。
各有各的优缺点,J***a目前很多人使用,就在于它的通用性好,可以跨平台直接移植,只要编译一次,不管你是什么操作系统,windows,mac,linux等等,只要有安装J***a虚拟机(JVM)就可以了。而且目前J***A整个生态圈比较完备,JDK和开发平台和工具也很多,开发的效率高,但是成也萧何败萧何,正因为JVM的存在,生成的机器码效率没有汇编和C的高。再说说C语言,本人上大学其实接触最早的就是C语言,目前的嵌入式系统中,C语言仍然是使用最广泛的语言。后来C语言发展而来的C++,目前也有大热的趋势,比如现在大热的深度学习开发平台tensorflow和pytorch,底层就是用C++开发的,因为C/C++的运行效率确实很高。给你张配图。
到此,以上就是小编对于j***a公共语言运行时的问题就介绍到这了,希望介绍关于j***a公共语言运行时的3点解答对大家有用。