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

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

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

!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语言那样直接编译成机器代码。当然,还有其他一些因素,但我认为以上几点是最重要的。

c语言,编译、预编译区别?

预编译,也称为预处理,是在编译之前完成的。它主要处理宏替换、文件包含和条件编译。预编译的结果仍然是C程序,而不是机器语言。编译就是把C程序变成机器语言

标签:

最新文章

  1. 网络营销报告范文 如何快速入门网络营销?2025-03-26
  2. 微信电脑登录怎么新建群聊 小红书怎么建群聊?2025-03-21
  3. 淮北矿务局孙方是萧县哪里人(淮北有多少煤矿?)2025-03-18
  4. 平顶山顺丰一天能到吗(顺丰快递漯河到平顶山要多久?)2025-03-25
  5. 提升电脑操作效率的实用技巧2025-03-08
  6. 墨刀可以自动生成流程图吗 万兴科技最近发力办公软件?看到产品频频更新?2025-03-12
  7. 电子阅读网站源码 源码网2025-03-31
  8. 如何删除Windows.old文件2025-03-06
  9. 如何批量加粗Word文档中指定的文字或字符2025-03-12
  10. 如何在Win10电脑中更换桌面背景图或轮流播放图片2025-03-08
  11. 黑皮诺干红葡萄酒 南非白葡萄酒十大排名?2025-03-23
  12. java java的反射到底是有什么用处?怎么用?2025-03-31
  13. 海康威视硬盘录像机初始密码 海康录像机设备域名是什么?2025-03-27
  14. 如何在苹果手机Safari浏览器中设置电脑版网页2025-03-07
  15. 最全伴奏音乐软件 有什么录音软件可以加伴奏?2025-03-29
  16. 华为nova5的语音唤醒功能在哪里 华为nova5语音唤醒功能在哪里2025-03-11
  17. 怎么查询三星s8激活时间2025-03-14
  18. PPT文本框渐变边框设置技巧2025-03-08
  19. 广播地址的计算公式 ip地址段怎么求?2025-03-14
  20. 一个人能实名认证几个支付宝账号 一个人执照可以做几个支付宝?2025-03-16
  21. Premiere音频被删除了如何恢复让音画同步2025-03-07
  22. 网页设计配色方案 excel怎么设计标题颜色突出?2025-03-31
  23. 爱格板材是什么 爱格板是什么板材?2025-03-22
  24. 提升文档排版效果:让文字紧挨着表格2025-03-08
  25. 从回收站删除的文件怎么恢复 手机文件管理回收站的文件如何恢复?2025-03-24
  26. winrar替换图片教程 WinRAR替换图片教程2025-03-09
  27. 生成pdf的小程序 altiumdesigner10怎么生成PDF?2025-03-18
  28. 手机桌面上的图标怎么重新布置2025-03-08
  29. web前端开发是干嘛的 前端为什么要使用node?2025-04-01
  30. 西红柿的营养 西红柿含哪些维生素?2025-03-23
优质自媒体
优质自媒体 微信号:优质自媒体 扫描二维码关注公众号
优质自媒体

小编推荐

  1. 1 mysqldump只导出表数据 如何导出mysql的库里所有表结构?

    如何导出mysql的库里所有表结构? www.2cto.com导出整个数据库结构(不包括数据)/usr/local/MySQL/bin/mysqldump-uroot-D entry>转储.sql导出单个数据表结构(无数据)mysqld

  2. 2 "的" “的”,“地”,“得”三个字怎么使用呢?

    “的”,“地”,“得”三个字怎么使用呢?“Di de”的用法不同于“Di de”。美丽的花朵在微笑,绿草在弯腰,清澈的河流向东流动,蓝天白云在空中漂浮,暖风轻轻吹拂,绿叶摇头晃脑,小鱼在水中游动,红日在天空照耀,左边的大地,地球在右边,站在

  3. 3 python3 matlab中频谱搬移用哪个函数?

    matlab中频谱搬移用哪个函数?一般情况下,xa(a>0)表示向右移动单元,xa(a>0)表示向左移动单元二次函数f(x)=ax 2 BX C,新函数g(x)=f(x-k)=a(x-k)2 B(x-k)C=ax 2-2akx AK

  4. 4 microsoft账户是干嘛的 电脑的Microsoft是什么意思?

    电脑的Microsoft是什么意思?这是微软的英文名字。我们使用word2003、media player、ie甚至windows操作系统,这些都是本公司生产的windows是微软的windows操作系统软件产品。我们的大多数电脑都安装了w

  5. 5 天翼是电信 天翼网关2.0是“光猫 智能路由器”的集合体,可是信号覆盖还是略弱,有办法解决吗?

    天翼网关2.0是“光猫 智能路由器”的集合体,可是信号覆盖还是略弱,有办法解决吗?当你看到问题时,不要说是你。只要你安装的是电信宽带免费、光环光纤猫和无线路由的组合,不要告诉安装人员调整WiFi强度,更不要说隔墙,我的光纤猫就放在大厅里,而

  6. 6 微信小程序登录不上怎么办 微信小程序怎么添加?

    微信小程序怎么添加?如何在移动桌面上添加微信小程序,只需点击应用程序界面右上角的“…”即可找到“发送到桌面”选项。添加后,我们可以通过桌面快捷方式进入applet,无需从微信启动。但是,有时小程序无法添加到桌面。发生什么事?在Android

  7. 7 input的type类型file 如何定义input标签中type=

    如何定义input标签中type=可以用css3中新增的选择器“[attribute=value]”来同时选中指定的属性的标签。1、新建html文档,添加5个input标签,其中第一个和最后一个“type”属性的属性值为“text”:2、在

  8. 8 下载的文件在哪里找 迅雷下载的视频怎么保存到本地?

    迅雷下载的视频怎么保存到本地?首先,打开手机上的本地文件管理,点击[system folder][Android]文件夹。第二步:点击【数据文件夹】【数据】找到迅雷的数据【迅雷】文件夹。第三:进入thunderbolt数据文件夹,点击文件进

  9. 9 表格中ref是什么意思 spring property标签中的ref属性和ref标签有什么不同? 如下:

    spring property标签中的ref属性和ref标签有什么不同? 如下:spring的配置文件中可能有多个<propertyname=“a”ref=“B”/>,即在当前配置文件中查找bean,即在全局中查找beanref信号

  10. 10 拧钥匙哒哒声打不着火 汽车仪表故障灯亮,如何清除?

    汽车仪表故障灯亮,如何清除?1. 将车辆停放在安全的地方,关闭发动机并拔下蓄电池负极连接线。2. 等待15秒后安装,故障灯亮后消失。不同的汽车仪表板仪表不尽相同,但一般汽车的常规仪表有车速表、转速表、油压表、水温表、燃油表、充电表等。在现代

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