大家好,今天小编关注到一个比较有意思的话题,就是关于java 语言 原理的问题,于是小编就整理了2个相关介绍j***a 语言 原理的解答,让我们一起看看吧。
jvm是如何实现的?
编程语言和自然语言类似,都是为了交流,自然语言用于跟人交流,程序语言则用于指示机器。jvm其实也就是一个程序,这个程序能接受你的J***a代码,然后根据你的意愿执行一系列操作。举个例子,你可以写一个这样的程序,这个程序接受用户输入一句话,如果用户输入“beep”则调用机器的鸣叫,如果用户输入“exit”,则关掉本程序。在这个例子中,其实用户写的“beep”和“exit”就充当了程序语言的角色,只不过这门语言过于简单因此不可能普及。而j***a则具有完善的体系能够支持你表达任何意愿,然后jvm理解你的j***a语言并执行相应操作,这就是程序语言的原理。当然j***a还有优化的方案,它的编译器将你的j***a语言翻译成字节码,因为jvm执行字节码的速度比直接理解j***a代码要快很多,后来的版本还引入了JIT技术,实时将字节码再编译成机器码,这样就能让机器直接执行指令而不需要jvm去解释。至于垃圾收集器,就是jvm维护着每一个对象的引用(可以理解成C++里面的指针),根据一定的算法判断其是否可达,如果这个引用不可达(也就是程序的后续部分已经无法获取这个引用,比如说已超出block范围了)那么就清除这个内存对象。这样的好处是能避免由于程序员的疏忽引起的内存泄露,缺点是内存的清理不够即时,因而无用的对象常常会占据内存很长时间。你也可以在C++里实现垃圾回收器,思路是写一个用于管理内存的类,然后程序里不再用new来新建对象,而是用这个类来产生对象,类内部拥有这个对象的指针,并在适当的时候delete它,这样就实现垃圾自动回收了,当然要写这样一个类是很困难的事。
j***a虚拟机是用什么语言编写的?它的原理谁能通俗的讲出来吗?
C ! C++可能要少一些。但是核心部分一定是C的代码。所以是C占多数, 要调用操作系统的一些都东西 操作系统基本都是c搞的。因为只有C和C++才能访问内存的堆栈等等结构,还有利用指针,IO等技术,通过JVM的底层可以看到,里面设计到IO流和网络的部分都是用NATIVE声明的类和方法,NATIVE是专门调用其他语言而用的一种机制.
j***a虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。J***a虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得J***a程序只需生成在J***a虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
J***A虚拟机是C++编写的。
为什么有J***A虚拟机?
答:一般的高级语言如果要在不同的平台上(windows,mac,android,ios等)运行,至少需要编译成不同的目标代码,J***A虚拟机是跨平台的,不需要重新编译来适应操作系统平台。经过J***A虚拟机编译过的程序直接就可以跨平台运行起来了。
J***A虚拟机借用的是本地(网络)设备的ROM,RAM,I/O来运行的。
说白了,就是一个屏蔽操作系统的子“操作系统”。
水平有限,供参考!
到此,以上就是小编对于j***a 语言 原理的问题就介绍到这了,希望介绍关于j***a 语言 原理的2点解答对大家有用。