班级网络聊天系统开发与设计.docx
《班级网络聊天系统开发与设计.docx》由会员分享,可在线阅读,更多相关《班级网络聊天系统开发与设计.docx(39页珍藏版)》请在冰豆网上搜索。
班级网络聊天系统开发与设计
1.1java语言简介
1.1.1Java语言的发展
Java语言(简称Java)的诞生对IT产业带来了一次变革,从某些意义上讲对人们的日常生活也产生了深远的影响。
Java的结构虽类似C/C++,但因其平台无关性和与互联网发展紧密结合,预计未来必定成为互联网和计算机应用的主流。
Java当之无愧地被纽约时报评为1995年的十大科技成果之一,并将Java作为一项重大发明载入科技史册!
微软总裁比尔.盖茨曾在观察了一段时间后,十分惭愧地说:
“Java是长时间以来最卓越的程序设计语言”,并确定微软整个软件开发的战略从PC单机时代向着以网络为中心的计算时代转移,而购买Java则是他的重大战略决策的实施部署。
当然微软与SUN也曾为纯Java对峙法庭,微软必将直接或间接将Java技术融入到其产品体系中。
SUNMicrosoft公司的总裁ScottMcNealy认为Java为Internet和WWW开辟了一个崭新的时代。
环球信息网WWW的创始人Berners-Lee说:
计算机事业发展的下一个浪潮就是Java,并且将很快发生。
所以,使用Java已成大势所趋。
Microsoft和IBM两大公司都在Internet上销售用Java编写的软件,IBM著名Java开发集成环境VisualAgeForJava、网站集成平台Webspere,Microsoft的VJ++都是目前主要常见的Java开发环境或产品。
另外,Apple、HP、IBMMicrosoft、Novell、SGI、SCO、Tandem等公司均在各自开发的操作系统中加入了Java开发运行环境,而负责开发并推广Java技术的Javasoft公司(这是SUN下属的一个子公司),通过颁发许可证的办法来允许各家公司把Java虚拟机和Java的Applets类库嵌入他们开发的操作系统,这样各类开发人员就能更容易地选择多种平台来使用Java语言编程,不同的用户也就可以脱离Web浏览器来运行Java应用程序,这无疑是很受广大用户的欢迎的,也为Java语言的应用开拓了极为广阔的前景。
1996年6月7日,由SUN公司和台湾经济事务部信息发展局、台湾信息技术研究所等单位牵头,成立了一个“台湾Java联盟”,有多个台湾著名计算机公司参与,并在台北建立“Java开发中心”,在新竹建立“Java语言实验室”,以掀起台湾开发与应用Java语言的热潮。
香港则在1996年4月就举行了全岛的Java杯比赛,在计算机界掀起了学习Java的热潮(尤其是在大学生中,出现了一批Java迷)。
1996至1998年,SUN公司与国内清华大学、北京大学的著名高校合作,成立10个“Java教育中心”;与中软、邮电部等机构合作成立培训中心、开发中心;在北京、天津和上海成立研究开发基地。
每年一度的JavaOne大会几乎都会推出让Java更受人欢迎的新技术,曾经有人预言:
Java将是网络上的“世界语”,将会被未来所证实。
1998年,由于Java在安全、性能等方面到了一个关键阶段,甚至Java被列入了世纪末十大必然死亡的技术之一,十大科技成果被预言必将死亡实在是幽了一个默。
1998至今,随着Java2一系列新技术如JAVA2D、JAVA3D、SWING、JAVASOUND、EJB、SERVLET、JSP、CORBA、XML、JNDI等等的引入以及JVM自身的安全策略完善、效率提高,新一轮Java热潮再次被掀起。
目前,国内电子商务、金融、证券、邮电、电信等行业的大部分系统几乎都正在或者准备采用部分Java技术来实现。
此外国内也出现了致力于Java技术推广和开发的非盈利组织--中国“Java阵线联盟”(javaunion.org)以及一批作为该组织成员的个人Java技术网站,预计一两年内Java应用将被国内广大行业用户所接受,Java技术水平也将逐步与世界同步。
1.1.2Java语言的特点
Java语言具有能独立于平台而运行、面向对象、可对动态画面进行设计与操作、坚固性等特点,又具有多线程、内置校验器用来防止病毒入侵等功能,所以用来在Internet上研制与开发软件时,特别受到用户的欢迎。
Java语言的有点主要表现在:
简单、面向对象、自动的内存管理、分布计算、稳定、安全、解释执行、结构中立、平滑移植、多线程、以及异常处理等方面。
(1)简单
由于Java的结构类似于C和C++,所以一般的熟悉C与C++语言的编程人员稍加学习就不难掌握Java的编程技术了。
并且Java所具有的自动内存管理机制也大大简化了Java程序设计开发。
(2)面向对象
简单的说,面向对象设计是一种以数据(对象)以及其接口为重心的程序设计技术,面向对象的设计可以说是定义程序模块如何“即插即用”的机制。
Java的面向对象机制实际上可以看作是C++面向对象机制的延伸。
Java提供了简单的类机制和动态的构架模型,对象中封装了它的状态变量和方法(函数、过程),实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或者重新定义父类或者超类所提供的过程,从而实现代码的复用。
(3)自动内存管理
Java的自动无用内存回收集(autogarbagecollectino)实现了内存的自动管理,因此简化了Java程序开发的工作,早期的gc(garbagecollectino)对系统资源抢占太多而影响整个系统的运行,Java2对gc进行的改良使Java的效率有了很大提高。
Gc的工作机制是周期性的自动回收无用存储单元。
Java的自动内存回收机制简化程序开发的同时,提高了程序的稳定性和可靠性。
(4)分布计算
Java为程序开发提供了包,该包提供了一组使程序开发者可以轻易实现基于TCP/IP的分布式应用系统。
此外,Java还提供了专门针对互联网应用的类库,如URL、Javamail等等。
(5)稳定性
人们最常见的应用程序错误就是“非法访问xxx内存”,其实质是程序指针使用出错。
Java拥有一种指针(pointer)模型,能够排除发生内存被覆盖和毁损数据的可能性。
Java不采用指针算术法,而是提供真正的数组(Array),运行程序下标检查;另外,它也不会发生有对象类型转换将一个任意数转换成指针的情形。
Java的自动内存管理在减少编程工作的同时,大大减少了运行态错误。
(6)安全性
Java的设计目的是提供一个用于网络/分布式的计算环境。
因此,Java强调安全性,如确保无病毒、小应用程序运行安全控制等等。
Java的验证技术是以公钥(public-key)加密算法为基础,而且从环境变量、类加载器、文件系统、网络资源和名字空间等方面实施安全策略。
(7)解释执行
Java解释器(interpreter)可以直接在任何已移植的解释器的机器上解释、执行Java字节代码,不需重新编译。
当然,其版本向上兼容,因此如果是高版本环境下编译的Java字节吗到底版本环境下运行也许会有部分问题。
(8)跨异构环境
Java是网络空间的“世界语”,编译后的Java字节码是一种“结构中立性(architectureneutral)的目标文件格式,可以在所有提供Java虚拟机(JVM)的多种不同主机、不同处理器上运行。
(9)平滑移植
“writeonce,runeverywhere!
”也许是Java最诱人的特点。
用Java开发而成的系统其移植工作几乎为零,一般情况下只需对配置文件、批处理文件作相应修改即可实现平滑移植。
(10)多线程
Java的多线程(multithreading)机制使程序可以并行运行。
Java还有一组同步化基本单元,他们是以广泛使用的C.A.R.Hoare监视器与条件变量图为基础的。
同步机制保证了对共享数据的正确操作。
多线程使程序设计者可以用不同的线程分别实现各种不同的行为,而不需要采用全局的事件循环机制,因此,使用Java语言可以非常轻松地实现网络上的实时交互行为。
(11)异常处理
C语言程序员大都有使用goto语句来做条件跳转,Java编程中不支持goto语句。
Java采用异常模型使程序的主流逻辑变得更加清晰明了,并且能够简化错误处理工作。
(12)可扩充
Java目前发布的j2EE标准主要为采用Java技术为企业提供全面解决方案提供了一个技术规范框架,规划了一个利用现有和未来各种java技术整合解决企业应用远景蓝图。
1.1.3java平台技术
Java平台
有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发:
(a)JavaSE(JavaPlatform,StandardEdition):
JavaSE以前称为J2SE。
它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。
JavaSE包含了支持JavaWeb服务开发的类,并为JavaPlatform,EnterpriseEdition(JavaEE)提供基础。
大多数Java开发人员使用JavaSE5,也称为Java5.0或“Tiger”(2006年6月,JavaSE6或“Mustang”发布了beta版。
)
(b)JavaEE(JavaPlatform,EnterpriseEdition):
这个版本以前称为J2EE。
企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。
JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。
(c)JavaME(JavaPlatform,MicroEdition):
这个版本以前称为J2ME。
JavaME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。
基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
1.1.4程序设计工具(Eclipse)
Eclipse
是一种基于Java的可扩展开源开发平台。
就其自身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括为人熟知的Java开发工具(JavaDevelopmentTools,JDT)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++和COBOL等编程语言的插件已经可用,或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于Eclipse的应用程序的一个突出例子是IBM®Rational®SoftwareArchitec,它构成了IBMJava开发工具系列的基础。
eclipse-galileoEclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
Eclipse最初是由IBM公司开发的替代商业软件VisualAgeforJava的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(EclipseFoundation)管理。
2003年,Eclipse3.0选择OSGi服务平台规范为运行时架构。
2007年6月,稳定版3.3发布。
2008年6月发布代号为Ganymede的3.4版。
2009年7月发布代号为GALILEO的3.5版。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开发源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
基于Eclipse的应用程序的突出例子是IBM的WebSphereStudioWorkbench,它构成了IBMJava开发工具系列的基础。
例如,WebSphereStudioApplicationDeveloper添加了对JSP、servlet、EJB、XML、Web服务和数据库访问的支持。
Eclipse的主要组成:
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
EclipseSDK(软件开发者包)是EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次下载。
这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具。
EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。
Eclipse项目生产的软件以CPL发布,第三方组件有各自自身的许可协议.
Eclipse本身是用Java语言编写,但下载的压缩包中并不包含Java运行环境,需要用户自己另行安装JRE,并且要在操作系统的环境变量中指明JRE中bin的路径。
安装Eclipse的步骤非常简单:
只需将下载的压缩包按原路径直接解压既可。
需注意如果有了更新的版本,要先删除老的版本重新安装,不能直接解压到原来的路径覆盖老版本。
在解压缩之后可以到相应的安装路径去找Eclipse.exe运行。
如果下载的是Release或Stable版本,并且JRE环境安装正确无误,一般来说不会有什么问题,在闪现一个很酷的月蚀图片后,Eclipse会显示它的缺省界面,乍一看起来,Eclipse的界面有点象JBuilder,但实际操作进程中会发现它更象IVJ,毕竟开发Eclipse的主导用量是开发IVJ的原班人马。
另外还值得一提的是Eclipse项目的参预者除了IBM以外,还有象Borland,RationalSoftware,RedHat,Merant等一大批业界的姣姣者,这也为Eclipse的未来奠定了良好的基础。
下面将分别对Eclipse的各种特性作简单介绍,包括:
文件存放,开发环境,编译与运行,版本管理,使用插件。
(1)文件存放
大多IVJ的初学者都对找不到Java源代码感到非常不适应,因为IVJ把所有的源代码都存储到一个reponsitory库文件中,想要得到文本格式的源代码必须用Export功能从reponsitory中导出源代码。
使用了reponsitory的IVJ对源代码的管理功能几乎达到极致,正是这一点使得许多程序员对IVJ钟爱有加。
而Eclipse将源代码以文本方式保存,却实现了IVJ对源代码管理的几乎全部功能,并且还增加了一些新的功能,能达到这一点,不能不惊叹于Eclipse开发者的高超技巧。
安装Eclipse之后,在安装路径的下一层路径中会有一个workspace文件夹。
每当在Eclipse中新生成一个项目,缺省情况下都会在workspace中产生和项目同名的文件夹以存放该项目所用到的全部文件。
你可以用Windows资源管理器直接访问或维护这些文件。
将已有的文件加入到一个项目中目前有三种方式:
第一种是象在IVJ中的一样,用IDE的"File"菜单中的"Import"功能将文件导入到项目中。
这也是推荐的方式。
第二种是从Windows的资源管理器中直接拖动文件到项目中。
第三种就是直接将文件拷贝到项目文件夹中,然后在Eclipse的资源浏览窗口中选择项目或文件夹并执行从本地刷新功能(Refreshfromlocate)。
需要说明的一点是,项目文件夹可以放在计算机的任何位置,并且可以在Eclipse中用新建项目的方法将项目路径指定到已经存在的项目文件夹,然后在Eclipse中刷新即可。
但要注意的是,任何项目文件夹建立或指定,目前都只能在Eclipse中用新建项目的方法来实现,即使是在缺省存储项目文件夹的workspace路径下新建立一个文件夹,在Eclipse环境中也是无法将它变成一个项目,也就是说,这个文件夹对Eclipse是不可视的。
(2)Eclipse开发环境
和IVJ一样,Eclipse开发环境被称为Workbench,它主要由三个部分组成:
视图(Perspective),编辑窗口(Editor)和观察窗口(View)。
在下面的介绍中,希望读者能知道Java视图,Java包浏览窗口,资源视图,资源浏览窗口等区别(其实最主要的也就是要区别视图和窗口),以免在进一步的阅读中产生混淆。
可以看出Workbench包含多个视图,而每个视图又包含不同的窗口。
由于每个编辑窗口有很大的共性,而且缺省情况它们都在同一区域中显示,因此我们只在每个视图中标出一个编辑窗口,以绿色表示。
观察窗口则各不相同,这里以红色表示。
下面首先介绍编辑窗口。
所有文件的显示和编辑都包含在编辑窗口里。
缺省情况下打开的多个文件是以标签(TagTable)方式在同一个窗口中排列,可以用拖动方式将这些文件排列成各种布局。
方法是拖动某一个文件的标签(tag)到编辑窗口的边框,当光标有相应的变化时再释放。
当文件被加入到项目中后,在资源浏览或Java包浏览窗口双击文件,Eclipse会试图打开这个文件:
其中Eclipse内嵌的编辑器能缺省打开一些文件,如*.java,*.txt,*.class等等。
如果是其它类型的文件,Eclipse会调用操作系统相应的缺省编辑器打开,如word文档,PDF文件等。
同时Eclipse也可以象IVJ一样用指定的编辑器打开相应的文件。
例如在Eclipse项目中双击HTML文件时,可能希望是用Notepad打开,而不是用系统缺省的IE浏览器打开。
实现的方法是打开菜单栏中的WorkBenchàPreferences对话框,之后在对话框中选择WorkBenchàFileEditors,然后添加文件类型,如*.html,再为其指定编辑器即可。
在编辑窗口,还值得注意的是,习惯了IVJ的程序员在编辑Java程序的时候,更愿意以方法为独立的编辑单位(即在编辑窗口中只显示单个的方法,而不是程序全部的源代码),这种方式也的确是非常合理的开发方式,不仅代码的显示更加简捷,还能辅助程序员编出封装性更好的类。
在Eclipse在工具栏上提供了一个切换按钮,可以在"显示全部代码"和"只显示所选单元"(这里的单元指的是单个方法、变量、导入的包等)之间切换。
其次要介绍的是观察窗口,它配合编辑窗口并提供了多种的相关信息和浏览方式。
常用的观察窗口有资源浏览窗口(Navigator),Java包浏览窗口(Packages),控制台(Console),任务栏(Task)等等。
浏览窗口和Java浏览窗口是观察窗口核心部分。
前者和Windows的浏览器差不多,能浏览项目文件夹中的所有文件,后者用来浏览项目中的Java包,包中的类,类中的变量和方法等信息。
在Java浏览窗口中可以通过用鼠标右键的菜单中的OpenTypeHierarchy打开层次浏览窗口(Hierarchy),这个窗口非常实用,它能非常清晰的查看类的层次结构。
类中的编译出错信息可以在任务窗口中查到,同时它也可以成为名符其实的任务窗口:
向其中添加新的任务描述信息,来跟踪项目的进度。
控制台则主要用来显示程序的输出信息。
在调试程序的时候,会有更丰富的观察窗口来帮助程序员进行调试,如变量值察看窗口,断点窗口等等。
观察窗口是任何IDE开发环境的核心,用好观察窗口是也就是用好IDE开发环境。
Eclipse提供了丰富的观察窗口,能真正用好这些窗口恐怕要得经过一段时间的磨练。
最后介绍视图。
一个视图包括一个或多个编辑窗口和观察窗口。
在开发环境的最左侧的快捷栏中的上部分显示的就是当前所打开的视图图标。
视图是Eclipse的最灵活的部分,可以自定义每个视图中包含的观察窗口种类,也可以自定义一个新视图。
这些功能都被包括在"Perspective"菜单中。
在Eclipse的Java开发环境中提供了几种缺省视图,如资源视图(ResourcePerspective,它也是第一次启动Eclipse时的缺省视图),Java视图(JavaPerspective),调试视图(DebugPerspective),团队视图(TeamPerspecti