首页 > 编程语言 >对于Java平台的理解

对于Java平台的理解

时间:2023-01-28 15:24:49浏览次数:42  
标签:Java 平台 机器码 编译 编译器 理解 JVM 执行

谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?

  Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“一处编译,处处运行”(Write once,run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC,Garbage Collection),Java通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,我们不需要自己操心内存的分配回收。 

  我们日常会接触到JRE(Java Runtime Environment) 或者JDK(Java Development Kit)。JRE,也就是Java 运行环境,包含了JVM和Java类库,以及一些模块等。而JDK可以看作是JRE的一个超集,提供了更多工具比如编译器,各种诊断工具等。

  对于“Java 是解释执行”这句话,这样的说法不太准确。我们开发的源代码,首先通过Javac(编译器)编译成字节码(bytecode),然后,在运行时,通过Java 虚拟机(JVM)内嵌的解释器将字节码转换为最终的机器码。但是常见的JVM ,比如Oracle JDK 提供的Hotspot JVM,也提供了JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。

 

 

解释执行:将字节码一行一行地翻译为机器码执行。

编译执行:以方法为单位,将字节码一次性翻译为机器码后执行。

 

结论:目前主流的JVM 都是混合模式(-Xmixed),即解释运行 和编译运行配合使用。

 

 

 

补充--优缺点:

 

由于编译执行是将翻译过后的机器码保存下来,所以代码二次运行时不需要重新翻译,可以直接运行机器码,所以效率更快。解释执行因为不需要提前翻译,所以启动更快。

 

标签:Java,平台,机器码,编译,编译器,理解,JVM,执行
From: https://www.cnblogs.com/slzy/p/17070352.html

相关文章

  • java书写并建立txt日志文件
    /*建立txt,并写入日志文件*/publicstaticvoidlogWrite(Stringdata,Stringname){//System.out.println("写入"+name+"开始");Calend......
  • 上古神兵,先天至宝,Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最
    毫无疑问,我们生活在编辑器的最好年代,Vim是仅在Vi之下的神级编辑器,而脱胎于Vim的NeoVim则是这个时代最好的编辑器,没有之一。异步支持、更好的内存管理、更快的渲染速度、更......
  • java 环境配置(一) jdk8 安装
    1.下载JDK Oracle官网:Oracle|CloudApplicationsandCloudPlatformjava  下载  找到想要下载的版本这里我选择的是老版本java8下载完成   ......
  • 后端跨域问题导致java.io.IOException: UT010029: Stream is closed解决办法
    转载自:https://blog.csdn.net/qq_45925197/article/details/126708024背景下载文件压缩成zip包接口,postman自测没问题,但在和前端联调的时候前端就会出现如下跨域的报错......
  • JavaScript 获取用户选择的文本
    constgetSelectedText=()=>window.getSelection().toString();getSelectedText();JQuery实例:$(function(){constgetSelectedText=()=>window.getSelect......
  • Java四大主流开源工作流引擎分析Shark,osworkflow,jbpm,jflow
     首先,这个评论是我从网上,书中,搜索和整理出来的,也许有技术点上的错误点,也许理解没那么深入。但是我是秉着学习的态度加以评论,学习,希望对大家有用,进入正题!   四大主流工......
  • 理解MySQL的THREAD_ID和PROCESSLIST_ID
    每个线程至少有两个唯一标识符,一个是操作系统线程ID,另一个是MySQL内部线程ID,MySQL内部线程ID在大多数performance_schema表中以thread_id命名。每个前台线程都有一个指定的p......
  • android运行java
    1、java代码打包成jar1.手动打包可直接执行的jar包1)先使用javac编译java文件,得到class文件2)新建文件,名字任起,比如可以叫manifest,内容如下(注意:1.冒号后面加一个空......
  • java 创建 编辑 PDF
    JAVA操作PDF开源项目操作PDF的JAR主要分成两类,分别是iText系列和ApachePDFBox系列1.1iTextPDF:iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText......
  • Java:注解
    注解还记得刚开始学注解时,很天真。傻傻以为创建一个注解类,加到类、方法、属性上就能有某种功能。现在对注解的理解很简单:标记,可以被程序读取到的标记!(注释是程序不会去执......