首页 > 编程语言 >Java学习笔记4--Java跨平台原理

Java学习笔记4--Java跨平台原理

时间:2024-08-12 18:50:34浏览次数:7  
标签:Java 字节 -- 虚拟机 跨平台 JVM 语言

一、Java程序运行机制
计算机高级语言按照程序的执行方式可以分为编译型语言和解释型语言。

编译型语言: 编写的程序源代码需要通过编译器生成机器语言目标文件,在计算机上直接执行目标文件。编译型语言的代表是C、C++等。
解释型语言: 源代码被解释器逐行解释并执行,因此无需编译器生成目标文件。解释型语言的代表是Python、Ruby等。
Java语言则是一种特殊的高级语言,因为它既有编译型语言的特征,也有解释型语言的特征。Java程序代码要先经过编译,在解释两个步骤。(先编译,后解释)

在这里插入图片描述

编写Java代码:开发人员使用Java语言编写Java代码,并将其保存到 .java 的源文件中。
Java编译器编译源代码:将 .java 源文件编译成平台无关的字节码文件,其扩展名为 .class。Java编译器会执行词法分析、语法分析、语义分析、代码生成等过程,将源代码转换为字节码文件。
Java虚拟机加载并解释字节码:Java虚拟机(JVM)是Java语言实现跨平台的关键,其作用是加载并解释编译生成的字节码文件。JVM首先会将字节码文件加载进来,生成相应的类对象,然后解释执行其中的指令,最终把执行结果输出。
二、Java虚拟机
Java虚拟机(Java Virtual Machine,缩写为JVM)是一个虚拟的计算机,它提供了一个标准的运行环境来执行Java程序。

Java虚拟机是一个虚拟的计算机,它模拟了一台计算机的全部或部分功能。与实际计算机一样,由硬件和操作系统两部分构成。不同的是,JVM的计算机硬件和操作系统都是虚拟的,不存在于物理世界中,而是由软件实现的。

在这里插入图片描述

JVM由以下三个子系统构成:

类加载器子系统(Class Loader Subsystem):负责加载字节码文件,并将其转化为JVM可识别的数据结构。类加载器根据名称或其他特殊属性加载字节码文件,然后生成类的实例。
运行时数据区(Runtime data area):包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。这些组成了Java程序运行期间所需的内存区域。
执行引擎(Execution Engine):负责解释并执行字节码文件。JVM提供了两个执行引擎:解释器和JIT(Just In Time)编译器。解释器逐条解释字节码指令进行执行,而JIT编译器则会在程序运行时对热点代码进行编译优化并使得程序运行更快。
JVM具有跨平台、节约内存、自动垃圾回收等特性。它是Java平台的核心和关键技术之一。

三、Java跨平台
平台:操作系统平台(比如,Windows、Linux、macOs)。

在这里插入图片描述

Java跨平台:Java程序可以在任意操作系统运行相同的代码,而且不需要对代码进行任何修改。

在这里插入图片描述

Java跨平台的工作原理是,Java编写的源代码( .java 文件)首先被编译成字节码(.class 文件)。然后,字节码可以在任何装有JVM的平台上运行。JVM利用字节码提供了一种抽象的、与操作系统无关的计算机程序的运行环境。由于Java虚拟机的存在,Java程序就可以在Windows、Linux、Mac等各种操作系统上运行。

Java的跨平台优势是广泛应用于企业级应用和互联网应用的一个重要原因。Java的跨平台性意味着,开发者无需多种技能,可以针对不同操作系统轻松创建和部署应用程序。Java实现跨平台的能力对于开发者和用户来说都是非常有价值的。

总结
重点是了解Java语言跨平台原理。

标签:Java,字节,--,虚拟机,跨平台,JVM,语言
From: https://www.cnblogs.com/mwx2024/p/18355540

相关文章

  • fomepay虚拟信用卡跑路了?可以看看其他平台
    最近fomepay虚拟卡平台跑路了,很多人的余额都无法提现!基本就是充值进去的钱被吞了,以前能够联系到的客服现在联系不到了,贴吧上面一搜,全部都是被骗的说法;博主体验,以前我就在wildcard平台和fomepay两个平台之间来回跑,给我的感觉就是fomepay这个平台很像那种钓鱼网站,网站的相关页面......
  • 报错:2024-08-12T18:39:35.313+08:00 ERROR 29668 --- [demo2] [ main] o.s.
    org.springframework.beans.factory.BeanDefinitionStoreException:Failedtoparseconfigurationclass[com.example.demo.DemoApplication]atorg.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:179)~[spring-con......
  • pritunl安装及配置https证书
    1、pritunl简介#官方网站https://pritunl.com/​#官方文档https://docs.pritunl.com/docs​#Github项目地址https://github.com/pritunl/pritunl​#客户端下载地址(也可以使用OpenVPN作为客户端)https://client.pritunl.com/#installhttps://openvpn.net/clienthttps......
  • 【待做】【文件传输系列】
    上传:从kali到windowscertutilpowershellIWRpowershellwgetcopy\\smbshare\xxxcurl下载:从windows到kali【flaskserver】:fromflaskimportFlask,requestapp=Flask(__name__)@app.route("/upload1",methods=["POST"])defsave_file1()......
  • ClueCon 2024:音视频开发者的技术盛会
       前面的话:ClueCon是音视频开发者的年度技术盛会,每年都在美国芝加哥举行。RTE开发者社区的联合主理人杜金房在即将踏上ClueCon之际,写下了这段文字。也邀请大家一同关注这次大会。 时间过得真快,转眼,又是一届新的ClueCon了。 ClueCon是一个音视频开发者的年度......
  • 积性函数和狄利克雷卷积学习笔记
    积性函数和狄利克雷卷积学习笔记积性函数定义若函数\(f(x)\)满足\(f(ab)=f(a)f(b)\),其中\(a,b\)互质,我们称这个函数是积性函数。若\(a,b\)不互质则是完全积性函数。常见积性函数狄利克雷卷积定义也叫狄利克雷乘积。形如下式:\[h(n)=\sum_{ab=n,a>0,b>0}f(a)g(b)\]......
  • 3-随机梯度下降
    随机梯度下降可以跨越鞍点对每一个样本的梯度进行更新点击查看代码importnumpyasnpimportmatplotlib.pyplotaspltx_data=[1.0,2.0,3.0]y_data=[2.0,4.0,6.0]w=1.0defforward(x):returnx*wdefloss(x,y):y_pred=forward(x)ret......
  • 关于fixed 修改z-index无效,定位relative 将fixed覆盖问题
    https://img2024.cnblogs.com/blog/3388853/202408/3388853-20240812183846280-1202542483.png主要原因:观察z-index文档由于定位盒子受层叠上下文-CSS:层叠样式表|MDN(mozilla.org)影响。解决方法:发现.header为fixed定位,使得与下方input定位relative在同一级,都......
  • How to change the google translate voice to male All In One
    HowtochangethegoogletranslatevoicetomaleAllInOneTL;DR:Thereisnowaytodothatfornow./Thereiscurrentlynowaytodothis.https://support.google.com/translate/thread/2017149/is-there-a-male-voice-for-google-translator-where-can-i-s......
  • Java学习笔记3--java编译和运行的CMD命令
    windows下利用cmd命令行可以调用jdk里的javac.exe和java.exe对java文件进行编译和执行,前提是jdk已成功安装并正确配置相关环境变量执行命令解析:javac命令用于将java源文件编译为class字节码文件,如:javacHelloWorld.java。运行javac命令后,如果成功编译没有错误的话,会出现......