java工程师成神之路从零开始学习(平台无关性)

  • Post author:
  • Post category:java



以下内容都是我跟着《深入理解java核心技术》这本书,一边学习一边抄录的内容。单纯的只是为了学习、巩固自己的知识点。



4.1平台无关性



4.1.1 什么是平台无关性

“平台无关性”是指软件或系统不依赖于特定的硬件平台或操作系统,可以在多种不同的平台上运行或部署,或者可以与多种不同的平台进行兼容。平台无关性通常使软件或系统更具可移植性和灵活性,可以在不同的环境中更广泛地使用。

平台无关性就是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行(Write Once ,Run Anywhere)。



4.1.2 平台无关性的实现

实现平台无关性的方法包括:

  1. 使用跨平台编程语言,如Java、Python、C#等。

  2. 编写可移植的代码,使用标准的API和接口,避免使用特定于某个平台或操作系统的功能。

  3. 使用虚拟化或容器技术,在不同的平台或操作系统上部署相同的应用程序或服务。

  4. 使用Web技术,将应用程序或服务部署到云平台上,通过Web浏览器访问。

  5. 使用框架或库,如Qt、Boost、.NET Framework等,提供跨平台的开发和运行环境。

实现平台无关性需要对不同平台的特点和限制有一定的了解,以便在设计和开发时避免使用不可移植的功能。



1.编译原理基础

编译原理是研究如何将高级程序语言转换成计算机能够执行的指令序列的一门学科。其基础知识包括以下内容:

  1. 词法分析:将程序代码分解成有意义的单词或符号,称为”词法单元”,并将其转化为”记号”的过程。

  2. 语法分析:将词法单元转化为程序的语法结构,称为”语法树”,并检查其是否符合程序语言的语法规则。

  3. 语义分析:对语法树进行分析和处理,以检查程序语义是否正确,并对其进行转换和优化。

  4. 代码生成:将语法树转换为计算机可以执行的指令序列,称为”目标代码”,并对其进行优化和调整。

  5. 目标代码优化:对生成的目标代码进行优化,以提高程序的执行效率和质量。

Java源文件(.java) → 经过Java编译器(javac) → 字节码文件(.class) → 经过Java虚拟机(JVM) → 本地机器代码(二进制文件)

具体来说,这个过程分为以下几个步骤:

  1. 编写Java源文件,使用文本编辑器等工具编辑代码。

  2. 使用Java编译器,将Java源文件编译成字节码文件。字节码是一种中间代码,不是本地机器代码,而是一种跨平台的二进制格式。在编译过程中,Java编译器会将Java源代码转换为字节码,并生成与类名相同的.class文件。

  3. 将生成的字节码文件(.class)加载到Java虚拟机(JVM)中。JVM是Java程序的运行环境,它可以在不同的操作系统和硬件平台上运行Java程序。JVM会将字节码解释执行或即时编译成本地机器代码。

  4. 经过JVM解释执行或编译成本地机器代码后,程序就可以在本地机器上运行。在解释执行过程中,JVM会逐行解释字节码并执行相应的指令。在编译成本地机器代码后,程序会被直接翻译为本地机器的指令集,因此执行速度更快。



1.java虚拟机(JVM)

Java虚拟机(Java Virtual Machine,JVM)是一种虚拟计算机,它是Java平台的核心组件之一,用于解释执行Java字节码。

JVM是一种运行时环境,它提供了程序运行所需的内存管理、安全性、类加载、字节码解释执行、优化等基本功能。当Java程序运行时,JVM会读取Java字节码文件,并将其转换为本地机器代码。这个过程可以通过解释执行和即时编译两种方式进行。

JVM的主要组成部分包括:

  • 类加载器(Class Loader):负责加载Java类文件,并将其转换为JVM内部表示的类对象。

  • 运行时数据区(Runtime Data Area):包括方法区、堆、虚拟机栈、本地方法栈等,用于存储Java程序运行时所需的数据和信息。

  • 执行引擎(Execution Engine):负责解释执行或即时编译Java字节码,并将其转换为本地机器代码。

  • 本地方法接口(Native Interface):允许Java程序调用本地方法库中的方法。

JVM的重要性在于它实现了Java的跨平台特性,使得Java程序可以在不同的操作系统和硬件平台上运行。Java开发人员只需要编写一次程序,就可以在不同的平台上运行,无需关心底层系统的差异性。此外,JVM还提供了一些高级特性,如自动内存管理、线程管理、安全管理等,使得Java程序更加安全、稳定和易于开发。

虽然java语言是平台无关性的,但是JVM确实平台有关性的,不同的操作系统上面安装对应的JVM。



2. 字节码

字节码(Bytecode)是一种中间代码,它是一种跨平台的二进制格式,用于在Java虚拟机(JVM)上运行Java程序。

Java源代码会被编译成字节码,而不是机器代码。字节码是一种基于栈的指令集,由一系列的操作码和操作数构成,类似于汇编语言。字节码文件以.class为扩展名,可以在任何安装了JVM的机器上运行。

当Java程序被运行时,JVM会将字节码文件加载到内存中,并解释执行字节码中的指令。JVM提供了两种执行字节码的方式:解释执行和即时编译。

解释执行是指逐条解释字节码中的指令并执行相应的操作。这种方式执行速度较慢,但可以在任何平台上运行。

即时编译是指在运行时将字节码编译成本地机器代码,然后执行编译后的代码。这种方式执行速度较快,但需要一定的时间将字节码编译成本地机器代码,因此在程序刚开始运行时可能会出现一定的延迟。

字节码具有跨平台性,因为它是中间代码,不依赖于特定的硬件或操作系统,而是依赖于JVM。这使得Java程序可以在不同的平台上运行,无需对源代码进行修改。



3.Java语言规范

Java语言规范(Java Language Specification,简称JLS)是定义Java编程语言语法、语义和基本原理的规范。它由Java社区的专家委员会(Java Community Process,简称JCP)制定和维护,并定期更新。

Java语言规范详细描述了Java编程语言的各个方面,包括语法、类型系统、运算符、流控制、异常处理、类和对象、继承、泛型、注解、反射等。JLS规定了Java编程语言的语法和语义,确保了Java程序在不同的平台和实现中具有相同的行为。

Java语言规范对Java程序员来说具有重要意义,它提供了标准的语言定义,帮助程序员编写出可移植、可维护的代码。此外,Java语言规范还为Java编译器和虚拟机提供了一致的规范,使得Java程序在不同的实现中具有相同的行为,这也是Java跨平台特性的关键之一。

Java语言规范不仅对Java开发人员有帮助,对Java编译器、虚拟机和相关工具的开发人员也非常重要,因为它为他们提供了一致的规范和准则。此外,Java语言规范还可以作为学习Java语言的参考资料,帮助人们深入理解Java编程语言的基本原理和规则。



4.1.3 语言无关性

语言无关性(language independence)指的是某种软件、平台或系统不依赖于任何特定编程语言的特性。具有语言无关性的软件可以使用不同的编程语言来编写,而不需要对软件本身进行任何修改。

语言无关性通常是指在软件开发的不同阶段都能体现出来的特性。例如,需求分析、设计、编码、测试、部署等各个阶段都可以使用不同的编程语言来实现,而不影响软件的功能和性能。

实现语言无关性的方法包括使用中立的标准或协议、采用特定的中间语言或中间件、使用面向对象的设计和编程、使用抽象层和接口等。

语言无关性对软件开发具有很大的意义,它可以提高软件的可移植性和可扩展性,降低软件开发成本和风险。在跨平台软件、开放式系统和复杂的软件集成中,语言无关性尤为重要。



版权声明:本文为weixin_41317840原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。