为什么JAVA跨平台
对于C/C++程序来说,编译后生成与特定操作系统平台相关字节码文件,由于与特定平台相关,所以不能在另一个操作系统平台运行,而对于JAVA程序来说,编译后生成是与JAVA虚拟机这个平台相关的class文件,与操作系统无关,由于生成后的字节码文件只与JAVA虚拟机相关与操作系统无关,所以在安装了JAVA虚拟机的操作系统上都能运行。
JAVA跨平台不是绝对的
先说下JAVA程序的运行原理,JAVA程序被编译成class文件后就可以被JAVA虚拟执行,JAVA虚拟对class文件进行解释后再调用本地方法,本地方法是与操作系统相关的,由于不同操作系统平台安装有不同类型的JAVA虚拟机,如windows系统安装window版的JAVA虚拟机,linux系统安装linux版的JAVA虚拟机,所以当JAVA程序在windows系统下运行时调用的是windows平台的本地方法,在linux下运行时调用的是linux平台对应的本地方法。至于调用怎样的本地方法根本不用我们操心,这是JAVA虚拟机干的事,理它是在windows平台还是在linux平台,我把只要把JAVA程序写好就行了,剩下的工作JAVA虚拟机会帮我们搞定。
但是当JAVA程序直接调用本地方法,JAVA程序就与操作系统相关了,这样的JAVA程序是不能做到一次编写,到处运行的。也就是说你所编写的程序不只调用了JAVA API,而且还调用了操作系统的本地方法。如果你在自己的JAVA程序里面直接调用了windows API,那么这样的程序就不能在linux下运行了。关于JAVA程序如何调用windows API搜索下就能找到答案,这里就不多说了。
以上只是个人对JAVA虚拟机的一点理解,关于JAVA虚拟还有很多东西,如类装载器、安全性、垃圾回收等.......
分享到:
相关推荐
《深入理解Java虚拟机1》是一本探讨Java技术体系核心组成部分的著作,主要关注Java虚拟机(JVM)的相关知识。Java技术体系由Java虚拟机、Java类库、Java编程语言以及第三方Java框架构成。JVM作为这个体系的核心,为...
### Java虚拟机(JVM)详解 #### 一、Java技术概览 Java不仅仅是一种编程语言,更是一项技术,它由四个关键组成部分构成:Java编程语言、Java类文件格式、Java虚拟机(JVM)以及Java应用程序接口(API)。这四项构成了...
然后javac(不用ide,这样会更好一点)。Javac是编译。变成中间代码,class文件。 涉及 编译原理里面的解释和编译。 2.1. 编译和解释: 2.1.1.编译型语言在编译过程中生成目标平台的指令,解释型语言在运行...
【深入Java虚拟机(三)——类的生命周期(下)类的初始化1】 类的生命周期在Java中是一个关键的概念,它涵盖了从加载到卸载的整个过程。在类的生命周期中,初始化阶段是非常重要的,因为它涉及到类的静态变量的赋值...
作为一名优秀的 Java 开发程序员,以及想那些想要学习 Java 更深层一点的知识的同学,对 JVM 的熟悉与熟练使用是必不可缺的核心技能了,也是每个 Java 程序员应该要做到的。 深入学习 JVM 可以有助于我们掌握 Java ...
这篇博文“对Swing的一点理解(一)”可能探讨了Swing的基本概念、组件使用以及如何通过源码实现特定功能。尽管没有提供具体的代码或详细内容,我们可以根据Swing的一般特性和用途来展开讨论。 1. **Swing基础**: ...
首先,Java虚拟机是Java语言实现其“一次编写,到处运行”(Write Once, Run Anywhere)理念的关键。JVM的作用是将编译后的Java字节码(.class文件)转换为特定操作系统和硬件平台上的机器指令,使得Java程序可以在...
Java的Thread类和Runnable接口可以帮助实现这一点。 12. **错误处理**: - 在开发过程中,确保对可能出现的异常进行捕获和处理,如文件不存在、格式不支持等。 在提供的源码【www.java1234.com】Java实现MP3...
JVM(Java虚拟机)作为Java语言的核心运行环境,在执行Java程序的过程中扮演了至关重要的角色。随着Java语言及其沙盒环境的流行,提高这些环境的性能并降低内存占用的需求日益迫切。本文档《动态监测器分配在Java...
此外,Java的可移植性是其另一大亮点,由于Java虚拟机(JVM)的存在,Java程序可以在任何支持JVM的平台上运行,实现了“一次编写,到处运行”。 在J2SE阶段,初学者应掌握基本的语法、类和对象、异常处理、集合框架...
在本项目中,我们将探讨如何使用Go语言来实现一个简单的Java虚拟机(JVM)。 Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为Java程序提供跨平台的运行环境。理解JVM的工作原理对于深入学习Java编程和...
本地方法栈与Java虚拟机栈非常相似,区别在于Java虚拟机栈执行Java方法,而本地方法栈则执行Native方法。值得注意的是,许多虚拟机(如HotSpot)直接将本地方法栈和Java虚拟机栈合并。 ##### 4. **Java堆(Java Heap...
Java语言从设计之初就内置了对多线程编程的支持,这一点通过它的并发API和语言层面的特性得到体现。 首先,我们来认识一下什么是多线程。在程序设计中,单线程程序只拥有一个执行流程,而多线程程序则拥有多个执行...
Java内存模型是Java虚拟机规范中定义的一部分,它规定了Java程序中变量的读写行为,以及线程之间的交互规则。理解Java内存模型对于编写正确、高效的多线程程序至关重要。在Java 5之前,Java内存模型的描述比较模糊,...