`

Java虚拟机的基本概念

阅读更多

“一次编写,到处运行”是Java语言吸引开发人员的重要原因之一。用Java语言编写的程序可以在任何平台上运行,只需要在操作系统之上安装运行Java的环境即可。某些编程语言的开发平台中并没有虚拟机的概念,而是通过直接从源代码生成目标操作系统上的二进制文件来运行。不同的操作系统上的二进制文件是无法兼容的。以C/C++语言为例,在Windows平台上编译C/C++源代码所生成的可执行文件,无法在Linux平台上运行。当需要使用程序的时候,用户要么直接下载其操作系统对应的可执行文件,要么根据源代码自行编译和连接来得到可执行文件。对程序的开发人员来说,如果程序需要支持不同的操作系统平台,则需要做很多工作来确保程序在不同的操作系统平台上都可以正常工作,其中包括对程序进行修改以适应不同的操作系统。虽然有些类库可以帮助解决这个问题,但是开发人员的任务量仍然比较巨大。

Java平台早在开发时就引入了虚拟机的概念。Java程序不是由操作系统以可执行文件的形式直接运行的,而是运行在Java虚拟机中的。在运行Java程序的时候,需要定一个主Java类。Java虚拟机在启动之后,会从主Java类的main方法开始执行。当main方法执行结束后,Java虚拟机会自动终止。每个Java虚拟机在运行时是底层操作系统上的一个独立的进程。比如,当在Windows操作系统上运行Java程序的时候,可以从任务管理器的进程列表中看到名为“java.ex”或“javaw.exe”的进程,这些就是Java虚拟机的进程。

虚拟机的作用主要有两个。一个是为应用程序屏蔽底层操作系统的细节,另外一个则是为应用程序提供必要的运行时的能力。不同的操作系统在实现上存在很多的差异。快平台的应用程序需要自己来考虑这些问题,并在代码中进行处理。这通常意味着更长的开发时间和更高的维护成本,也意味着需要跟多的熟悉不同开发平台的开发人员。很多程序都采用多线程的方式来提高性能。在创建线程时,Windows平台上的API与Linux上的相关API就存在很大不同,在程序中需要通过不同的分支代码来进行处理。虚拟机的作用就在于助理这些细节,为程序提供统一的接口。同样的线程操作,在Java语言中可以通过抽象的java.lang.Thread类来完成。而Thread类在不同的平台上实现的不同,则有虚拟机来负责。

除此之外,虚拟机为在其上在运行的应用程序提供了必要的支持。以Java虚拟机为例,这些支持包括基本类型和操作符、对象模型、Unicode支持、动态链接、垃圾回收器、内存模型和访问控制等。虚拟机所提供的这些功能,是Java程序运行时的基础。在Java语言中可以与这些功能进行交互。

简而言之,虚拟机相当于一个简化的操作系统,他所提供的功能不仅丰富,而且规范、统一。

随着Java语言的流行,在编程语言开发平台中使用虚拟机也成为了一种被广泛的认可的做法。微软的.NET框架也采用了类似的架构。.NET中的虚拟机被称为通用语言运行(Common Language Runtime,CLR)。

分享到:
评论

相关推荐

    深入java虚拟机

    1.3 JVM调优总结(三)-基本垃圾回收算法 1.4 JVM调优总结(四)-垃圾回收面临的问题 1.5 JVM调优总结(五)-分代垃圾回收详述1 1.6 JVM调优总结(六)-分代垃圾回收详述2 1.7 JVM调优总结(七)-典型配置举例1 1.8 ...

    Java 虚拟机(JVM)之基本概念详解

    下面小编就为大家带来一篇Java 虚拟机(JVM)之基本概念详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java技术与虚拟机

    JAVA技术与JAVA虚拟机的基本概念与应用

    Java零基础 - Java的可移植性.md

    本文介绍了Java的可移植性特点,包括字节码、Java虚拟机(JVM)和跨平台开发。...理解面向对象编程的基本概念和思想 建议您在阅读过程中结合实践,尝试运行示例代码,加深对Java可移植性特点的理解,并提升编程能力。

    java技术学习文档.docx

    Java是一种面向对象的编程语言,它支持封装、继承和多态等面向对象的基本概念。Java具有静态类型检查机制,需要在编译时指定变量的类型。Java提供了基本数据类型,如int、double、float等,也支持引用数据类型,如类...

    Java开发文档.docx

    1. Java SE Development Kit (JDK) Documentation:JDK文档是Java SE开发的官方文档,包括Java SE平台的所有功能和特性,以及API参考、调试器、Java虚拟机等工具的使用说明。 2. Java Platform, Standard Edition ...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    京动力节点-Java编程零基础教程-001-编程基础-基本概念-语言、程序、编程.mp4 北京动力节点-Java编程零基础教程-002-编程基础-基本概念-编译.mp4 北京动力节点-Java编程零基础教程-003-编程基础-基本DOS操作.mp4 ...

    Java面试题合集最新版2024.zip

    Java面试通常涵盖多个方面,包括Java基础知识、编程技能、问题解决能力,以及对Java生态系统和相关...JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。

    Java高并发实战_java高并发_高并发_

    第1章主要介绍了并行计算中相关的 些基本概念, 树立读者对并行计算的基本认识;介绍了两个重要的并行性能评估定律, 以及 Java 内存模型 JMM。第2章介绍了 Java 并行程序开发的基础, 包括 Java 中 Thread 的基本...

    基于java的电子相册源码.zip

    它适合大学生作为学习材料,帮助理解Java编程的基本概念和实践;适合上班族作为提升技能的资源,学习如何在实际工作中应用Java;也适合初学者入门Java编程,逐步掌握从基础到高级的知识和技能。

    基于java的日记本源码.zip

    它适合大学生作为学习材料,帮助理解Java编程的基本概念和实践;适合上班族作为提升技能的资源,学习如何在实际工作中应用Java;也适合初学者入门Java编程,逐步掌握从基础到高级的知识和技能。

    基于java的考勤管理系统源码.zip

    它适合大学生作为学习材料,帮助理解Java编程的基本概念和实践;适合上班族作为提升技能的资源,学习如何在实际工作中应用Java;也适合初学者入门Java编程,逐步掌握从基础到高级的知识和技能。

    基于java的SSM商城系统源码.zip

    它适合大学生作为学习材料,帮助理解Java编程的基本概念和实践;适合上班族作为提升技能的资源,学习如何在实际工作中应用Java;也适合初学者入门Java编程,逐步掌握从基础到高级的知识和技能。

    基于java的物流信息网源码.zip

    它适合大学生作为学习材料,帮助理解Java编程的基本概念和实践;适合上班族作为提升技能的资源,学习如何在实际工作中应用Java;也适合初学者入门Java编程,逐步掌握从基础到高级的知识和技能。

    基于java的超市管理系统源码.zip

    它适合大学生作为学习材料,帮助理解Java编程的基本概念和实践;适合上班族作为提升技能的资源,学习如何在实际工作中应用Java;也适合初学者入门Java编程,逐步掌握从基础到高级的知识和技能。

    基于java的留言管理系统源码.zip

    它适合大学生作为学习材料,帮助理解Java编程的基本概念和实践;适合上班族作为提升技能的资源,学习如何在实际工作中应用Java;也适合初学者入门Java编程,逐步掌握从基础到高级的知识和技能。

Global site tag (gtag.js) - Google Analytics