- 浏览: 62545 次
- 性别:
- 来自: 应县
最新评论
-
fc19861011:
请问你解决了吗?poi修改word中生成的图表数据找了好久没发 ...
jacob 怎么改变 word图表的数据呢? -
longgol:
GridPanel中mouseover事件获取列index
...
GridPanel中mouseover事件获取行index
Java的运行原理、Java虚拟机是怎么工作的,本文将为你详细讲解(JVM)Java 虚拟机。
在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。
可以说,Java虚拟机是Java语言的基础。它是Java技术的重要组成部分。Java虚拟机是一个抽象的计算机,和实际的计算机一样,它具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。Java解释器负责将字节代码翻译成特定机器的机器代码。Java是一种简单的语言。它用到的概念不多,而且多为程序员所熟悉。如果你是一名程序员,掌握Java对你来说是易如反掌的事。即使你没有学过任何编程语言,学习Java也要比学习C++要容易的多。
由于Java最初是为控制电子产品设计的,因此它必须简单明了。为了保证这种简单性,Java去掉了C++中许多复杂的、冗余的、有二义性的概念,例如操作符重载、多继承、数据类型自动转换等。为了将程序员从复杂的内存管理的负担中解脱出来,同时也是为了减少错误,Java使用了自动内存垃圾收集机制,程序员只要在需要的时候申请即可,不需要释放,而由Java自己来收集、释放内存中的无用的块。
与C++相比,Java有着更强的面向对象特性,是一种比较纯粹的面向对象语言。一般我们使用的一些所谓的面向对象的编程语言,如C++,Object Pascal等,实际上都是一种混合型的语言,即在过程式的语言中加上面向对象的扩展。在Java中,几乎万物皆对象,就连一些基本数据类型,如整型、字符型、浮点型等,在Java中都可以作为对象处理。Java的面向对象特性几乎可以与Smalltalk媲美,但是其适用于分布式计算环境的特性却远远超过了Smalltalk。
Java是一种支持分布式操作的程序设计语言。使用Java提供的URL类,用户可以象访问本地文件一样访问网络上的对象,使用非常方便。在客户机/服务器的模式下,Java还可以将运算从服务器端分散到客户端,提高系统的效率,避免了服务器的瓶颈制约。Java的网络类库支持分布式的编程。Socket类提供可靠的流式网络的连接,支持TCP/IP协议。通过编写协议句柄,程序员还可以扩充Java支持的协议集合。
Java提供非常有效的安全控制。由于Java应用于网络程序的开发,因而安全性变的至关重要。因为Java小程序需要下载到客户端解释执行,所以,如果没有安全控制,就会给一些网络黑客以可乘之机,这对用户来说是非常危险的。所幸的是,Java的安全机制可以有效的防止病毒程序的产生、下载程序对本地文件系统的破坏,以及网络黑客窃取密码和入侵。
Java是一种非常健壮的语言。因为在Java中使用了以下手段:
不支持指针。在C++程序中,指针的错误使用通常的程序中BUG的元凶。在Java中彻底去掉了指针,杜绝了内存的非法访问,从而保证了程序的可靠性。
强类型语言
自动内存垃圾收集机制。Java自动收集无用的内存单元,进而防止了由于内存泄漏导致的动态内存分配问题。
完善的异常处理机制,既简化了错误处理任务和恢复,也增加了程序的可读性。
Java具有非常好的平台无关性和可移植性。因为Java最初是为对电子产品编程而设计的,所以它具有完美的平台无关性。它使用一种与平台无关的代码──字节码,而不是通常的特定机器上的机器码,由平台上的Java虚拟机中的Java解释器解释执行。Java虚拟机是免费的,在许多平台上都有。
Java提供了良好的可移植性。使用Java作为编程语言,只要进行一次程序开发工作,所开发的程序不需要经过任何改动,便能在各种平台上运行。Java使用两种方法使Java的应用程序不依赖与具体的系统:
采用基于国际标准的数据类型。Java的原始数据类型在任何机器上都是一样的,例如整型总是32位,长整型总是64位等。
提供了一个用于访问底层操作系统功能的可扩展类库。
Java是一种高性能的语言。“鱼与熊掌不可兼得”,通常,健壮性、安全性、平台无关性、可移植性等方面的提高总是要以牺牲性能为代价的。Java也不例外,Java的内存管理增加了运行时系统的复杂性,因为Java运行时系统必须内嵌一个内存管理模块;同样,Java程序的解释执行的效率也要低于直接执行编译后的源码的效率。但是Java采用了一些很好的措施来弥补这些性能上的差距:
生成高效的字节码。Java字节码的设计充分考虑了性能的因素,字节码的格式简单,解释器可以生成高效的机器码。
提供了即时编译和嵌入C代码的可选措施。即时编译是指在运行时把字节码编译成机器码。支持多线程。Java提供了对多线程的语言级的接口,而且Java环境本身就是多线程的。
Java对多线程有良好的支持。多线程技术可以提高程序执行的并发度,提高图形用户界面的交互性能。Java提供了语言内置的多线程控制,简化了多线程应用程序的开发,还支持线程的同步控制。
Java是一种动态的语言。动态特性是面向对象特性的一个延伸,它使得程序能够适应不断变化的执行环境。Java的动态性主要表现在以下几个方面:
Java的类有运行时的表示,这样,即使在运行时刻,程序也能辨别类之间的关系和类型信息,可以动态的从本地或网上把一个类链接到运行系统中去。
Java的类在运行过程中动态的装载,因此,Java可以在分布式的环境中动态的维护应用程序和Java类库之间的一致性。当类库升级后,应用程序无需重新编译,也一样可以利用新类库中新增的功能。
支持动态数据类型和动态协议。通过编写协议句柄,Java可以支持新的、自定义的传输协议,编写内容句柄,可以支持新的数据类型
在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。
可以说,Java虚拟机是Java语言的基础。它是Java技术的重要组成部分。Java虚拟机是一个抽象的计算机,和实际的计算机一样,它具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。Java解释器负责将字节代码翻译成特定机器的机器代码。Java是一种简单的语言。它用到的概念不多,而且多为程序员所熟悉。如果你是一名程序员,掌握Java对你来说是易如反掌的事。即使你没有学过任何编程语言,学习Java也要比学习C++要容易的多。
由于Java最初是为控制电子产品设计的,因此它必须简单明了。为了保证这种简单性,Java去掉了C++中许多复杂的、冗余的、有二义性的概念,例如操作符重载、多继承、数据类型自动转换等。为了将程序员从复杂的内存管理的负担中解脱出来,同时也是为了减少错误,Java使用了自动内存垃圾收集机制,程序员只要在需要的时候申请即可,不需要释放,而由Java自己来收集、释放内存中的无用的块。
与C++相比,Java有着更强的面向对象特性,是一种比较纯粹的面向对象语言。一般我们使用的一些所谓的面向对象的编程语言,如C++,Object Pascal等,实际上都是一种混合型的语言,即在过程式的语言中加上面向对象的扩展。在Java中,几乎万物皆对象,就连一些基本数据类型,如整型、字符型、浮点型等,在Java中都可以作为对象处理。Java的面向对象特性几乎可以与Smalltalk媲美,但是其适用于分布式计算环境的特性却远远超过了Smalltalk。
Java是一种支持分布式操作的程序设计语言。使用Java提供的URL类,用户可以象访问本地文件一样访问网络上的对象,使用非常方便。在客户机/服务器的模式下,Java还可以将运算从服务器端分散到客户端,提高系统的效率,避免了服务器的瓶颈制约。Java的网络类库支持分布式的编程。Socket类提供可靠的流式网络的连接,支持TCP/IP协议。通过编写协议句柄,程序员还可以扩充Java支持的协议集合。
Java提供非常有效的安全控制。由于Java应用于网络程序的开发,因而安全性变的至关重要。因为Java小程序需要下载到客户端解释执行,所以,如果没有安全控制,就会给一些网络黑客以可乘之机,这对用户来说是非常危险的。所幸的是,Java的安全机制可以有效的防止病毒程序的产生、下载程序对本地文件系统的破坏,以及网络黑客窃取密码和入侵。
Java是一种非常健壮的语言。因为在Java中使用了以下手段:
不支持指针。在C++程序中,指针的错误使用通常的程序中BUG的元凶。在Java中彻底去掉了指针,杜绝了内存的非法访问,从而保证了程序的可靠性。
强类型语言
自动内存垃圾收集机制。Java自动收集无用的内存单元,进而防止了由于内存泄漏导致的动态内存分配问题。
完善的异常处理机制,既简化了错误处理任务和恢复,也增加了程序的可读性。
Java具有非常好的平台无关性和可移植性。因为Java最初是为对电子产品编程而设计的,所以它具有完美的平台无关性。它使用一种与平台无关的代码──字节码,而不是通常的特定机器上的机器码,由平台上的Java虚拟机中的Java解释器解释执行。Java虚拟机是免费的,在许多平台上都有。
Java提供了良好的可移植性。使用Java作为编程语言,只要进行一次程序开发工作,所开发的程序不需要经过任何改动,便能在各种平台上运行。Java使用两种方法使Java的应用程序不依赖与具体的系统:
采用基于国际标准的数据类型。Java的原始数据类型在任何机器上都是一样的,例如整型总是32位,长整型总是64位等。
提供了一个用于访问底层操作系统功能的可扩展类库。
Java是一种高性能的语言。“鱼与熊掌不可兼得”,通常,健壮性、安全性、平台无关性、可移植性等方面的提高总是要以牺牲性能为代价的。Java也不例外,Java的内存管理增加了运行时系统的复杂性,因为Java运行时系统必须内嵌一个内存管理模块;同样,Java程序的解释执行的效率也要低于直接执行编译后的源码的效率。但是Java采用了一些很好的措施来弥补这些性能上的差距:
生成高效的字节码。Java字节码的设计充分考虑了性能的因素,字节码的格式简单,解释器可以生成高效的机器码。
提供了即时编译和嵌入C代码的可选措施。即时编译是指在运行时把字节码编译成机器码。支持多线程。Java提供了对多线程的语言级的接口,而且Java环境本身就是多线程的。
Java对多线程有良好的支持。多线程技术可以提高程序执行的并发度,提高图形用户界面的交互性能。Java提供了语言内置的多线程控制,简化了多线程应用程序的开发,还支持线程的同步控制。
Java是一种动态的语言。动态特性是面向对象特性的一个延伸,它使得程序能够适应不断变化的执行环境。Java的动态性主要表现在以下几个方面:
Java的类有运行时的表示,这样,即使在运行时刻,程序也能辨别类之间的关系和类型信息,可以动态的从本地或网上把一个类链接到运行系统中去。
Java的类在运行过程中动态的装载,因此,Java可以在分布式的环境中动态的维护应用程序和Java类库之间的一致性。当类库升级后,应用程序无需重新编译,也一样可以利用新类库中新增的功能。
支持动态数据类型和动态协议。通过编写协议句柄,Java可以支持新的、自定义的传输协议,编写内容句柄,可以支持新的数据类型
发表评论
-
Tomcat集群与负载均衡
2011-01-26 16:00 612在单一的服务器上执行W ... -
xalan-2.7.0.jar下载地址
2011-01-26 15:59 3203xalan-2.7.0.jar下载地址:http://svn. ... -
provider org.apache.xalan.processor.TransformerFactoryImpl not found
2011-01-26 15:58 984完整的Exception: Exception startin ... -
Apache与Tomcat整合的简单方法
2011-01-26 15:57 6961、准备,下载需要的文件。这里假定你已经正确安装配置好了JDK ... -
(转)Tomcat源码学习(一)
2011-01-26 15:57 619Tomcat源码学习(一) http://carllgc.bl ... -
Tomat源码学习(二) [图片]
2011-01-26 15:55 746Tomat源码学习(二) Tomat6的整体架构 在上篇文 ... -
Tomat6架构探讨(续)
2011-01-26 15:54 737Tomat源码学习(二) 下面,我们重点针对Catalin ... -
JNDI
2011-01-26 15:49 739Java术语 英文全称是:Java ... -
JSP内建对象- - 转
2011-01-26 15:48 589① out - javax.servlet.jsp.jspWr ... -
全面理解String(JAVA复习)- -
2011-01-26 15:48 6111. 首先String不属 ... -
初学者如何开发出高质量的J2EE系统 (转载)
2011-01-26 15:47 725J2EE学习者越来越多,J2E ... -
关于JSP中的taglib uri
2011-01-26 15:47 1025自定义标签在jsp中应用是需要声明标签库,有下面两种方式: 1 ... -
context-param和init-param区别
2011-01-26 15:46 478web.xml里面可以定义两种参数: (1)applicati ... -
javax.servlet.Filter运用
2011-01-26 15:46 720Servlets Filter 是Servlet 2.3 规范 ... -
javax.servlet.FilterChain
2011-01-26 15:45 996javax.servlet Interface Filter ... -
引用 五个有用的过滤器 Filter
2011-01-26 15:45 644引用 xyz 的 五个有用的过滤器 Filter 来源:htt ... -
spring:简单的属性参考
2011-01-26 15:43 575在定义文件(XML配置文件)中定义Bean时,可以直接指定一个 ... -
spring:Inversion of Control具体实现【资料搜集】
2011-01-26 15:42 632IoC(Inversion of Control)控制反转的具 ... -
学习Spring前必须了解的几点【资料搜集】
2011-01-26 15:42 891轻量级(Lightweight) 轻量级的形容是相对于 ... -
struts2:主题: Interceptor在Struts2中的应用... [图片]
2011-01-26 15:41 712Interceptor(拦截器)将Action共用的行为独立出 ...
相关推荐
JVMJava虚拟机的简单讲解.pdf
《JVM虚拟机深度讲解》这本书是JAVA开发者深入理解JVM的重要参考资料,它全面而详尽地探讨了Java虚拟机的工作原理与优化技巧。通过阅读本书,开发者可以大幅提升对JVM的理解,从而在编程实践中更好地驾驭这个强大的...
Java虚拟机(JVM,Java Virtual Machine)是Java平台的核心组成部分,它负责执行Java程序,为Java代码提供了跨平台...这本书通常会详细讲解上述知识点,并提供丰富的示例和实践指导,帮助读者从理论到实践全面掌握JVM。
### Java虚拟机(JVM)详解 #### 一、Java虚拟机概述与基本概念 Java虚拟机(JVM)是运行Java字节码的虚拟环境,它位于操作系统之上,硬件之下,提供了一层软件抽象,使得Java程序可以在多种平台上运行而无需重新...
在《JAVA虚拟机性能参数调优指导书》中,你可能找到关于具体JVM参数调整的详细指南和实践案例。《java虚拟机详解_免费.docx》可能深入剖析了JVM的内部机制。《JVM调优总结.pdf》可能汇总了一些常见的调优经验和技巧...
本书讲述了Java虚拟机一运行 所有Java程序的抽象计算机,还讲了几种与虚拟机密切相关的核心Java API。本书通过分析讲解、可运行的示例、参考资料和applet (它作为文中所述概念的交互式例示),提供了Java技术的深人...
本书摒弃了传统的以解读枯燥的Java虚拟机规范文档和分析繁琐的Java虚拟机源代码的方式来讲解Java虚拟机,取而代之的是,以实践的方式,引导读者如何从零开始构建和实现一个Java虚拟机,整个过程不仅能让读者做到对...
《JAVA虚拟机解读入门》是一本面向初学者的指南,旨在带领读者深入理解Java虚拟机(JVM)的工作原理和内部机制。JVM是Java语言的核心组成部分,它为Java程序提供了一个跨平台的运行环境,使得“一次编写,到处运行”...
《深入理解Java虚拟机JVM高级特性与最佳实践》是一本专注于Java开发人员提升技术水平的著作,由周志明撰写。这本书旨在填补Java技术体系中关于Java虚拟机(JVM)知识的空白,帮助读者深入理解JVM的工作原理及其对...
《自己动手写Java虚拟机(GO语言)》是一本面向技术爱好者和程序员的书籍,它指导读者使用Go语言实现一个Java虚拟机(JVM)。这本书的编写基于《深入理解Java虚拟机》第二版以及相关的Java规范,旨在帮助读者深入...
《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...
本书摒弃了传统的以解读枯燥的Java虚拟机规范文档和分析繁琐的Java虚拟机源代码的方式来讲解Java虚拟机,取而代之的是,以实践的方式,引导读者如何从零开始构建和实现一个Java虚拟机,整个过程不仅能让读者做到对...
本资料主要是讲解了Java虚拟机的机制,jvm设计原理与实现
Java虚拟机(JVM,Java Virtual Machine)是Java语言的核心组成部分,它负责解析并执行Java程序。在深入了解JVM之前,我们需要理解其基本结构和工作原理。以下是对JVM的详细解析: 1. **JVM启动与进程生命周期** ...
《实战Java虚拟机——JVM故障诊断与性能优化》是一本深入探讨Java开发人员和运维人员必备技能的书籍。本书作者葛一鸣以其丰富的实战经验,详细阐述了JVM(Java Virtual Machine)的工作原理,以及如何有效地进行故障...
《实战JAVA虚拟机 (JVM故障诊断与性能优化)》是一本深度剖析JVM的实践指南,旨在帮助读者掌握JVM的内部工作机制,提升故障排查和性能调优的能力。本书可与周志明的《深入理解JAVA虚拟机》相媲美,提供了丰富的源码...