技术开发 频道

Java程序设计知识与技能(一)

【IT168 技术教程】

 相信在认真学习完本文后,你应该能够完成以下内容:
 
·描述Java 编程语言的主要特性
·描述Java虚拟机的主要功能
·描述垃圾收集是如何进行的
·列举由处理代码安全性的Java平台所执行的三大任务
·定义Class,Package,Applets和Applications
·编写、编译并运行简单Java应用程序
·利用Java技术应用程序编程界面(API)的在线文档来标识Java. lang包的方法
 
什么是Java编程语言
 
Java是:
 
·一种编程语言
·一种开发环境
·一种应用环境
·一种部署环境
·句法与C++相似,语义与Small Talk相似
·用来开发applets,又用来开发applications
 
  在World Wide Web(WWW)和能够运行称为applets程序的浏览器的有关介绍中,人们经常提及Java编程语言。Applets是一种贮存于WWW服务器的用Java编程语言编写的程序,它通常由浏览器下载到客户系统中,并通过浏览器运行。Applets通常较小,以减少下载时间,它由超文本标识语言(HTML)的Web页来调用。

  Java applications是一种独立的程序,它不需要任何Web浏览器来执行。它们是一种典型的通用程序;可运行于任何具备Java运行环境的设备中。
 
Java编程语言的主要目标
 
提供一种解释环境为:
·提高开发速度
·代码可移植性
·使用户能运行不止一个活动线程
·当程序运行时,能动态支持程序改变
·提供更好的安全性
 
设计Java编程语言的主要目标
 
·提供一种易于编程的语言,从而消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。
·利用面向对象的概念使程序真正地成为可视化程序。
·为使代码尽可能清晰合理、简明流畅提供了一种方法。
 
为获得如下两点益处提供一种解释环境
 
·提高开发速度──消除编译─链接装载测试周期。
·代码可移植性──使操作系统能为运行环境做系统级调用。
·为运行不止一个活动线程的程序提供了一种方式。
·通过允许下载代码模块,从而当程序运行时也能动态支持程序改变。
·为那些保证安全性而装载的代码模块提供了一种检查方法。
 
下列特性使这些目标付诸实现:
 
·Java虚拟机Java虚拟机(JVM)
·垃圾收集
·代码安全性
 
什么是Java虚拟机?
 
·提供硬件平台规范
·解读独立于平台的已编译的字节码
·可当作软件或硬件来实现
·可在Java技术开发工具或Web浏览器上实现
 
Java虚拟机规范为Java虚拟机(JVM)作了如下定义
 
  在真实机器中用软件模拟实现的一种想象机器。Java虚拟机代码被存储在 .class文件中;每个文件都包含最多一个public类。
 
  Java虚拟机规范为不同的硬件平台提供了一种编译Java技术代码的规范,该规范使Java软件独立于平台,因为编译是针对作为虚拟机的一般机器而做,这个一般机器可用软件模拟并运行于各种现存的计算机系统,也可用硬件来实现。
 
JVM为下列各项做出了定义
 
·指令集(中央处理器[CPU])
·注册集
·类文件格式
·栈
·垃圾收集堆
·存储区
 
  编译器在获取Java 应用程序的源代码后,将其生成字节码,它是为JVM生成的一种机器码指令。每个Java解释器,不管它是Java技术开发工具,还是可运行applets的Web浏览器,都可执行JVM。
 
·由保持适当类型约束的字节码形成代码
·大部分类型检查在编译代码时完成
·每个由SUN TM批准的JVM必须能够运行任何从属类文件
 
  JVM的代码格式由紧缩有效的字节码构成。由JVM字节码编写的程序必须保持适当的类型约束。大部分类型检查是在编译时完成。任何从属的Java技术解释器必须能够运行任何含有类文件的程序,这些类文件应符合Java虚拟机规范中所指定的类文件格式。
 
垃圾收集
 
·Java编程语言提供了一种系统级线程以跟踪存储区分配
·垃圾收集
·可检查和释放不再需要的存储器
·可自动完成上述工作
·可在JVM实现周期中,产生意想不到的变化
 
  许多编程语言都允许在程序运行时动态分配存储器,分配存储器的过程由于语言句法不同而有所变化,但总是要将指针返回到存储区的起始位置,当分配存储器不再需要时(存储器指针已溢出范围),程序或运行环境应取消分配存储器。
 
  在C,C++ 或其它语言中,程序员负责取消分配存储器。有时,这是一件很困难的事情。因为你并不总是事先知道存储器应在何时被释放。当在系统中没有能够被分配的存储器时,可导致程序瘫痪,这种程序被称作具有存储器漏洞。
 
  Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器。垃圾收集在Java技术程序的生命周期中自动进行,它解除了取消分配存储器的要求,并避免了存储器漏洞。然而,垃圾收集可在JVM实现的周期中,产生意想不到的变化。
 
代码的安全性概述
 
  下图显示了Java技术的运行环境及其加强代码安全性的方法。
  Java源程序文件通过编译,在你的感觉中,就好象是将它们从程序员编写的文本文件格式转换成了一组字节码。字节码被存储在 .class文件中。构成Java软件程序的字节码在运行时被加载、校验并在解释器中运行。当运行applets时,字节码可被下载,然后由建于浏览器中的JVM进行解释。解释器具备两种功能,一是执行字节码,二是对底层硬件做适当调用。
(Java技术的运行环境及其加强代码安全性的方法)
 
  在一些使用Java技术的运行环境中,部分校验过的字节码被编译成原始机器码并直接运行于硬件平台。这就使Java软件代码能够以C或C++接近的速度运行,只是在加载时,因为要编译成原始机器码而略有延迟。
 
  注意:SUN MicrosystemsTM通过采用新的技术,使Java虚拟机的性能已经有了进一步的提高。这种新型虚拟机被称为HotSpotTM虚拟机,它具备了使Java编程语言能象编译C++一样快速运行的潜力。HotSpot虚拟机对操作系统具有本地多线程支持能力,而不是虚拟多线程。因而,HotSpot虚拟机可保证对一个应用程序来说,并不一定有代码才能使用这一能力。HotSpot技术解决了性能与移植性之间的难题。
 
执行三大任务:
 
·加载代码
·校验代码
·执行代码
 
Java运行环境
 
一个Java技术的运行环境可运行为JVM编译的代码并执行如下三大任务:
 
·加载代码-由类加载器执行
·校验代码-由字节码校验器执行
·执行代码-由运行时的解释器执行
 
类加载器
 
  类加载器为程序的执行加载所需要的全部类。类加载器将局部文件系统的类名空间与来自网络源的类名空间相分离,以增加安全性。由于局部类总是首先加载,因而可限制任何特洛依木马的应用。
 
  当全部类被加载后,可执行文件的存储器格式被确定。这时,特定的存储器地址被分配给符号引用并创建检索表格。由于存储器格式在运行时出现,因而Java技术解释器增加了保护以防止对限制代码区的非法进入。
 
字节码校验可保证
 
·代码符合JVM规范
·代码不破坏系统完整性
·代码不会引起操作数栈上溢或下溢
·所有操作代码的参数类型的准确性
 
无非法数据转换(整数到指针的转换)
 
字节码校验器
 
  Java软件代码在实际运行之前要经过几次测试。JVM将代码输入一个字节码校验器以测试代码段格式并进行规则检查--检查伪造指针、违反对象访问权限或试图改变对象类型的非法代码。
 
注意:所有源于网络的类文件都要经过字节码校验器
 
校验过程
 
  字节码校验器对程序代码进行四遍校验,这可以保证代码符合JVM规范并且不破坏系统的完整性。如果校验器在完成四遍校验后未返回出错信息,则下列各点可被保证:
 
·类符合JVM规范的类文件格式
·无访问限制违例
·代码未引起操作数栈上溢或下溢
·所有操作代码的参数类型将总是正确的
·无非法数据转换发生,如将整数转换为对象引用
·对象域访问是合法的
0
相关文章