第1章java语言与面向对象概述Java是目前最流行的一门编程语言,要学习Java语言,必须先了解Java的整体概况。本章主要介绍了Java语言的发展历史,体系结构,安装环境和主流IDE集成开发工具等。通过这一章的学习读者会对Java语言有个整体的认识。1.1java发展简史1.1.1java发展简介1.Java的起源Java是Sun公司1995年正式推出的新一代面向对象程序设计语言,特别适合于Internet应用程序开发,具有平台无关性。Java来自于1991年Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,可以把E-mail发给电冰箱、电视机等家用电器,对它们进行控制。开始,准备采用C++,但C++太复杂,安全性差,最后基于C++开发了一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言。1994年下半年,Internet的快速发展,促进了Java语言研制的进展,Green项目组成员用Java编制了HotJava浏览器,触发了Java进军Internet,使得它逐渐成为Internet上受欢迎的开发与编程语言,现已发展成为一种重要的Internet平台。1991年Sun公司的一个叫Green的项目开始启动1992年“Oak”编程语言诞生,绿色小组开发出StarSeven(*7),Duke作为Java语言的吉祥物登上国际舞台1993年绿色工程成为焦点,Mosaicv1.0版本发布(历史上第一个多媒体的网络浏览器)1994年第一个支持移动对象和动态可执行内容的浏览器WebRunner发布1995年以JamesGosling为首的编程小组在网站上发布了Java技术,Java语言的名字从Oak变为Java,Java技术通过Sunworld正式发布1996年第一次举办JavaOne开发者大会,JDK1.0软件发布1997年三周内超过22万的开发者下载了JDK1.1软件,超过8,000名开发者参加了JavaOne大会,JavaCard2.0平台发布1998年JDK1.1发布,其被下载次数超过2百万,VISA公司应用JavaCard技术推出了世界上首张智能卡,Java社区(JCP)成立2关于Java的大事1999年Java2平台源代码公开,JavaOne大会参会人数增长到20,000人,J2EEbeta软件发布2000年全球有超过400个Java开发团队,在JavaOne大会上,SteveJobs与ScottnMcNealy一起宣布苹果公司会全力支持Java技术2001年首个国际性JavaOne会议在日本横滨召开,超过百万的开发者下载JavaPlatformEnterpriseEdition(JavaEE)SDKGoogle公司的PageRank查询算法被授予专利2002年J2EESDK下载次数达2百万,78%的决策者认为,J2EE技术是最有影响力的网络构建开发平台2003年大约有5.5亿个桌面系统应用了Java技术,有75%的专业开发者使用Java编程语言,并将其作为主要的开发语言2004年Java2Platform,StandardEdition5发布,利用Java技术开发的火星探测器成功登陆火星,SunJavaStudioCreator发布2005年有大约450万名开发者正在使用Java技术,全球有25亿台设备使用了Java技术,用于生态系统中的Java技术约合1000亿美金展望当前版本:JavaEE5.01.1.2java语言的特点作为一种程序设计语言,Java语言具有简单高效、面向对象、不依赖于机器的结构、可移植性、安全性等特点,并且提供了并发机制,具有很高的性能。其次,Java语言最大限度地利用了网络,Java的小应用程序(Applet)可在网络上传输而不受CPU和环境的限制。另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。下面分别从语言特性、Applet和类库三个方面来讨论Java的特点,然后通过把Java与它的竞争对手C、C++、C#进行比较进一步指出它所具有的优点。具体来说java的特点体现在下面几个方面:1.1.2java语言的特点1.简单性Java语言最初是应用于电子产品的,如冰箱,只需要控制开和关即可完成制冷工作,所以相对来说比较简单。Java语言提供了很多的功能实现类库,很多代码只需要简单修改便可以很轻松地应用到其他的软件产品中,大大提高了代码的重用率,缩短了开发时间,提高了开发软件的效率。1)风格类似于C++,基本语法与C语言类似;2)摒弃了C++中容易引发程序错误的地方,如指针和内存管理;3)提供了丰富的类库。2.面向对象支持静态和动态风格的代码继承及重用,是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。在很多应用中,Java语言的设计主要集中于对象及其接口,Java提供了简单的类机制以及动态的接口模型。对象中封装了对象的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。具体可以描述为三个方面:(1)封装面向对象编程就是将数据和方法封装于对象中,使每个对象半自治化,包装私有的(即纯粹内部的)数据和方法,使它们不会造成整体名称空间的混乱。然后,通过公共的(即可以从外部调用的)方法定义的良好接口,对象可以和程序的其余部分交互。Java语言实现了对数据及方法的完全封装。(2)多态性(3)继承性Java的子类可以继承父类的有关属性及方法,但在java中实现的单向继承,即一个子类只能有一个父类。3.安全性Java的安全性可从两个方面得到保证。一方面,在Java语言里,象指针和释放内存等C++功能被删除,避免了非法内存操作。另一方面,当Java用来创建浏览器时,语言功能和一些浏览器本身提供的功能结合起来,使它更安全。4.健壮性Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。5.动态Java的动态特性是其面向对象设计方法的拓展,它允许程序动态地装入运行过程中所需要的类。6.分布式Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。7.可移植Java应用程序可以在配备了Java解释器和运行环境的任何计算机系统上运行,通过定义独立于平台的基本数据类型及其运算,Java数据得以在任何硬件平台上保持一致。8.多线程Java提供的多线程功能使得在一个程序里可同时执行多个小任务。多线程带来的好处是可以有更好的交互性能和实时控制性能。1.2Java虚拟机Java虚拟机(英语:JavaVirtualMachine),是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。对中央处理器(CPU)所执行的一种软件实作,用于执行编译过的Java程序码(Applet与应用程序)。Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。1.2.2Java虚拟机的结构Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。与Java语言相关的应用JavaApplication(Java应用程序):用Java语言编写的通过独立的Java解释器来解释运行的桌面应用程序(类似于其它高级语言编制的应用程序)。JavaApplet(Java小程序):用Java语言编写的、嵌入在HTML编写的Web页面中的非独立程序,由Web浏览器内部包含的Java解释器来解释运行,是动态、安全、跨平台的网络应用程序。JSP(JavaServerPages,Java服务器页):是一种实现普通静态HTML和动态HTML混合编码的技术,是在Sun公司倡导及多个公司参与下共同建立的一种动态网页标准,实现了Web动态内容与其显示的分离,用于构建动态Web网站,JSP文件运行于服务器端,JSP的脚本语言是Java,其平台无关性使得JSP一次编写,各处运行。最新应用——Java为用户推出了游戏、天气预报、地图等一系列紧俏时髦的应用,它能够帮助汽车司机避免交通阻塞,还能让公司对即将出行的销售人员进行跟踪。目前在移动通讯中被广泛使用,如手机抓捕图象、手机游戏等。1.3Java2平台的3种版本Java的早期版本称为JDK,Sun公司在1.2版之后将其改名为Java2,Java2平台的发布被称为是Java发展史的新里程碑,目前社会上流行的很多Java教程都是基于Java2技术的。Java2平台有三个不同的版本:J2SE,J2EE,J2ME.J2SE(Java2StandardEdition,Java2平台标准版)是Java2平台中最基本的成员,是一组针对传统桌面应用的应用编程接口和运行平台。J2SE使用JavaHotSpot虚拟机来提高其性能,其类库包含了Java语言的所有特性,是进行java编程的基础。J2EE(Java2EnterpriseEdition,Java2平台企业版)是J2SE的扩展集,主要用于在服务器端开发可伸缩、可迁移、以数据库为核心的企业应用。它也使用JavaHotSpot虚拟机。J2ME(Java2MicroEdition,Java2平台微型版)定义了一组针对嵌入式设备和消费电子设备的API和运行平台。嵌入式设备包括无线手持设备如手机、PDA、电视机顶盒等。因为这些设备内存和处理器的限制,J2ME所运行类库较小。J2ME是一种把Java语言应用于嵌入式系统的软件开发模式,因此拥有Java技术本身的各种特点:平台无关性、网络安全性等等。并且,J2ME提供了HTTP高级Internet协议,使手机等移动信息设备能以客户端/服务器的方式直接访问Internet的全部信息,不同的客户端访问不同的文件,此外还能访问本地存储区,实现交互式服务。1.3.1JavaSEJavaSE(JavaPlatform,StandardEdition)。JavaSE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持JavaWeb服务开发的类,并为JavaPlatform,EnterPRiseEdition(JavaEE)提供基础。1.3.2JavaEEJavaEE(JavaPlatform,EnterpriseEdition)。这个版本以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(serv