java代码是怎么运行的_java代码是什么

java代码是怎么运行的_java代码是什么1.Java代码有很多不同的运行方式1)可以在开发工具中运行2)可以双击执行jar文件运行,3)也可以在命令行中运行4)甚至可以在网页中运行这些执行方式都离不开JRE,也就是Java的运

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

 

 

 

1.Java代码有很多 不同的运行方式

  1)可以在开发工具中运行

  2)可以双击执行jar文件运行,

  3)也可以在命令行中运行

  4)甚至可以在网页中运行

  这些执行方式都离不开JRE ,也就是Java的运行环境。JRE仅包含运行Java程序的必须组件,包括Java虚拟机以及Java核心类库。Java程序员经常接触到的JDK同样包含JRE,并且还附带了一些开发、诊断工具

2.为什么Java要在虚拟机里运行

  Java作为一门高级程序语言,他的语法非常复杂,抽象程度也很高。直接在硬件上运行这种复杂的程序并不现实。所以在运行Java程序之前,我们需要进行一番转化。

  这个转化具体是怎么操作的呢?

  当前的主流思想,就是设计一个面向Java语言特性的虚拟机,并通过编译器将Java程序转换成哎虚拟机所能识别的指令序列,也称为Java字节码。(Java字节码指令的操作码opcode被固定为一个字节)。

  Java =写的helloword程序编译而成 的字节码。都是一个个字节组成的

# 最左列是偏移;中间列是给虚拟机读的机器码;最右列是给人读的代码
0x00:  b2 00 02         getstatic java.lang.System.out
0x03:  12 03            ldc "Hello, World!"
0x05:  b6 00 04         invokevirtual java.io.PrintStream.println
0x08:  b1               return

  Java 虚拟机可以由硬件实现 [1],但更为常见的是在各个现有平台(如windows、liunx)上提供软件实现。这样做的意义就是,一旦一个程序被转换成Java 字节码,那么他便可以在不同平台上的虚拟机实现运行。(一次编写,到处运行)。

  虚拟机的另外一个好处是他带来了一个托管环境(Managed Runtime)。他能够代替我们处理一些代码中的冗长而容易出错的部分。其中最广为人知的内存管理和垃圾回收。除此之外还提供了数组越界、动态类型、安全权限等动态检测,是我们免于书写这些无关业务逻辑的代码。

 3.Java虚拟机具体是怎样运行Java字节码的

  执行Java代码首先需要将他编译成class文件加载到Java虚拟机中。加载后的Java类会被存放于方法区(method area).实际运行时,虚拟机会执行方法区内的代码。Java虚拟机同样会在内存中划分出堆和栈来存储运行时数据。

  java代码是怎么运行的_java代码是什么

  在运行过程当中,每当调用一个Java方法,Java虚拟机会在当前线程的Java方法栈中生产一个栈帧。用于存放局部变量以及字节码的操作数。这个栈帧大小是提前计算好的,而且栈帧在内存空间里可以不是连续分布的。

  当退出当前执行的方法时,不管是正常返回还是异常返回,虚拟机均会弹出当前线程的当前栈帧,并将之舍去。

  Java字节码是无法执行的。因此,Java虚拟机需要将字节码翻译成机器码。在hotspot里面,有两种编译方式:第一种是解释执行,逐条将字节码翻译成机器码并执行;第二种是即时编译,讲一个方法中包含的所有字节码编译成机器码后执行。

java代码是怎么运行的_java代码是什么

  前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。hotspot默认采用混合模式,综合了解执行和即使编译两者的优点。他先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。

  4.Java虚拟机的运行效率究竟如何

    HotSpot采用了多种技术来提升启动性能以及峰值性能,即时编译便是其中最终要的技术之一。即时编译建立在程序符合二八定律的假设上,也即是百分之二十的代码占据了百分之八十的计算机资源。

  对于大部分的不常用的代码,我们无需耗费时间将其编译成机器码,而是采取解释执行的方式运行;另一方面对于仅占据小部分的带点代码,我们则可以将其编译成机器码,已达到理想的运行速度。

5.总结

  之所以要在虚拟机中运行,是他提供了可移植性。一旦Java代码被编译成Java字节码,变可以在不同平台上运行,虚拟机还提供了一个代码托管环境,代替我们处理部分冗长的代而且容易出错的事务。

  Java虚拟机将运行时内存区域划分为五个部分,分别为方法区、堆、pc寄存器、Java方法栈和本地方法栈。Java程序编译而成的calss文件,需要先加载至方法区中,Java虚拟机才能运行。

  为了提高效率,标准jdk中的hotspot虚拟机采用的是一种混合执行的策略。他会解释执行Java字节码,然后会将其中反复执行的热点代码,以方法为单位进行即时编译,编译成机器码后直接运行在底层硬件之上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166981.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Delphi XE5 FireMonkey移动开发示例:粒子系统

    Delphi XE5 FireMonkey移动开发示例:粒子系统这个例子是参照Processing中的例子写的。  测试结果:在Windows7上,脱离开发环境的性能与Processing相当,在Android上表现良好。 源码如下:  unitExample.Particles;interfaceusesSystem.SysUtils,System.Types,System.UITypes,System.Classes,

    2022年7月18日
    18
  • PhpStorm 2021.4.11 x64激活码【在线破解激活】

    PhpStorm 2021.4.11 x64激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    52
  • CSS导航条制作心得

    CSS导航条制作心得今天学习了导航条的制作,感觉收获很大!学习了一段时间的css和html。之前都是在慕课网上面看视频学习的,感觉收获不是特别大,有一点慢,效率不高。学东西还是得边做边学变想,学习编程最好能够不断地实践,毕竟实践出真知。学习了这个作者的文章http://www.missyuan.com/thread-438839-1-1.html    1.导航条放于div容器中——-ui和li来写

    2022年7月22日
    17
  • osip安装 与使用

    osip安装 与使用Normal07.8磅02falsefalsefalseMicrosoftInternetExplorer4

    2022年6月18日
    26
  • labview噪声发生器_labview示波器显示两个波形

    labview噪声发生器_labview示波器显示两个波形当今的电子元器件与过去相比,开关切换速度更快,斜率(slewrate)更大、每个封装包含的有源针脚数量更多,信号摆动更小。因此,设计者更加关注从手机到服务器等新数字设计中的电源噪声。通常我们使用示波器测量电源噪声。本应用指南举例说明了使用示波器分析电源噪声的各种技术,并讨论了如何选择和评测电源噪声测量工具。现在面临的精准测量的问题随着开关切换速度和信号斜率的升高以及器件上有源针脚数目的…

    2022年10月10日
    2
  • 国内十大正规现货交易平台排名(2021版榜单)

    国内十大正规现货交易平台排名(2021版榜单)现货亦称实物,指可供出货、储存和制造业使用的实物商品。可供交割的现货可在近期或远期基础上换成现金,或先付货,买方在极短的期限内付款的商品的总称。期货的对称。随着互联网的出现,世界已慢慢变成地球村,建立在信息化基础上的现货电子交易走上新经济的舞台。现货电子交易(也称为大宗商品电子交易,或现货仓单交易)是以现货仓单为交易的标的物,采用计算机网络进行的集中竞价买卖,统一撮合成交,统一结算付款,价格行情实时显示的交易方式。国内不少投资者对现货交易还不是太了解,下面小编为您介绍“国内十大正规现货交易平台排名(20

    2022年6月15日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号