课时3:Java可移植性

简介: 课时3介绍Java的可移植性,即Java程序能在不同操作系统(如Windows、Linux、Unix)上无缝运行。关键在于Java虚拟机(JVM),它使编译后的字节码可在任何有JVM的平台上执行。Java结合编译型和解释型语言特点,源代码先编译成字节码,再由JVM解释执行,确保跨平台兼容性。尽管早期存在性能问题,但硬件进步已大幅改善。现在重点是优化JVM以发挥操作系统最佳性能。

课时3: Java 可移植性

 

摘要:本次分享的主题是 Java 可移植性。

 

Java 语言的最大特点之一在于其对可移植性的支持。所谓可移植性指的是同一个程序可以在不同的操作系统之间任意进行部署,从而减少了开发的难度。例如,假设有一款产品需要在 Windows 、 Linux 和 Unix 等多个平台上运行,很麻烦,但如果使用 Java ,这个问题将得到极大的简化。 Java 实现可移植性的关键在于 Java 虚拟机( JVM )。 Java 虚拟机是一种通过软件或硬件模拟的计算机,所有 Java 程序只要有 Java 虚拟机的支持就可以实现程序的执行。不同的操作系统上有不同版本的 Java 虚拟机,这样就可以实现移植性。

接下来,我们简单看一下 Java 的运行机制。

 

image.png

 

计算机编程语言主要分为两种类型:编译型和解释型。编译型语言如C 语言,源代码经过编译后会生成可执行文件,双击直接运行即可。解释型语言如 ASP ,源代码可以直接解释执行,就可以正常解释。。Java 则结合了这两种方式: Java 源代码首先被编译成字节码文件,这是编译过程;然后字节码文件通过 Java 虚拟机解释执行,这是解释过程。

 

image.png

 

Java 程序的运行流程包括三个部分:源文件、字节码和机器码指令。

所有 Java 程序的解释都要求放在 Java 虚拟机负上处理。

 

image.png

以上是对 Java 虚拟机的解释。在一台计算机上由软件或硬件模拟机计算机。 Java 虚拟机(JVM)读取并处理经编译过的平台无关的字节码 class 文件。所有 Java 源代码都需要经过编译后才能使用,但编译后的程序代码并不绑定于特定的操作系统,而是一种通用性的程序代码。


这种通用性的代码由 Java 虚拟机识别和执行。例如,即使在 Windows 上编译的 Java 程序,也不会与 Windows 系统绑定, windows 只能作为所谓的母体存在。 Java 编译器针对 Java 虚拟机产生 class 文件,因此是独立于平台的。


Java 解释器负责将 Java 虚拟机的代码在特定平台上运行。它只认 JVM 然后由 JVM 去适应不同的操作系统。然而,由于 Java 程序并不是直接运行在操作系统上,而是通过 Java 虚拟机执行,这可能会导致程序运行速度较慢。早期这确实是一个问题,但后来随着硬件技术的飞速发展,这一问题已经得到了显著改善。


但是, Java 虚拟机的调优仍然是一个重要的课题,因为 Java 虚拟机是运行在操作系统上的软件程序代码。现在的重点不再是由于内置程序执行导致的性能下降,而是如何让 Java 虚拟机充分发挥操作系统的性能,这才是现在要考虑的问题。

因为Java在整个发展过程中,它的整个的语言的组织上已经足够完善了。

相关文章
|
7月前
|
Java C语言 C++
课时9:Java数据类型划分(数据类型划分)
课时9介绍了Java的数据类型划分及其操作。Java数据类型分为基本数据类型和引用数据类型。基本数据类型包括八种:数值型(整形、浮点型)、字符型和布尔型;引用数据类型有数组、类和接口。重点讲解了每种数据类型的默认值、适用场景及选择原则,如整数用int,小数用double,日期时间用Long等。掌握这些内容对编程至关重要。
128 4
课时9:Java数据类型划分(数据类型划分)
|
7月前
|
Java
课时12:Java数据类型划分(字符型)
课时12介绍了Java中的字符型数据(char),包括字符的定义、与int类型的转换及应用。通过范例展示了如何观察字符、编码转换、大小写字母互转、保存中文字符,以及Java中字符处理的灵活性。字符型使用单引号声明,可与int互相转换,支持Unicode编码,能表示任何文字,包括中文。虽然实际开发中直接操作字符型的情况不多,但理解其特性有助于更好地编程。
115 17
|
7月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
162 9
|
7月前
|
Java
课时13:Java数据类型划分(布尔型)
观察布尔型的操作。布尔是一位数学家的名字,这个布尔发明了两个单词:True、False(一个表示真一个表示假)。一般布尔类型都只表示逻辑的计算结果。
164 9
|
7月前
|
Java
课时15:Java运算符(基础数学运算符)
课时15介绍了Java中的基础数学运算符,涵盖加、减、乘、除及自增自减运算。强调了运算符的优先级和使用括号的重要性,并通过范例展示了四则运算与自增自减的具体应用。提醒编写代码时应保持简洁,避免复杂的表达式,确保代码易读性和可维护性。
|
7月前
|
Java
课时17:Java运算符(关系运算符)
范例:进行关系判断。如果要进行关系运算的操作可使用:>、<、>=、<=、!=(不等于)、==。所有的关系运算符判断完成的数据返回结果都是布尔类型(boolean)。只要使用关系运算符进行逻辑判断,最终的结果就是布尔型,只有true和false两种结果,而且能和if语句结合使用。
107 6
|
7月前
|
Java
课时16:Java运算符(三目运算符)
范例:将两个变量值在大的内容赋值给新变量。三目是一种赋值运算,它指的是根据条件来进行判断。(根据判断的结果来决定赋值内容)对于三目运算的基本使用语法如下: 数据类型 变量 = 布尔表达式 ?条件满足时赋值内容:条件不满足时:赋值内容
|
7月前
|
Java
课时11:Java数据类型划分(浮点类型)
课时11介绍了Java中的浮点数据类型。主要内容包括:1. 定义小数,默认使用Double类型;2. 定义Float变量,需在数值后加&quot;F&quot;或&quot;f&quot;进行强制转换;3. 观察不同类型计算结果,如Int型除法会丢失精度,需至少包含一个Double或Float类型以确保准确性。总结指出,在复杂计算中推荐使用Double类型以避免精度损失。
150 5
|
7月前
|
存储 Java 编译器
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
7月前
|
Java 程序员 数据处理
课时19:Java运算符(位运算符)
课时19介绍Java中的位运算符,涵盖进制转换、位与、位或及移位操作。重点讲解了二进制与其他进制的转换方法,通过具体范例演示了位与和位或运算的过程,并展示了八进制和十六进制的处理方式。此外,还解释了逻辑运算符(&&、||)与位运算符(&、|)的区别及其应用场景,特别是位运算在加密中的应用。
131 5

热门文章

最新文章