分享
 
 
 

什么叫JAVA虚拟机

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

在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可以支持新的、自定义的传输协

议,编写内容句柄,可以支持新的数据类型。

至于应用,就不必说了!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有