`
caiyi
  • 浏览: 17953 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

对JAVA虚拟机的一点理解

阅读更多

为什么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虚拟还有很多东西,如类装载器、安全性、垃圾回收等....... 

分享到:
评论
2 楼 aiyust070 2011-05-13  
调用 c/c++写的,可以用Jco
如果你一定要在linux下调用windows下的api,那你编写的时候,就应该知道,linux下没有windows api,相反也一样
问题总有解决的方法,就是看你怎么解决
1 楼 gayid 2011-05-12  
好,不错,让我这个初学者对JAVA虚拟机有了比较深一层的理解

相关推荐

    深入理解Java虚拟机1

    《深入理解Java虚拟机1》是一本探讨Java技术体系核心组成部分的著作,主要关注Java虚拟机(JVM)的相关知识。Java技术体系由Java虚拟机、Java类库、Java编程语言以及第三方Java框架构成。JVM作为这个体系的核心,为...

    java虚拟机详解.docx

    ### Java虚拟机(JVM)详解 #### 一、Java技术概览 Java不仅仅是一种编程语言,更是一项技术,它由四个关键组成部分构成:Java编程语言、Java类文件格式、Java虚拟机(JVM)以及Java应用程序接口(API)。这四项构成了...

    java虚拟机的理解

    然后javac(不用ide,这样会更好一点)。Javac是编译。变成中间代码,class文件。  涉及 编译原理里面的解释和编译。  2.1. 编译和解释:  2.1.1.编译型语言在编译过程中生成目标平台的指令,解释型语言在运行...

    深入java虚拟机(三)——类的生命周期(下)类的初始化1

    【深入Java虚拟机(三)——类的生命周期(下)类的初始化1】 类的生命周期在Java中是一个关键的概念,它涵盖了从加载到卸载的整个过程。在类的生命周期中,初始化阶段是非常重要的,因为它涉及到类的静态变量的赋值...

    JAVA虚拟机,看这篇就够了!

    作为一名优秀的 Java 开发程序员,以及想那些想要学习 Java 更深层一点的知识的同学,对 JVM 的熟悉与熟练使用是必不可缺的核心技能了,也是每个 Java 程序员应该要做到的。 深入学习 JVM 可以有助于我们掌握 Java ...

    对Swing的一点理解(一)

    这篇博文“对Swing的一点理解(一)”可能探讨了Swing的基本概念、组件使用以及如何通过源码实现特定功能。尽管没有提供具体的代码或详细内容,我们可以根据Swing的一般特性和用途来展开讨论。 1. **Swing基础**: ...

    jvm for IE8

    首先,Java虚拟机是Java语言实现其“一次编写,到处运行”(Write Once, Run Anywhere)理念的关键。JVM的作用是将编译后的Java字节码(.class文件)转换为特定操作系统和硬件平台上的机器指令,使得Java程序可以在...

    Java实现MP3播放器

    Java的Thread类和Runnable接口可以帮助实现这一点。 12. **错误处理**: - 在开发过程中,确保对可能出现的异常进行捕获和处理,如文件不存在、格式不支持等。 在提供的源码【www.java1234.com】Java实现MP3...

    Dynamic Monitor Allocation in the Java Virtual Machine

    JVM(Java虚拟机)作为Java语言的核心运行环境,在执行Java程序的过程中扮演了至关重要的角色。随着Java语言及其沙盒环境的流行,提高这些环境的性能并降低内存占用的需求日益迫切。本文档《动态监测器分配在Java...

    孙卫琴对大家java学习的一点建议

    此外,Java的可移植性是其另一大亮点,由于Java虚拟机(JVM)的存在,Java程序可以在任何支持JVM的平台上运行,实现了“一次编写,到处运行”。 在J2SE阶段,初学者应掌握基本的语法、类和对象、异常处理、集合框架...

    go语言编写jvm虚拟机

    在本项目中,我们将探讨如何使用Go语言来实现一个简单的Java虚拟机(JVM)。 Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为Java程序提供跨平台的运行环境。理解JVM的工作原理对于深入学习Java编程和...

    Java内存图

    本地方法栈与Java虚拟机栈非常相似,区别在于Java虚拟机栈执行Java方法,而本地方法栈则执行Native方法。值得注意的是,许多虚拟机(如HotSpot)直接将本地方法栈和Java虚拟机栈合并。 ##### 4. **Java堆(Java Heap...

    Java语言程序设计教程课件第十一章多线程程序设计

    Java语言从设计之初就内置了对多线程编程的支持,这一点通过它的并发API和语言层面的特性得到体现。 首先,我们来认识一下什么是多线程。在程序设计中,单线程程序只拥有一个执行流程,而多线程程序则拥有多个执行...

    Java 内存模型

    Java内存模型是Java虚拟机规范中定义的一部分,它规定了Java程序中变量的读写行为,以及线程之间的交互规则。理解Java内存模型对于编写正确、高效的多线程程序至关重要。在Java 5之前,Java内存模型的描述比较模糊,...

Global site tag (gtag.js) - Google Analytics