二级Java资料:1.2java的工作原理
1.2 java的工作原理
1.2 java虚拟机(1)
java虚拟机是由软件模拟的计算机,可以安全兼容地执行存储在。任何处理器上的类文件(无论是在计算机还是其他电子设备上)。java虚拟机的“机器码”存储在。类文件,有时也称为字节码文件。java程序的跨平台主要是指字节码文件可以在任何装有java虚拟机的计算机或电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成特定的机器码运行。Java源程序需要编译成。类文件(字节码文件),以及编译执行java程序的过程——如图——
1 . 2 . 1 java虚拟机(2)
但是,Java虚拟机的建立需要针对不同的软硬件平台具体实现,既要考虑处理器的类型,也要考虑操作系统的类型。如下图所示,java虚拟机是在SPARC架构、X86架构、MIPS和PPC、UNIX、Linux、windows以及一些实时操作系统等嵌入式处理芯片上实现的。-如图-
1.2.2自动垃圾回收机制
在程序执行过程中,部分内存在使用后被废弃。如果不及时进行垃圾回收,内存就会泄漏,导致系统崩溃。在c++语言中,内存回收是由程序员来完成的。程序员在编写程序时需要释放未使用的对象内存。但是这种人为的管理内存释放的方法,往往会因为程序员的疏忽而导致内存无法恢复,这也增加了程序员的工作量。但在java运行时环境中,总有一个系统级线程,它跟踪内存的使用情况,定期检测未使用的内存,并自动回收,从而避免了内存的泄漏,减轻了程序员的工作量。
1.2.3代码安全检查机制
安全性和便捷性总是相对矛盾的。java编程语言的出现,使得客户端计算机很容易从网络上下载java程序,并在自己的计算机上运行,但如何保证java程序不携带病毒或有其他险恶目的?java语言如果不能保证执行的安全性,是无法生存到今天的。有时候少数程序员抱怨applet连文件系统都不能访问,但正是各种安全措施的实施保证了java语言的生存。
字节码的实现需要经过三个步骤。首先,类加载器负责加载类文件(。类文件)加载到java虚拟机中。在这个过程中,需要检查类文件是否符合类文件规范。其次,字节码验证器检查这类文件的代码中是否存在一些非法操作,比如在applet程序中写原生文件系统的操作;如果字节码检查器通过了测试,java解释器负责将这种文件解释成机器代码以便执行。java虚拟机采用“沙箱”运行模式,即java程序的代码和数据被限制在某个内存空内,不允许程序访问内存空外的内存。如果是applet程序,则不允许访问客户机的文件系统。1 . 2 . 4 Java语言的特点(1)
1对硬件的要求不高,在小型计算机上也能运行良好。和所有新一代编程语言一样,java也采用了面向对象技术,更加彻底。所有的java程序和applet都是对象,封装实现模块化和信息隐藏,继承实现代码重用,用户可以建立自己的类库。而且java采用了相对简单的面向对象技术,去掉了运算符重载和多继承的复杂概念,采用了单继承、类强制转换、多线程、引用(不是指针)等方法。自动垃圾收集机制也让程序员不用担心管理内存的问题,使得程序设计更加简单,大大降低了出错的可能性。java采用了C语言的大部分语法,熟悉C语言的程序员会发现,Java语言在语法上和C语言非常相似。
2。健壮和安全
java语言在编译和运行程序时要严格检查。作为一种强制类型语言,java在编译和连接过程中会做大量的类型检查,以防止不匹配。如果引用了非法类型,或者执行了非法类型操作,java会在解释时指出错误。在java程序中,不能使用地址计算方法通过指针访问内存单元,这大大降低了出错的可能性。而且java数组不是用指针实现的,所以在检查时可以避免数组越界的发生。自动垃圾收集机制也增加了java的健壮性。
Java作为一种网络语言,必须提供足够的安全性,防止病毒的攻击。java在运行应用程序时,会严格检查其对数据的访问权限,比如不允许网络上的应用程序修改本地数据。下载到用户计算机上的字节码在执行之前要经过一个验证工具。一旦字节码被验证,它就被java解释器执行,这通过防止对存储器的直接访问进一步提高了java的安全性。同时,java的高健壮性也增强了java的安全性。
3。这种结构是中立的和可移植的
网络中充满了不同类型的机器和操作系统。为了使java程序可以在网络的任何地方运行,java编译器编译并生成一种独立于架构的字节码结构文件格式。任何类型的计算机都可以运行字节码文件,只要它的处理器和操作系统上有java运行时环境。即使在单系统计算机上,结构中立性也起着非常重要的作用。随着处理器结构的不断发展和变化,程序员不得不编写各种版本的程序在不同的处理器上运行,这使得开发能够在所有平台上工作的软件集合成为可能。使用java将使同一版本的应用程序在所有平台上运行。
架构的中立性也使得java系统具有可移植性。Java运行时系统可以移植到不同的处理器和操作系统上。java的编译器是用java语言实现的,解释器是用java语言和标准C语言实现的,所以移植起来更方便。
0条评论