scjp培训第一章Java编程语言起步.docx
- 文档编号:7306751
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:15
- 大小:120.81KB
scjp培训第一章Java编程语言起步.docx
《scjp培训第一章Java编程语言起步.docx》由会员分享,可在线阅读,更多相关《scjp培训第一章Java编程语言起步.docx(15页珍藏版)》请在冰豆网上搜索。
scjp培训第一章Java编程语言起步
第一章起步
本模块对Java编程语言做了一般性描述,包括Java虚拟机、垃圾收集和安全性等。
第一节相关问题
讨论──下列问题与本模块相关
-Java编程语言是一种完整的语言吗?
它是不是仅用于编写Web程序?
-你为什么需要另一种编程语言?
-Java平台是如何在其它语言平台上提高性能的?
第二节目标
完成本模块的学习后,你应该能够:
-描述Java编程语言的主要特性
-描述Java虚拟机的主要功能
-描述垃圾收集是如何进行的
-列举由处理代码安全性的Java平台所执行的三大任务
-定义Class,Package,Applets和Applications
-编写、编译并运行简单Java应用程序
-利用Java技术应用程序编程界面(API)的在线文档来标识Java.lang包的方法。
参考资料
辅助资源──下列参考资料可为本模块所讨论的问题提供更详细的补充
-LindholmandYellin.1997.TheJavaVirtualMachineSpecification.Addison-Wesley.
-Yellin,Frank.Low-LevelSecurityinJava,whitepaper.[Online].Available:
第三节什么是Java编程语言?
什么是Java编程语言
Java是:
-一种编程语言
-一种开发环境
-一种应用环境
-一种部署环境
-句法与C++相似,语义与SmallTalk相似
-用来开发applets,又用来开发applications
Java是:
-一种编程语言
-一种开发环境
-一种应用环境
-一种部署环境
Java编程语言的句法与C++的句法相似,语义则与SmallTalkTM的语义相似。
Java编程语言可被用来创建任何常规编程语言所能创建的应用程序。
在WorldWideWeb(WWW)和能够运行称为applets程序的浏览器的有关介绍中,人们经常提及Java编程语言。
Applets是一种贮存于WWW服务器的用Java编程语言编写的程序,它通常由浏览器下载到客户系统中,并通过浏览器运行。
Applets通常较小,以减少下载时间,它由超文本标识语言(HTML)的Web页来调用。
Javaapplications是一种独立的程序,它不需要任何Web浏览器来执行。
它们是一种典型的通用程序;可运行于任何具备Java运行环境的设备中。
1.3.1Java编程语言的主要目标
Java编程语言的主要目标
提供一种解释环境为
-提高开发速度
-代码可移植性
-使用户能运行不止一个活动线程
-当程序运行时,能动态支持程序改变
提供更好的安全性
设计Java编程语言的主要目标是
提供一种易于编程的语言,从而
Ú消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。
Ú利用面向对象的概念使程序真正地成为可视化程序
Ú为使代码尽可能清晰合理、简明流畅提供了一种方法
Java编程语言的主要目标
设计Java编程语言的主要目标是
提供一种易于编程的语言
-消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。
-利用面向对象的概念使程序真正地成为可视化程序
-为使代码尽可能清晰合理、简明流畅提供了一种方法
Java编程语言的主要目标(续)
-为获得如下两点益处提供一种解释环境
Ú提高开发速度──消除编译─链接—装载—测试周期。
Ú代码可移植性──使操作系统能为运行环境做系统级调用
-为运行不止一个活动线程的程序提供了一种方式
-通过允许下载代码模块,从而当程序运行时也能动态支持程序改变。
-为那些保证安全性而装载的代码模块提供了一种检查方法。
Java编程语言的主要目标
下列特性使这些目标付诸实现:
-Java虚拟机(JVM)
-垃圾收集
-代码安全性
Java编程语言的主要目标(续)
精心开发的Java技术体系结构为上述目标的实现提供了保证。
Java的如下特性使这些目标得以实现
-Java虚拟机
-垃圾收集
-代码安全性
1.3.2Java虚拟机
Java虚拟机
-提供硬件平台规范
-解读独立于平台的已编译的字节码
-可当作软件或硬件来实现
-可在Java技术开发工具或Web浏览器上实现
Java虚拟机规范为Java虚拟机(JVM)作了如下定义:
在真实机器中用软件模拟实现的一种想象机器。
Java虚拟机代码被存储在.class文件中;每个文件都包含最多一个public类。
Java虚拟机规范为不同的硬件平台提供了一种编译Java技术代码的规范,该规范使Java软件独立于平台,因为编译是针对作为虚拟机的“一般机器”而做,这个“一般机器”可用软件模拟并运行于各种现存的计算机系统,也可用硬件来实现。
Java虚拟机
JVM为下列各项做出了定义
-指令集(中央处理器[CPU])
-注册集
-类文件格式
-栈
-垃圾收集堆
-存储区
Java虚拟机(续)
编译器在获取Java应用程序的源代码后,将其生成字节码,它是为JVM生成的一种机器码指令。
每个Java解释器,不管它是Java技术开发工具,还是可运行applets的Web浏览器,都可执行JVM。
JVM为下列各项做出了定义
-指令集(相当于中央处理器[CPU])
-注册集
-类文件格式
-栈
-垃圾收集堆
-存储区
Java虚拟机
-由保持适当类型约束的字节码形成代码
-大部分类型检查在编译代码时完成
-每个由SUNTM批准的JVM必须能够运行任何从属类文件
Java虚拟机(续)
JVM的代码格式由紧缩有效的字节码构成。
由JVM字节码编写的程序必须保持适当的类型约束。
大部分类型检查是在编译时完成。
任何从属的Java技术解释器必须能够运行任何含有类文件的程序,这些类文件应符合Java虚拟机规范中所指定的类文件格式。
1.3.3垃圾收集
许多编程语言都允许在程序运行时动态分配存储器,分配存储器的过程由于语言句法不同而有所变化,但总是要将指针返回到存储区的起始位置
当分配存储器不再需要时(存储器指针已溢出范围),程序或运行环境应取消分配存储器。
在C,C++或其它语言中,程序员负责取消分配存储器。
有时,这是一件很困难的事情。
因为你并不总是事先知道存储器应在何时被释放。
当在系统中没有能够被分配的存储器时,可导致程序瘫痪,这种程序被称作具有存储器漏洞。
Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。
在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器。
垃圾收集在Java技术程序的生命周期中自动进行,它解除了取消分配存储器的要求,并避免了存储器漏洞。
然而,垃圾收集可在JVM实现的周期中,产生意想不到的变化。
1.3.4代码的安全性
概述
下图显示了Java技术的运行环境及其加强代码安全性的方法。
Java源程序文件通过“编译”,在你的感觉中,就好象是将它们从程序员编写的文本文件格式转换成了一组字节码。
字节码被存储在.class文件中。
构成Java软件程序的字节码在运行时被加载、校验并在解释器中运行。
当运行applets时,字节码可被下载,然后由建于浏览器中的JVM进行解释。
解释器具备两种功能,一是执行字节码,二是对底层硬件做适当调用。
在一些使用Java技术的运行环境中,部分校验过的字节码被编译成原始机器码并直接运行于硬件平台。
这就使Java软件代码能够以C或C++接近的速度运行,只是在加载时,因为要编译成原始机器码而略有延迟。
注意--SUNMicrosystemsTM通过采用新的技术,使Java虚拟机的性能已经有了进一步的提高。
这种新型虚拟机被称为HotSpotTM虚拟机,它具备了使Java编程语言能象编译C++一样快速运行的潜力。
HotSpot虚拟机对操作系统具有本地多线程支持能力,而不是虚拟多线程。
因而,HotSpot虚拟机可保证对一个应用程序来说,并不一定有代码才能使用这一能力。
HotSpot技术解决了性能与移植性之间的难题。
代码安全性(续)
Java运行环境
一个Java技术的运行环境可运行为JVM编译的代码并执行如下三大任务:
-加载代码-由类加载器执行
-校验代码-由字节码校验器执行
-执行代码-由运行时的解释器执行
类加载器
类加载器为程序的执行加载所需要的全部类。
类加载器将局部文件系统的类名空间与来自网络源的类名空间相分离,以增加安全性。
由于局部类总是首先加载,因而可限制任何“特洛依木马”的应用。
当全部类被加载后,可执行文件的存储器格式被确定。
这时,特定的存储器地址被分配给符号引用并创建检索表格。
由于存储器格式在运行时出现,因而Java技术解释器增加了保护以防止对限制代码区的非法进入。
代码安全性(续)
字节码校验器
Java软件代码在实际运行之前要经过几次测试。
JVM将代码输入一个字节码校验器以测试代码段格式并进行规则检查--检查伪造指针、违反对象访问权限或试图改变对象类型的非法代码。
注意----所有源于网络的类文件都要经过字节码校验器
代码安全性(续)
校验过程
字节码校验器对程序代码进行四遍校验,这可以保证代码符合JVM规范并且不破坏系统的完整性。
如果校验器在完成四遍校验后未返回出错信息,则下列各点可被保证:
-类符合JVM规范的类文件格式
-无访问限制违例
-代码未引起操作数栈上溢或下溢
-所有操作代码的参数类型将总是正确的
-无非法数据转换发生,如将整数转换为对象引用
-对象域访问是合法的
第四节一个基本的Java应用程序
象其它编程语言一样,Java编程语言也被用来创建应用程序。
一个共同的小应用程序范例是在屏幕上显示字串“HelloWorld!
”。
下列代码给出了这个Java应用程序。
1.4.1HelloWorldApp
1.//
2.//SampleHelloWorldapplication
3.//
4.publicclassHelloWorldApp{
5.publicstaticvoidmain(Stringargs[]){
6.System.out.println("HelloWorld!
");
7.}
8.}
以上程序行是在你的屏幕上打印“HelloWorld!
”所需的最少组件。
1.4.2描述HelloWorldApp
第1-3行
程序中的1-3行是注释行
1//
2//SampleHelloWorldapplication
3//
第4行
第4行声明类名为HelloWorldApp。
类名(Classname)是在源文件中指明的,它可在与源代码相同的目录上创建一个classname·class文件。
在本例题中,编译器创建了一个称为HelloWorldApp.class的文件,它包含了公共类HelloWorldApp的编译代码。
4publicclassHelloWorldApp{
第5行
第5行是程序执行的起始点。
Java技术解释器必须发现这一严格定义的点,否则将拒绝运行程序。
其它程序语言(特别是C和C++)也采用main()声明作为程序执行的起始点。
此声明的不同部分将在本课程的后几部分介绍。
如果在程序的命令行中给出了任何自变量,它们将被传递给main()方法中被称作args的String数组。
在本例题中,未使用自变量。
5publicstaticvoidmain(Stringargs[]){
-public-方法main()可被任何程序访问,包括Java技术解释器。
-static-是一个告知编译器main()是用于类HelloWorldApp中的函数的关键字。
为使main()在程序做其它事之前就开始运行,这一关键字是必要的。
-void-表明main()不返回任何信息。
这一点是重要的,因为Java编程语言要进行谨慎的类型检查,包括检查调用的方法确实返回了这些方法所声明的类型。
-Stringargs-是一个String数组的声明,它将包含位于类名之后的命令行中的自变量。
javaHelloWorldAppargs[0]args[1]····
第6行
第6行声明如何使用类名、对象名和方法调用。
它使用由System类的out成员引用的PrintStreamout对象的println()方法,将字串“HelloWorld!
”打印到标准输出上。
6System.out.println(“HelloWorld!
”);
在这个例子中,println()方法被输入了一个字串自变量并将其写在了标准输出流上。
第7-8行
本程序的7-8行分别是方法main()和类HelloWorldApp的下括号。
7}
8}
1.4.3编译并运行HelloWorldApp
编译并运行HelloWorldApp
-编译HelloWorldApp.java
javacHelloworldApp.java
-运行应用程序
javaHelloWorldApp
-判定编译和运行的共同错误
编译
当你创建了HelloWorldApp.java源文件后,用下列程序行进行编译:
c:
\student\javacHelloWorldApp.java
如果编译器未返回任何提示信息,新文件HelloWorldApp.class则被存储在与源文件相同的目录中,除非另有指定。
如果在编译中遇到问题,请参阅本模块的查错提示信息部分。
运行
为运行你的HelloWorldApp应用程序,需使用Java解释器和位于bin目录下的java:
c:
\student\javaHelloWorldApp
HelloWorld!
注意-必须设置PATH环境变量以发现java和javac,确认它包括c:
\jdk1.2\bin
1.4.4编译查错
编译时的错误
以下是编译时的常见错误
-javac:
Commandnotfound
PATH变量未正确设置以包括javac编译器。
javac编译器位于JDK目录下的bin目录。
-HelloWorldApp.java:
6:
Methodprintl(java.lang.String)
notfoundinclassjava.io.PrintStream.System.
out.printl("HelloWorld!
");
方法名println出现打印错误。
-InclassHelloWorldApp:
mainmustbepublicorstatic
该错误的出现是因为词static或public被放在了包含main方法的行之外。
运行时的错误
-can’tfindclassHelloWorldApp(这个错误是在打印javaHelloWorldApp时产生的)
通常,它表示在命令行中所指定的类名的拼写与filename.class文件的拼写不同。
Java编程语言是一种大小写区别对待的语言。
例如:
publicclassHelloWorldapp
创建了一个HellloWorldapp.class,它不是编译器所预期的类名(HelloWorldApp.class)。
-命名
如果·java文件包括一个公共类,那么它必须使用与那个公共类相同的文件名。
例如在前例中的类的定义是
publicclassHelloWorldapp
源文件名则必须是HelloWorldapp.java
-类计数
在源文件中每次只能定义一个公共类。
源文件布局
源文件布局
包含三个“顶级”要素
-一个可选择的包声明
-任意数量的输入语句
-类和界面声明
一个Java源文件可包含三个“顶级”要素:
-一个包声明(可选)
-任意数量的输入语句
-类和界面声明
该三要素必须以上述顺序出现。
即,任何输入语句出现在所有类定义之前;如果使用包声明,则包声明必须出现在类和输入语句之前。
第五节类和包介绍
类和包介绍
1.什么是类和包?
2.Java类库中的几个重要包
java.lang
java.awt
java.applet
java.io
java.util
类是描述提供某种功能的模块的一般术语。
Java开发集(JDK)给出了一套标准的类(称作类库),这些类可执行大部分所需的基本行为不仅为编程任务(例如,类可提供基本的数学函数、数组和字符串),而且为图形和网络。
类库被组织成许多包,每个包都包含几个类。
如下所列为一些重要的包:
java.lang包含一些形成语言核心的类,如String、Math、Integer和Thread。
java.awt包含了构成抽象窗口工具包(AWT)的类,这个包被用来构建和管理应用程序的图形用户界面。
java.applet包含了可执行applet特殊行为的类。
包含执行与网络相关的操作的类和处理接口及统一资源定位器(URLs)的类。
java.io包含处理I/O文件的类。
java.util包含为任务设置的实用程序类,如随机数发生、定义系统特性和使用与日期日历相关的函数。
第六节使用JavaAPI文档
使用JavaAPI文档
1.一组超文本标识语言(HTML)文件提供了有关API的信息
2.一个包包含了对所有类信息的超链接
3.一个类文档包括类层次、一个类描述、一组成员变量和构造函数等
一组HTML文件以文档的形式提供了有关API的信息,这个文档的布局是等级制的,因而主页列出所有的包为超链接。
如果选中了一个特殊包的热链接,作为那个包成员的类将被列出。
从一个包页选中一个类的热链接将提交一页有关那个类的信息。
图1-1显示了这样一个类文档
图1-1
一个类文档的主要部分包括:
-类层次
-类和类的一般目的描述
-成员变量列表
-构造函数列表
-方法列表
-变量详细列表及目的和用途的描述
-构造函数详细列表及描述
-方法详细列表及描述
练习:
基本任务
练习目标--在本练习里,你将利用JavaAPI文档练习如何识别包、类和方法并练习标准输入输出方法。
你还将编写、编译和运行两个简单的使用这些方法的应用程序。
一、准备
理解本模块中提出的概念和术语对理解文件和运用文件信息编写程序至关重要。
二、任务
1级:
阅读文件
你的老师将指导你如何启动API浏览器并打开JavaAPI在线文档的索引页。
找到java.lang包
在此包中定义了那些类?
在System类中有那些方法?
System.out.println方法是在什么包中定义的?
什么是标准输入方法调用?
2级:
创建一个Java应用程序
使用任意文本编辑器,创建一个可打印你选定的字串的与HelloWorldApp类似的应用程序。
编译程序并纠正错误。
用解释器运行程序。
3级:
使用标准输入和标准输出
编写一个称为MyCat的应用程序,它将从stdin中读出一行并将这一行写回到stdout.无论stdin还是stdout都在java.lang.System类中。
三、检查你的进度
在进入下一模块之前,请确认你已经能够:
-描述Java编程语言的主要特性
-描述JVM
-描述垃圾收集是如何进行的
-列出由处理代码安全性的Java平台所执行的三个任务
-定义术语类、包、applets和application
-编写、编译并运行一个简单的Java应用程序
-使用Java技术应用程序编程界面(API)的在线文档识别java.lang包中的方法。
四、思考题
使用Java编程语言将为你的工作带来什么益处?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- scjp 培训 第一章 Java 编程 语言 起步