Java实验1.docx
- 文档编号:29241170
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:20
- 大小:180.70KB
Java实验1.docx
《Java实验1.docx》由会员分享,可在线阅读,更多相关《Java实验1.docx(20页珍藏版)》请在冰豆网上搜索。
Java实验1
第1章概述
最近几年,随着全球Internet的迅猛发展及万维网(WorldWideWeb,WWW)的日益普及和快速增长,整个计算机环境正在经历着深刻的变革。
1989年,HTML(HypertextMarkupLanguage,超文本标记语言)和WWW的产生是Internet数据描述语言的一次飞跃。
Java语言产生后,由于它独具特点,逐渐成为在Internet网络以及操作系统等其他方面的最受欢迎的开发与编程语言。
1.1 Java的诞生与发展规律
美国硅谷有一句行话,每10~15年有一次轮回。
最近的一次轮回就是从Java开始。
Java是一个由Sun公司开发而成的新一代编程语言。
使用它可在各式各样不同种机器、不同操作平台的网络环境中开发软件。
不论使用的是哪一种WWW浏览器、哪一种计算机、哪一种操作系统,只要WWW浏览器上面注明了“支持Java”,就可以看到生动的主页。
Java正在逐步成为Internet应用的主要开发语言。
它彻底改变了应用软件的开发模式,带来了自PC机以来的又一次技术革命,为迅速发展的信息世界增添了新的活力。
1.1.1Java的诞生
美国Sun公司的Java语言开发小组成立于1991年,其目的是开拓消费类电子产品市场,例如,交互式电视、烤面包箱等。
Sun内部人员把这个项目称为Green,那时WorldWideWeb(万维网)还在图纸上。
该小组的领导人是JamesGosling,是一位非常杰出的程序员。
他出生于1957年,于1984年加盟Sun公司,之前在一家IBM研究机构工作。
在研究开发过程中,Gosling深刻体会到消费类电子产品和工作站产品在开发哲学上的差异:
消费类电子产品要求可靠性高、费用低、标准化、使用简单,用户并不关心CPU的型号,也不欣赏专用昂贵的RISC处理器,他们需要建立在一个标准基础之上,具有一系列可选的方案,从8086到80586都可以选取。
为了使整个系统与平台无关,Gosling首先从改写C编译器着手。
但是Gosling在改写过程中感到仅C是无法满足需要的,于是在1991年6月份开始准备开发一个新的语言,那么给它起一个什么名字呢?
Gosling回首向窗外望去,看见一棵老橡树,于是取名Oak(橡树),这就是Java语言的前身。
后来发现Oak已是Sun公司另一个语言的注册商标,才改名为Java,即太平洋上一个岛屿的名字,该岛出产一种味道非常美妙的咖啡。
Gosling在开始写Java时,并不局限于扩充语言机制本身,更注重于语言所运行的软硬件环境。
他要建立一个系统,这个系统运行于一个巨大的、分布的、异构的网格环境中,完成各电子设备之间的通信与协同工作。
Gosling在设计中采用了虚机器码(VirtualMachineCode)方式,即Java语言编译后产生的是虚拟机,虚拟机运行在一个解释器上,每一个操作系统均有一个解释器。
这样一来,Java就成了平台无关语言。
这和Gosling设计的SunNeWs窗口系统有着相同的技术味道。
在NeWs中用户界面统一用Postscript描述,不同的显示器有不同的Postscript解释器,这样便保证了用户界面的良好的可移植性。
PatrickNaughton也是Sun公司的技术骨干,曾经是OpenWindows项目的负责人。
当Naughton加入该小组后,整个工作进展神速。
经过17个月的奋战,整个系统胜利完成。
它是由一个操作系统、一种语言(Java)、一个用户界面、一个新的硬件平台、三块专用芯片构成的。
通常情况下,这样的项目在Sun公司要75个人干3年。
项目完成后,在Sun公司内部做了一次展示和鉴定,观众的反应是:
在各方面都采用了崭新的、非常大胆的技术。
许多参观者对Java留下了非常深刻的印象,特别得到Sun的两位领导人ScottMcNealy和BillJoy的关注,但Java的前途未卜。
到了1994年,WWW已如火如荼地发展起来。
Gosling意识到WWW需要一个中性的浏览器,它不依赖于任何硬件平台和软件平台,它应是一种实时性较高、可靠安全、有交互功能的浏览器。
于是Gosling决定用Java开发一个新的Web浏览器。
这项工作由Naughton和JonathanPayne负责,到1994年秋天,完成了WebRunner的开发工作。
WebRunner是HotJava的前身,这个原型系统展示了Java可能带来的广阔市场前景。
WebRunner改名为HotJava,并于1995年5月23日发表后在产业界引起了巨大的轰动,Java的地位也随之而得到肯定。
又经过一年的试用和改进,Java1.0版终于在1996年年初正式发表。
Java语言(简称Java)的诞生对IT产业带来了一次变革,从某些意义上讲对人们的日常生活也产生了深远的影响。
Java作为一种类C/C++语言,但其平台无关性和与互联网发展紧密结合,预计未来必定成为互联网和计算机应用的主流。
Java当之无愧地被纽约时报评为1995年的十大科技成果之一(计算机类仅此一项入选),Java将作为一项重大发明载入科技史册!
微软总裁比尔盖茨曾在观察了一段时间后,十分惭愧地说:
“Java是长时间以来最卓越的程序设计语言”,并确定微软整个软件开发的战略从PC单机时代向着以网络为中心的计算机时代转移,而购买Java则是他的重大战略决策的实施部署。
Sun公司的总裁ScottMcNealy认为Java为Internet和WWW开辟了一个崭新的时代。
环球信息网WWW的创始人Berners-Lee说:
计算机事业发展的下一个浪潮就是Java,并且将很快发生。
所以,使用Java已成大势所趋!
Microsoft和IBM两大公司都在Internet上销售用Java编写的软件,IBM著名Java开发集成环境VisualAgeForJava、网站集成平台Webspere,Microsoft的VJ++都是目前主要常见的Java开发环境或产品。
另外,Apple,HP,IBM,Microsoft,Novell,SGI,SCO,Tandem等公司均在各自开发的操作系统中加入了Java开发运行环境,而负责开发并推广Java技术的Javasoft公司(这是Sun公司下属的一个子公司),通过颁发许可证的办法来允许各家公司把Java虚拟机和Java的Applets类库嵌入他们开发的操作系统,这样各类开发人员就能更容易地选择多种平台来使用Java语言编程,不同的用户也就可以脱离Web浏览器来运行Java应用程序,这无疑是很受广大用户的欢迎的,也为Java语言的应用开拓了极为广阔的前景。
每年一度的JavaOne大会几乎都会推出让Java更受人欢迎的新技术,曾经有人预言:
Java将是网络上的“世界语”,将会被未来所证实。
1998年,由于Java在安全、性能等方面到了一个关键阶段,甚至Java被列入了20世纪末十大必然死亡的技术之一,十大科技成果被预言必将死亡实在是幽了一个默。
1998至今,随着Java2一系列新技术如Java2D,Java3D,Swing,JavaSOUND,EJB,Servlet,JSP,CORBA,XML等的引入以及JVM自身安全策略的完善、效率提高,新一轮Java热潮再次被掀起。
目前,国内电子商务、金融、证券、邮电、电信等行业的大部分系统几乎都正在或者准备采用部分Java技术来实现,预计Java应用将很快被国内广大行业用户所接受,Java技术水平也将逐步与世界同步。
1.1.2Java的现状
未来的计算机体系是基于Web的分布式计算,Java无疑是当前满足这一趋势的最佳语言,由于其本身的开放性体系以及简洁的语法,国内Java技术应用得以蓬勃发展起来。
国内企业级应用中的关键技术和内容主要集中在数据访问、数据格式转换、逻辑控制、数据传输、数据表示等方面,而这些都是Java的优势所在,因而在实际应用中,Java/J2EE(Java2企业版)俨然已经成为不可替代的企业级应用解决方案。
企业Java计算模型由四部分组成:
标准平台定义(EnterpriseJavaAPIs)、工业强度的应用服务器(ApplicationServers)、构件架构(ComponentFrameworks)和简化编码工作的开发工具(DevelopmentTools)。
1.EnterpriseJavaBeans和EnterpriseJavaBeanAPIs
EnterpriseJavaBeans(EJB)使开发者只编写一次组件,然后便可在最适合他们的应用程序和企业需要的服务器环境中使用它们。
标准化的EnterpriseJavaBeanAPIs使这一切成为可能。
正如Sun公司在EnterpriseJavaBeans——Java的服务器构件中所说明的企业的Java平台由一套标准的应用程序编程接口(API)到一套核心的企业类基础服务(其中包括生命周期、命名、远程唤醒、消息处理、交易、数据库访问和管理)组成。
这些基础访问经常是使用不同的产品和技术在不同的平台上实现的,所以很难创建可移植的企业类应用程序系统。
JavaEnterpriseAPIs提供了一个无需考虑实现方式,为服务奠定基石的公共接口。
2.应用程序服务器
应用程序服务器为执行由EnterpriseJavaBeans创建的中间件提供了一个平台。
这些服务器必须具有高度的可伸缩性以支持多用户。
用户端可安全地且同时访问应用程序。
应用程序能够在任何服务器平台上执行。
3.组件架构
组件是可被用来构造其他应用程序系统的应用程序。
在企业内部,重要的部件应该能提供安全的数据库访问。
组件可被方便地导入开发工具中并用来为快速开发基于Java的商业应用程序提供架构。
它们被用来设置应用程序并由Web服务器或数据库系统执行。
这些组件遵从EnterpriseJavaBeans的规范。
4.开发工具
企业Java开发工具为创建Java兼容的应用程序、Applet,Servlets和JavaBean组件提供了一个途径。
通过将Java客户端自动连接到现存的服务器数据、交易和应用程序上,客户便可以利用现存的商业应用程序和Web进行日常的商业运作。
1.1.3应用范围
作为一门正处于发展高峰期的程序设计语言,Java深刻地体现了“设计”的精髓,严谨清晰的结构使其具有良好的扩展能力和广阔的发展空间,简洁的语法提供了良好的可维护性,同时,通过降低程序员编码的难度使其能够将更多的精力专注于业务逻辑的设计与系统框架的构建。
在可以预见的未来3~5年内,Java将进一步巩固其在服务器端确立的战略优势并同时向嵌入式系统等应用中延伸。
由于Java语言具有许多优秀特性,所以其应用前景必然美好,未来发展肯定会与互联网的发展需求绑定。
Java将应用于以下领域:
Ø所有面向对象的应用开发。
Ø软件工程中的需求分析、系统设计、开发实现和维护。
Ø中小型多媒体系统设计与实现。
Ø消息传输系统。
Ø分布计算交易管理应用(JTS/RMI/CORBA/JDBC等技术应用)。
ØInternet的系统管理功能模块的设计,包括Web页面的动态设计、网站信息提供管理和交互操作设计等。
ØIntranet(企业内部网)上完全基于Java和Web技术的应用开发。
ØWeb服务器后端与各类数据库连接管理器(队列、缓冲池)。
Ø安全扫描系统(包括网络安全扫描、数据库安全扫描、用户安全扫描等)。
Ø网络/应用管理系统。
Ø其他应用类型的程序。
1.1.4Java语言对软件开发技术的影响
曾有人预言:
“Java语言的出现,将会引起一场软件革命”,这是因为Java语言能在执行码(二进制码)上兼容,这样以前所开发的软件就能运行在不同的机器上,只要所用的机器能提供Java语言解释器即可。
时至今日,Java的优势已经不再仅限于跨平台和动态页面显示,更多的优势逐步在支持CORBA、Web服务器后端处理以及应用整合等方面的体现。
Java语言对现在以及未来软件工程和软件发展可能产生影响,可以从以下几个方面分析。
1.软件工程
Java适用于Web的许多特征,比如平滑移植、安全、健壮和可扩展等,为面向对象软件工程设计提供了实现工具和想向空间。
遵循面向对象思想,软件生命周期的各个部分都将从面向对象的角度出发实现。
比如用户需求分析将被划分成具有不同状态(数据)和行为的模块,不同模块之间的联系通过消息实现等。
2.软件的开发方法
由于Java语言的面向目标的特性,越来越多的人在用O-O(ObjectOrient,面向对象)开发时都在选择使用Java技术与方法来开发,这与Java的面向对象特性、模块化特性、安全性以及适应IT技术发展密不可分。
3.Web技术
Java提供的CGI、ASP替代方法Servlet/JSP以及EJB都是与互联网发展需求相呼应的,由此可见,Java在未来必然紧跟互联网发展趋势,采用Java解决企业基于Web的应用是明智的选择。
4.分布式计算
Java对CORBA,RMI(远程方法调用),EJB,XML和网络处理的支持及应用将使未来企业分布计算向其倾斜。
5.图形处理与多媒体效果
Java2以及以后版本提供了Swing,2D,3D,Sound等图形、图像和多媒体支持类库,弥补了早期Java版本在此方面的不足。
Java的媒体处理能力使程序开发出的动画效果远比GUI技术更加逼真,尤其是利用WWW提供的巨大动画资源空间,可以共享全世界的动态画面的资源。
6.产品开发
目前Java产品主要有基于Web的实时信息发布系统、Web的邮件系统、用于企业分布式计算的消息传输系统、基于Servlet/JSP/EJB开发的电子商务平台、提供Servlet/JSP/EJB开发和运行环境的应用服务器、结合CORBA/XML等技术开发的分布计算支撑平台等。
另外,用Java开发的多媒体软件可以实现集可视化、可听化和可操作化于一体的效果。
1.2Java语言的特点
Java语言到底是一种什么样的语言呢?
它是一个简单的、面向对象的、网络适用的、解释型的、健壮的、安全的、独立于平台的、可移植的、可扩展的、高性能的、多线程的以及动态的程序设计语言。
1.Java语言的简单性
Java语言最初是为对家用电器进行集中控制而设计的一种语言,因此它必须简单明了,易于学习。
Java语言通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。
Java语言是在C和C++语言的基础上产生的,它的风格十分接近C++语言,但要比C++简单得多。
Java语言略去了C++语言中容易引发程序错误的地方,例如指针和内存管理。
在高级编程语言的所有特性中,不是绝对需要的Java语言都已经删去了,例如Java语言没有算符重载、预处理、多维数组、多重继承等。
增加自动垃圾收集功能,用于回收不再使用的内存区域,这不但使程序易于编写,而且大大减少了由于内存而引发的问题。
Java语言为程序开发者提供了丰富的类库,使程序的编写变得容易、简单。
Java语言的简单性还体现在小型化上。
Java解释器、系统模块和运行模块都比较小,适合在小型机器上运行,也适合从网上下载。
2.Java语言的面向对象特性
Java语言是一种彻底的纯面向对象的程序设计语言,它具有面向对象的四大特点:
封装、继承、多态和动态。
Java语言支持单继承类层次结构。
这就是说,每个类一次只能继承一个别的类。
Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。
对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码复用。
3.Java语言的网络适用性
Java语言是面向网络的语言。
通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址很方便地访问网络资源。
Java语言包括一个支持HTTP和FTP等基于TCP/IP协议的子库,它提供一个J包,通过它可以完成各种层次上的网络连接。
因此,Java语言编写的应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。
Java的语言的另一个Socket类提供的可靠流式网络的连接,使程序设计者可以非常方便地创建分布式的客户机(Client)和服务器(Server)应用程序。
4.Java语言的类、类装载性
Java语言提供了大量的类,以满足网络化、多线程和面向对象系统的需要。
(1)语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函数处理等,可以用它简单地实现Java语言程序的运行平台。
(2)实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。
(3)输入、输出包用统一的“流”模型来实现所有格式的I/O操作,包括文件系统、网络、输入/输出等。
(4)低级网络包用于实现Socket编程。
(5)抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件,包括窗口、选单、滚动条、对话框等,使得Java语言可以移植到不同平台的机器。
(6)网络包支持Internet的TCP/IP协议,提供了与Internet的接口。
它支持URL连接及WWW的即时访问,并且简化了客户机/服务器模型的程序设计。
5.Java语言的健壮性
Java语言在编译和运行时,要对可能出现的问题进行检查,以防止错误的产生。
它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时产生错误。
通过集成的面向对象的例外处理机制,在编译时,Java语言提示出可能出现但未被处理的例外,帮助程序员正确进行选择以防止系统的崩溃。
另外,Java语言在编译时还可以捕获类型声明中的许多常见错误,防止动态运行时不匹配的出现。
6.Java语言的安全特性
用于网络、分布环境下的Java语言必须防止病毒的入侵,Java语言不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用“特洛伊木马”等欺诈手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
7.Java语言的体系结构中立特性
网络一般由各种类型的计算机构成,Internet也是这样。
为了使Java程序在任何地方都能运行,Java解释器生成了与体系结构无关字节码(bytecode)指令,只要安装了Java运行时系统,Java程序就可以在任意的处理器上运行。
这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台上运行。
8.Java语言的可移植特性
与平台无关的特性使Java程序可以方便地移植到网络上的不同机器。
同时,Java类库中也实现了与不同平台的接口,使这些类库可以移植。
另外,Java编译器是由Java语言实现的,Java运行时系统由标准C语言实现,这使得Java系统也具有可移植性。
9.Java语言的解释特性
Java语言是解释执行的。
程序运行时,Java解释器直接对字节码进行解释执行。
字节码本身携带了许多编译信息,使得连接过程更加简单。
10.Java语言的高性能
Java语言的解释器和其他解释执行的语言如BASIC不同,Java语言字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
11.Java语言的多线程
多线程机制使应用程序能够并行执行,并且同步机制保证了对共享的数据的正确操作。
通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
12.Java语言的动态特性
Java语言的设计使它适合于一个不断发展的环境,在类库中可以自由地加入新的方法和事例变量而不会影响用户程序的执行。
另外,Java语言通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。
1.3与C和C++语言的异同
对于变量声明、参数传递、操作符、控制语句等方面,Java语言使用了和C及C++语言相同的风格,使得熟悉C及C++语言的程序员很方便地进行编程。
同时,Java语言为了实现其简单性、分布性、安全性等特性,抛弃了C和C++语言中许多不合理的内容。
下面介绍Java语言和C及C++语言的区别。
1.全局变量
在Java语言程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用的、静态的变量来实现一个全局变量。
例如:
classGlobalVar{publicstaticglobal_var;}在类GlobalVar中定义变量global_var为publicstatic(公用、静态),使得其他类可以访问和修改该变量。
Java语言对全局变量进行了更好的封装;而在C及C++语言中,依赖于不加封装的全局变量常常造成系统的崩溃。
2.goto语句
Java语言不支持C及C++语言中的goto语句,而是通过例外处理语句try,catch,finally等代替C++语言中用goto语句处理遇到错误时跳转的情况,使程序更可读且更结构化。
3.指针
Java语言不支持C及C++语言中的goto语句,因为由指针所进行的内存地址操作会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型的转换后,可以访问一个C++语言中的私有成员,从而破坏安全性,造成系统崩溃。
Java语言对指针进行完全的控制,程序员不能直接进行任何指针操作,例如,把整数转化为指针或者通过指针释放某一内存地址等。
同时,数组作为类在Java语言中实现,很好地解决了数组访问越界这一C及C++语言中不做检查的错误。
4.内存管理
在C语言中,程序员通过库函数malloc()和free()来分配和释放内存,C++语言中通过运算符new和delete来分配和释放内存;再次释放已释放的内存块或未被分配的内存块,会造成系统的崩溃;同样,忘记释放不再使用的内存块也会逐渐耗尽系统资源。
而在Java语言中,所有的数据结构都是对象,通过运算符new为它们分配内存堆。
通过new得到对象的处理权,而实际分配给对象的内存可能随程序的运行而改变,Java运行系统对此自动地进行管理并且进行垃圾(无用内存)收集,有效地防止了由于程序员的误操作而导致的错误,并且更好地利用了系统资源。
5.数据类型的支持
在C及C++语言中,对于不同的平台,编译器对于简单的数据类型如int与float等分配不同长度的字节数,但在Java语言中,对于这些数据类型总是分配固定长度的位数,这就保证了Java语言的平台无关性。
6.类型转换
在C及C++语言中,可以通过指针进行任意的类型转换,常常带来不安全性,而在Java语言中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。
7.头文件
在C及C++语言中,用头文件来声明类的原型以及全局变量、库函数等,在大的系统中维护这些头文件是很困难的。
Java语言不支持头文件,类成员的类型和访问权限都封装在一个类中,运行时系统对访问进行控制,防止对私有成员的操作。
同时,Java语言中用import语句来与其他类进行通信,以便使用它们的方法。
8.结构体和联合体
在C及C++语言中,结构体和联合体中所有成员均为公有,这就带来了安全性问题。
Java语言中不包含结构体和联合体,所有的内容都封装在类中。
9.宏定义
在C及C++语言中,用宏定义来实现的代码给程序的可读性带来了困难。
Java语言不支持宏,它通过关键字final来声明一个常量,以实现宏定义中广泛使用的常量定义。
1.4Java平台
图1-1Java平台
在设计上,Java是以软件为运作范畴,并架设在各种硬件环境上的一种纯软件平台,它与一般和硬件有关的各式操作系统(如Windows,Linux等)不同。
一般所谓的操作平台是指撰写程序时依赖的API
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)