Java程式可以跨平台,這是你在許多書或文件早就看過的描述,但是跨平台是怎麼一回事?在這之前,你得先了解不能跨平台是怎麼一回事。
其 實對於電腦而言,它只認識一種語言,也就是0101序列所組合而成的指令。當你使用的是C/C++等之類的高階語言撰寫程式時,其實這些語言,都是比較貼 近人類可閱讀的文法,精確點來說,大部份就是比較接近英文文法的語言。這是為了方便人類閱讀及撰寫。電腦其實看不懂C/C++這類語言。
你要有個「翻譯員」將你寫的C/C++程式,翻譯為電腦看得懂的0101序列指令,這個翻譯員就是所謂的「編譯器」(Compiler):
問 題在於,每個平台所認識的0101序列並不一樣。在Windows上也許某個指令是0101,在Linux下也許是1010,因此不同的平台必須使用不同 的編譯器來翻你的程式,而在Windows平台上編譯好的程式,也不能直接拿到Linux等其它平台上執行,而必須經過重新編譯的動作,讓編譯器將你的程 式翻譯為該平台可以執行的指令。
由於每個平台的特性不同,可引用的程式庫(Library)不同,也許你的程式還得作修改,才可以在另一個平台上編譯執行。這很不方便,這表示如果你在Windows設計了一款遊戲,想要賣給Linux的使用者,就得再花費一些功夫。
Java 也是個高階語言,要讓電腦執行你撰寫的程式,也是得透過編譯器的翻譯。不過,Java編譯時,並不直接翻譯為相依於某平台的0101指令,而是翻譯為中介 格式的位元碼(byte code)。Java 的原始碼副檔名為*.java,經過編譯器翻譯過後,會變成*.class的位元碼。如果想要執行這個位元碼檔案,目標平台上必須安裝有JVM(Java Virtual Machine)。JVM會將位元碼翻譯為平台相依的語言。
不同的平台必須安裝該平台相依的JVM。這就好比你講中文(*.java),Java編譯器幫你翻譯為英文(*.class)。之後該英文文件,到當地之後,再由當地看得懂英文的人翻譯為當地的語言。
所以JVM所擔任的職責之一,就是當地的翻譯員,將位元碼檔案翻譯為當時作業系統看得懂的0101序列。不過這不是最重要的,基本上如果只是要翻譯員的話,直譯器(Interpreter )就辦得到了。
JVM有個很重要的觀念就是:「對於Java程式而言,其實它只認識一種作業系統(或說是一種機器),這個系統叫作JVM,而對於JVM而言,位元碼檔案就是它的可執行檔案!也就是副檔名為.class的檔案。Java程式理想上,並不用理會真正執行於哪個平台之上,它只要知道如何執行於JVM之上就可以了,至於JVM實際上如何與底層平台作溝通,則是JVM自己的事!」這個觀念非常的重要,對於往後釐清所謂PATH變數與CLASSPATH變數,有非常大的幫助。
- 浏览: 167500 次
- 性别:
- 来自: 杭州
最新评论
-
mengyue0477:
最后还不忘吐槽一下 哈哈 太逗了
spring容器的懒加载lazy-init设置 -
comet0515:
不是maven工程能不能用checkstyle插件?job是一 ...
jenkins 配置checkstyle -
xfxlch:
http://docs.spring.io/spring-bo ...
NoteBook -
With_Me_Forever:
太浅了。我最近也在看着方面的资料,一起进步把。
互联网金融定义 -
xfxlch:
在http://r.m.baidu.com/6pmxgig
NoteBook
相关推荐
Java的跨平台能力是通过Java虚拟机(JVM, Java Virtual Machine)和Java类文件实现的。 首先,Java源代码是用Java编程语言编写的,然后通过Java编译器(javac)编译成字节码(.class文件)。这些字节码并不是直接在...
- **标准化API**:Java提供了一套标准化的API,这些API可以跨平台使用,例如图形用户界面(GUI)组件Swing和AWT,网络编程API等。 #### 5. 跨平台的实际应用 Java跨平台的应用场景非常广泛,包括但不限于: - **...
**Java跨平台网络音乐播放器**是一款基于Java技术开发的音乐播放软件,它以其独特的跨平台特性,可以在多种操作系统上运行,如Windows、Mac OS X和Linux等。该播放器模仿了酷我音乐的界面和功能,为用户提供了一个...
JVM的特性不但支撑了Java语言的跨平台性,同时也为Java程序的性能优化、内存管理和安全提供了基础保障。 JVM特性主要可以从以下几个方面进行阐述: 1. 平台无关性:JVM为Java程序提供了平台无关性,即Java程序运行...
### Java的JNI跨平台技术详解 #### 一、引言 随着互联网技术的快速发展与广泛应用,跨平台服务的需求日益增长。为了满足这一需求,许多网络服务商开始开发自己的网络服务(Web Service),以抢占逐渐明晰的面向...
综上所述,Java跨平台监控技术不仅涵盖了屏幕截取、数据压缩、网络传输等关键技术,还深入探讨了如何优化监控体验,如通过设置合理的截图帧数和采用缓冲技术来提高数据呈现的流畅度。这为构建高效、稳定、跨平台的...
VisualVM是一个跨平台的工具,支持Windows、Linux和macOS等操作系统。它提供了丰富的图形界面,用户可以通过直观的视图来查看JVM的各种指标。此外,VisualVM还支持插件扩展,可以进一步增强其功能。 2. **安装与...
JVM的设计目的是为了使Java程序能够跨平台运行——也就是说,只要目标操作系统上安装了相应的JVM,Java程序就可以在该平台上运行。 JVM的主要优点在于它的可移植性。通过在不同的平台上实现JVM,开发者只需要编写一...
本篇将深入探讨Java的跨平台机制,主要围绕Java虚拟机(JVM)进行阐述。 首先,Java源代码是用Java编程语言编写的,它以.java文件的形式存在。当我们执行`javac`命令编译Java源代码时,编译器并不会生成直接可执行...
JVM(Java Virtual Machine)是Java语言的核心组成部分,它是实现跨平台运行的基础。JVM负责解析字节码,并将其转化为特定平台下的机器指令,实现了“一次编写,到处运行”的目标。JVM的主要功能包括类加载、内存...
Java 编写跨平台应用程序时,需要注意多个方面以确保程序能够在不同的操作系统上正确运行。首先,选择使用标准的 Java Development Kit (JDK) 版本,例如 1.0、1.1、1.2 或更高版本,并且依赖于 Java 核心 API,避免...
JVM(Java Virtual Machine)是Java语言的核心组件之一,它是Java语言的可移植性和跨平台性的基础。JVM主要组成部分包括类加载子系统、执行引擎、本地方法接口和运行时数据区。 类加载子系统是JVM的核心组件之一,...
这些组件共同构成了Java平台,使得Java程序能够实现跨平台运行。 Java虚拟机是Java平台的核心,它位于移植接口之上,通过适配器与特定的平台和操作系统交互。JVM的主要任务是加载字节码并执行,保证了程序与操作...
在移动设备和嵌入式系统领域,Windows CE是一个广泛应用的操作系统,而Java作为一种跨平台的语言,其虚拟机(JVM)的实现对于开发者来说至关重要。"jvm.0.4.7-bin.zip"这个压缩包就是专门针对Windows CE平台设计的...
Java标准库(Java API)提供了一套完整的跨平台API,开发者可以使用这些API来访问操作系统的服务,如文件系统、网络通信等,而无需关心底层操作系统细节,这也是Java能够实现跨平台的重要因素。 此外,Java的垃圾...
JVM通过将高级语言转换成机器可以理解的指令,实现了跨平台的"一次编写,到处运行"的理念。 ### 2. SuperWaba的特点 - **轻量级**:SuperWaba针对资源有限的设备进行了优化,内存占用小,运行效率高。 - **可移植性...
在Java 11中,JVM继续提供跨平台的兼容性和高效的运行环境。它将Java源代码编译成字节码,然后在运行时动态地解释或即时编译为机器码,实现了“一次编写,到处运行”的目标。 二、内存管理 1. 垃圾收集:Java 11的...
初代JVM性能较低,但具备“一次编写,到处运行”的跨平台特性。 2. **HotSpot VM**:1997年,Sun公司收购了HotSpot VM,这是一个具有动态编译能力的JVM,能够根据程序运行情况优化代码,显著提升了性能。HotSpot...
尽管JVM最初的设计目标是实现跨平台兼容性和安全性,但随着技术的发展,性能也成为了关注的重点。现代JVM采用了即时编译技术(JIT),能够在运行时将热点代码编译成本地机器码,显著提高程序的执行效率。此外,JVM还...
首先,JVM是Java平台的核心,负责执行字节码,提供了跨平台的“一次编写,到处运行”特性。NeatJVM作为开源的JVM实现,它的设计目标是简化复杂的JVM内部机制,使开发者能够更直观地理解类加载、内存管理、字节码解释...