第1章Java的发展历史_第1页
第1章Java的发展历史_第2页
第1章Java的发展历史_第3页
第1章Java的发展历史_第4页
第1章Java的发展历史_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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平台。,2关于Java的大事,1.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,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。,1.3.3JavaMEJavaME(JavaPlatform,MicroEdition)。这个版本以前称为J2ME。JavaME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。,1.4面向对象开发概述.4.1面向对象编程的概念面向对象编程又称为面向对象程序设计,起源于Smalltalk语言,是目前的主流程序设计方法。与传统的面向过程编程语言不同,面向对象编程思想是:程序的设计与编写力求符合人的思维方式,让计算机处理逻辑模拟人们对现实世界的问题求解方式,是现实世界中的事物与面向对象程序中类和对象对应。面向对象编程就是将数据和方法封装于对象中,使每个对象半自治化,包装私有的(即纯粹内部的)数据和方法,使它们不会造成整体名称空间的混乱。然后,通过公共的(即可以从外部调用的)方法定义的良好接口,对象可以和程序的其余部分交互。,1.4.2面向对象编程的特点面向过程程序设计强调的是算法与数据结构,用数据结构来量化描述要解决的问题,算法则研究如何用更快捷、高效的方法来组织解决问题的具体过程。但随着软硬件系统规模的飞速发展,面向过程程序设计也暴露出管理、维护困难、可重用性低等难于克服的弱点。面向对象编程强调的是类与对象。相比面向过程程序设计,面向对象编程有以下优点:1、维护简单模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。,2、可扩充性面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。3、代码重用继承是面向对象的一个重要特性,通过继承可以实现子类对父类的扩展和父类代码的重复使用,提高程序开发效率,降低开发成本。,1.4.3对象的抽象与封装1.抽象面向对象程序设计的基本要素是抽象,万事万物皆对象,那么对于具有一定相同属性的事物可以归类于一个集合,对这类事物的简单外观或者动作的描述(抽象)-产生了类。那么对事物的具体描述就能产生具有这类共同属性的对象。程序员通过抽象来管理复杂性.管理抽象的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易管理的块.例如,一个计算机系统是一个独立的对象.而在计算机系统内部由几个子系统组成:显示器,键盘,硬盘驱器,DVD-ROM,软盘,音响等,这些子系统每个又由专门的部件组成.关键是需要使用层次抽象来管理计算机系统(或其他任何复杂系统)的复杂性.面向对象程序设计的本质:这些抽象的对象可以被看作具体的实体,这些实体对用来告诉我们作什么的消息进行响应.,2.封装什么是封装?封装就是将对象具有的一些属性和方法通过封装打包到一起,共同体现一个事物的特征。为什么要封装?因为对象也是隐私的,没有人希望外界能知道自己的隐私,所以为了确保对象在外界的良好形象就要保护好对象的隐私(对于人来说),那么对于程序来说,让别人知道的隐私越少,暴露出来的bug也能越少。当然隐私有时候也不是绝对的,比如有些事情对于家人就不算隐私,对同事,同学就完全算是隐私(身体上的特征),所以java语言就有不同的访问修饰符来适应这些不同的情况。,封装的好处:1)通过将数据与数据的处理方法封装在对象中,对用户隐藏了对象的具体实现细节,降低了问题的复杂度2)用户可以直接使用类实现需要的功能,提高了类或模块的可重用性。3)封装的类中的私

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论