java java虚拟机是用什么语言编写的?它的原理谁能通俗的讲出来吗?

java虚拟机是用什么语言编写的?它的原理谁能通俗的讲出来吗?

Java虚拟机的功能是执行Java字节码,其编码实现是一个死循环。每个循环都是获取字节码并执行字节码的过程,因此与其他程序没有本质区别。主流的JavaVM大多是用C语言实现的,然后用汇编语言辅助实现,用Java实现JavaVM的情况有一些,但不多。

java java虚拟机是用什么语言编写的?它的原理谁能通俗的讲出来吗?

下面是使用C语言在智能设备中实现虚拟机的一个片段。

此代码是短加法字节码的实现。

这段代码只是获取字节码并执行它。你认为JavaVM就是这样吗。

为了优化虚拟机的效率,很多人选择用汇编的方式重写执行频率高的代码。

小结是C语言实现的许多,将与汇编结合起来作为辅助工具。有其他语言,但不是主流。

Java能不能像C语言不通过JVM虚拟机直接编译成二进制机器码,让计算机直接运行?

从语言设计的角度看,可以通过重新设计编译器来实现,但从工程实践的角度看是不可行的。

首先,Java语言最大的特点是跨平台的可移植性,一次开发,一次编译,多平台执行。这个特性是通过JVM(Java虚拟机)实现的。如果重写编译器直接编译成C语言这样的可执行程序,它将失去跨平台特性。

其次,Java语言在设计之初就被设计成严重依赖JRE(Java运行时环境)的语言。一些语言设计缺陷必须依靠JVM来解决,比如GC(垃圾收集)。我们知道Java语言没有内存恢复能力,所以我们不得不依赖JVM。在工程实践中,如果软件不能进行内存恢复,后果将是灾难性的。

第三,Java语言是面向对象的,不同于同样面向对象的C语言,Java还具有动态特性。

它允许程序动态加载运行过程中所需的类,这在面向对象编程中是C语言无法实现的。在C语言编程过程中,每次向类中添加实例变量或成员函数时,引用该类的所有子类都必须重新编译,否则会导致程序崩溃。Java从以下几个方面采取措施来解决这个问题。java编译器没有将对实例变量和成员函数的引用编译成数值引用,而是将符号引用信息保存在字节码中并传递给解释器,解释器在动态连接类后将符号引用信息转换成数值偏移量。这样,在内存中生成的对象不会在编译期间确定,而是延迟到运行时并由解释器确定。这样,更新类中的变量和方法不会影响现有代码。在解释和执行字节码时,只有在出现新名称时才执行一次符号信息的搜索和转换,然后才能全速执行代码。在运行时确定引用的好处是可以使用更新的类,而不用担心影响原始代码。如果程序连接到网络中另一个系统中的类,则该类的所有者可以自由更新该类,而不会使引用该类的任何程序崩溃。这完全取决于JRE。

以上几点决定了Java不能像C语言那样直接编译成机器代码。当然,还有其他一些因素,但我认为以上几点是最重要的。

标签:

最新文章

  1. 如何让百度帮我推广引流 网络推广精准引流难吗?2025-03-30
  2. h5封装app ios不能上架 一直做java企业开发,现在自己创业了,感觉java开发太慢了,有没有好工具?2025-03-25
  3. 三角函数的正切值 正弦值与角度的计算公式?2025-03-29
  4. 如何在360安全卫士中开启主界面自动缩放功能2025-03-09
  5. 如何更改Adobe Acrobat中的下划线颜色2025-03-06
  6. 阜阳成效中学多久回家 阜阳成效中学怎么样啊?2025-03-25
  7. 豆腐怎么做好吃又简单(豆腐做法简单又好吃又好看?)2025-03-18
  8. qq浏览器中怎么用f12查看源代码 怎样获取软件的源代码?2025-03-14
  9. 如何在iPhone 6上关闭自动系统更新2025-03-08
  10. 如何单独设置一页的页眉页脚2025-03-14
  11. excel函数求最大值和最小值公式 excel计算数学期望的函数?2025-03-16
  12. ipad怎么删除小黑点里设置的图标2025-03-08
  13. excel表格如何建立查询键 excel查找工具栏消失了?2025-03-11
  14. word怎么把字体全部加粗 word固定文字加粗怎么设置?2025-03-24
  15. 域名转让后需要重新备案吗 爱名网域名怎么过户?2025-03-28
  16. 优化PPT内容:如何添加形状轮廓效果2025-03-08
  17. 注册公司网站查询 怎么制作一个公司网页?2025-03-29
  18. 如何利用光影魔术手简单添加文字信息到图片2025-03-08
  19. 联想bios设置启动顺序 电脑BIOS启动项找不到硬盘,该怎么办?2025-03-28
  20. 一次胃镜保几年平安 胃溃疡怎么办?2025-03-29
  21. 一台电脑怎么挖矿 比特币1枚35万,一台家用电脑24小时挖矿,挖到1个要多久?2025-03-30
  22. 网易企业邮箱客服电话 企业邮箱注册方法有哪些?2025-03-28
  23. sql怎么连接三个表 SQL语句的where如何拼接多个AND条件OR条件?2025-03-16
  24. 东莞总站有长途大巴汽车吗 东莞市汽车总站有到广州的大巴吗?2025-03-18
  25. 朋友圈的最新规则 对方显示微信违反规则是什么意思?2025-03-13
  26. java空指针异常举例 java空指针异常解决办法?2025-03-30
  27. 根号二在手机怎么打 一建计算器开根号方法?2025-03-23
  28. ppt怎么添加字幕式动画效果 ppt中文字如何滚幕?2025-03-14
  29. 阿里宝卡 阿里收购科技巨头自主研发AI芯片,有希望打破美国技术垄断吗?2025-03-28
  30. 和刷刷看类似的app 最佳替代品2025-03-10
优质自媒体
优质自媒体 微信号:优质自媒体 扫描二维码关注公众号
优质自媒体

小编推荐

  1. 1 springboot接口测试用例 大家一般用什么工具测试HTTP和json接口?

    大家一般用什么工具测试HTTP和json接口?Soupui,这是最常用的接口测试工具。在我们的日常开发过程中,大多数是两种类型的接口:soap API和rest API。Soupui对这两个接口都有很好的支持,而且它还支持Amazon We

  2. 2 企业邮箱什么意思 什么是企业邮箱?企业邮箱有什么作用?

    什么是企业邮箱?企业邮箱有什么作用?企业电子邮件是以自己的域名作为后缀的收费电子邮件。例如,企业的域名是abc网站则企业邮箱的电子邮件地址为abc@abc.com. 企业邮箱对企业形象意义重大,其功能往往比普通免费邮箱或收费邮箱更丰富。企业

  3. 3 ui设计免费自学网站 自学设计有哪些好用的网站?

    自学设计有哪些好用的网站?我要自学网,软件自学网,网易云教室,腾讯教室,中国大学MOOC这些都不错学UI设计好,还是网页设计好?感谢您的邀请!作为IT行业从业者和计算机专业教育者,让我回答这个问题。首先,当前的UI设计和web设计(前端开发

  4. 4 if语句的用法例子 c语言if语句的用法?

    c语言if语句的用法?1. If(表达式)语句。例如:if(X>y)printf(%d”,X)2,if(expression)statement 1 else statement 2,例如:if(X>y)printf(%d”,X)e

  5. 5 创业做什么好 能用C语言做出一个图形化界面是什么水平?

    能用C语言做出一个图形化界面是什么水平?可以用C语言制作一个图形界面,说明您对C语言图形库有一个大致的掌握。如果能实现图形绘制、文本编辑、文本滚动、字体放大及定时显示、自绘进度条、自绘按钮、显示存储区不闪烁刷新、区域填充、透明处理等功能,说

  6. 6 java修改文件名称 如何将odoo模块修改成自适应移动端?

    如何将odoo模块修改成自适应移动端?有相应的Odoo模块,名称是Web Responsive,安装了之后可以自动适应移动端界面。Odoo模块网里面有这个模块。 openerp为什么改名为Odoo,前途会更好么?下面谈一下我个人对此次OE更

  7. 7 宣传页模板素材 网站里的死链接怎么处理?

    网站里的死链接怎么处理?在网站的运行中,不可避免的会出现死链接,这不仅会影响用户体验,还会影响搜索引擎的友好性,导致网站排名的下降。要想了解死链接的处理方法,首先要知道死链接是如何生成的,下面就详细了解一下吧!1、如何生成死链接1。网站改版

  8. 8 csgo选手simple资料 simple是哪个战队的?

    simple是哪个战队的?Simple现在为导航团队效力。Simple,原名Oleksandr kostyliev,绰号Sasha,1997年10月2日出生于乌克兰。萨沙走上了CS之路,类似于许多职业兄弟。在哥哥的领导下,他与CS取得了联系

  9. 9 微信小程序怎么做 用java发送http请求,ping不通该服务器的ip。是不是就发送不成功?java新手?

    用java发送http请求,ping不通该服务器的ip。是不是就发送不成功?java新手?Ping程序基于ICMP协议,但ICMP不起作用。这并不意味着IP协议不起作用,更不用说TCP了。HTTP是基于TCP的

  10. 10 全局透明壁纸app下载苹果 苹果6splus怎么设置全局透明壁纸啊,有没有知道的?

    苹果6splus怎么设置全局透明壁纸啊,有没有知道的?让我们向您展示如何将iPhone和苹果的壁纸设置为全球透明。详细信息如下:1。首先,我们在百度搜索[透明墙纸分享],然后找到我们喜欢的透明墙纸;2。找到后,我们把壁纸下载到电脑上;3。然

Copyright 2025 优质自媒体,让大家了解更多图文资讯!百度地图 360地图