Java基础:JVM(Java 虚拟机)的详细讲解

孙彦康吧

孙彦康吧

2016-02-19 19:11

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

  可能有很多学习Java的朋友还不知道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的安全机制可以有效的防止病毒程序的产生、下载程序对本地文件系统的破坏,以及网络黑客窃取密码和入侵。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  Java是一种非常健壮的语言。因为在Java中使用了以下手段:

  不支持指针。在C++程序中,指针的错误使用通常的程序中BUG的元凶。在Java中彻底去掉了指针,杜绝了内存的非法访问,从而保证了程序的可靠性。

  强类型语言

  自动内存垃圾收集机制。Java自动收集无用的内存单元,进而防止了由于内存泄漏导致的动态内存分配问题。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  完善的异常处理机制,既简化了错误处理任务和恢复,也增加了程序的可读性。

  Java具有非常好的平台无关性和可移植性。因为Java最初是为对电子产品编程而设计的,所以它具有完美的平台无关性。它使用一种与平台无关的代码──字节码,而不是通常的特定机器上的机器码,由平台上的Java虚拟机中的Java解释器解释执行。Java虚拟机是免费的,在许多平台上都有。

  Java提供了良好的可移植性。使用Java作为编程语言,只要进行一次程序开发工作,所开发的程序不需要经过任何改动,便能在各种平台上运行。Java使用两种方法使Java的应用程序不依靠与具体的系统:

  采用基于国际标准的数据类型。Java的原始数据类型在任何机器上都是一样的,例如整型总是32位,长整型总是64位等。

  提供了一个用于访问底层操作系统功能的可扩展类库。

    Java是一种高性能的语言。“鱼与熊掌不可兼得”,通常,健壮性、安全性、平台无关性、可移植性等方面的提高总是要以牺牲性能为代价的。Java也不例外,Java的内存治理增加了运行时系统的复杂性,因为Java运行时系统必须内嵌一个内存治理模块;同样,Java程序的解释执行的效率也要低于直接执行编译后的源码的效率。但是Java采用了一些很好的措施来弥补这些性能上的差距:

  

展开更多 50%)
分享

猜你喜欢

Java基础:JVM(Java 虚拟机)的详细讲解

编程语言 网络编程
Java基础:JVM(Java 虚拟机)的详细讲解

Java(JVM)虚拟机结构基础

编程语言 网络编程
Java(JVM)虚拟机结构基础

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java虚拟机

编程语言 网络编程
java虚拟机

深入解析java虚拟机

编程语言 网络编程
深入解析java虚拟机

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java本纪之Java虚拟机的10年

编程语言 网络编程
Java本纪之Java虚拟机的10年

Java虚拟机结构基础研究之一

编程语言 网络编程
Java虚拟机结构基础研究之一

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

conn.execute的用法

conn.execute的用法

技巧:Java中用动态代理类实现记忆功能

技巧:Java中用动态代理类实现记忆功能
下拉加载更多内容 ↓