01Java概述.docx
《01Java概述.docx》由会员分享,可在线阅读,更多相关《01Java概述.docx(25页珍藏版)》请在冰豆网上搜索。
![01Java概述.docx](https://file1.bdocx.com/fileroot1/2023-2/9/2d417a5f-57b2-485e-83bf-ddc73ce51d89/2d417a5f-57b2-485e-83bf-ddc73ce51d891.gif)
01Java概述
01Java概述
1.1Java简介与历史
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由Sun(升阳)公司的JamesGosling(詹姆斯·高斯林)等人于1990年代初开发。
它来自于Sun公司的一个叫Green的项目,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
开始他们准备采用C++,但C++太复杂,安全性差,最后基于C++开发一种新语言Oak(橡树,Java的前身)。
Oak是一种用于网络的精巧而安全的语言,Sun公司曾以此投标一个交互式电视项目,但结果被SGI打败。
加上智能化家电的市场需求没有预期的高,Sun放弃了该项计划。
在Oak几近失败之时,MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官ScottMcNealy的支持,触发了Java进军Internet。
在1995年5月23日以“Java”的名称正式发布。
为什么不叫Oak?
因为Oak已被一家显卡制造商注册了。
Java的名字的来源:
Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。
Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans(对象豆)等等。
SUN和JAVA的标识也正是一杯正冒着热气的咖啡,如图1-1:
图1-1Java图标
伴随着互联网的迅猛发展而发展,Java逐渐成为重要的网络编程语言。
在2009年4月20日,甲骨文以74亿美元收购Sun,Java也随之成为甲骨文公司的产品。
这一度闹的沸沸扬扬,让人感觉Java前途未卜。
但是还好,现在已经基本达成共识。
Java技术是由美国Sun公司倡导和推出的,它包括Java语言和JavaMediaAPIS、SecurityAPIs、ManagementAPIs、JavaApplet、JavaRMI、JavaBean、JavaOS、JavaServlet、JavaServerPage以及JDBC等。
现把Java技术的发展历程简述如下:
·1990年,Sun公司JamesGosling领导的小组设计了一种平台独立的语言Oak,主要用于为各种家用电器编写程序。
·1995年1月,Oak被改名为Java;1995年5月23日,Sun公司在SunWorld95上正式发布Java和HotJava浏览器。
·1995年8月至12月,Netscape公司、Oracle公司、Borland公司、SGI公司、Adobe公司、IBM公司、AT&T公司、Intel公司获得Java许可证。
·1996年1月,Sun公司宣布成立新的业务部门——JavaSoft部,以开发、销售并支持基于Java技术的产品,由AlanBaratz任总裁。
同时推出Java开发工具包JDK(JavaDevelopmentKit)1.0,为开发人员提供用来编制Java应用软件所需的工具。
·1996年2月,Sun公司发布Java芯片系列,包括PicoJava、MicroJava和UltraJava,并推出Java数据库连接JDBC(JavaDatabaseConnectivity)。
·1996年3月,Sun公司推出JavaWorkShop。
·1996年4月,Microsoft公司、SCO公司、苹果电脑公司(Apple)、NEC公司等获得Java许可证。
Sun公司宣布允许苹果电脑、HP、日立、IBM、Microsoft、Novell、SGI、SCO、Tamdem等公司将Java平台嵌入到其操作系统中。
·1996年5月,HP公司、Sybase公司获得Java许可证。
北方电讯公司宣布把Java技术和Java微处理器应用到其下一代电话机中的计划。
5月29日,Sun公司在旧金山举行第一届JavaOne世界Java开发者大会,业界人士踊跃参加。
Sun公司在大会上推出一系列Java平台新技术。
·1996年6月,Sun公司发布JSP1.0,同时推出JDK1.3和JavaWebServer2.0。
·1996年8月,JavaWorkShop成为Sun公司通过互联网提供的第一个产品。
·1996年9月,Addison-Wesley和Sun公司推出Java虚拟机规范和Java类库。
·1996年10月,德州仪器等公司获得Java许可证。
Sun公司提前完成JavaBean规范并发布,同时发布第一个JavaJIT(Just-In-Time)编译器,并打算在JavaWorkShop和Solaris操作系统中加入JIT。
10月29日,Sun公司发布Java企业计算技术,包括JavaStation网络计算机、65家公司发布的85个Java产品及应用、7个新的Java培训课程及Java咨询服务、基于Java的Solstice互联网邮件软件、新的Java开发者支持服务、HotJavaViews演示、JavaTutor、JavaCardAPI等。
Sun公司宣布完成JavaCardAPI规范,这是智能卡使用的第一个开放API。
JavaCard规范将把Java能力赋予全世界亿万张智能卡。
·1996年11月,IBM公司获得JavaOS和HotJava许可证。
Novell公司获得JavaWorkShop许可证。
Sun公司和IBM公司宣布双方就提供Java化的商业解决方案达成一项广泛协议,IBM公司同意建立第一个Java检验中心。
·1996年12月,Xerox等公司获得Java或JavaOS许可证。
Sun公司发布JDK1.1、Java商贸工具包、JavaBean开发包及一系列JavaAPIs;推出一个新的JavaServer产品系列,其中包括JavaWebServer、JavaNCServer和JavaServerToolkit。
Sun公司发布100%纯Java计划,得到百家公司的支持。
·1997年1月,SAS等公司获得Java许可证。
Sun公司交付完善的JavaBean开发包,这是在确定其规范后不到8个月内完成的。
·1997年2月,Sun公司和ARM公司宣布同意使JavaOS运行在ARM公司的RISC处理器架构上。
Informix公司宣布在其UniversalServer和其他数据库产品上支持JDK1.1。
Netscape公司宣布其NetscapeCommunicator支持所有Java化的应用软件和核心API。
·1997年3月,HP公司获得JavaWorkShop许可证,用于其HP-UX操作系统。
西门子、AG公司等获得Java许可证。
日立半导体公司、Informix公司等获得JavaOS许可证。
Novell公司获得JavaStudio许可证。
Sun公司发售的JavaOS1.0操作系统,这是一种在微处理器上运行Java环境的最小、最快的方法,可提供给JavaOS许可证持有者使用。
Sun公司发售HotJavaBrowser1.0,这是一种Java浏览器,可以方便地按需编制专用的信息应用软件,如客户自助台和打上公司牌号的网络应用软件。
·1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录。
·1997年9月,JavaDeveloperConnection社区成员超过十万。
·1998年2月,JDK1.1被下载超过2,000,000次。
·1998年12月8日,JAVA2企业平台J2EE发布。
·1999年6月,SUN公司发布Java的三个版本:
标准版(J2SE)、企业版(J2EE)和微型版(J2ME)。
·1999年11月,Sun公司发布JSP1.1,同时推出JSWDK1.0.1和JavaServlet2.2。
·2000年5月8日,JDK1.3发布。
·2000年5月29日,JDK1.4发布。
·2000年9月,Sun公司发布JSP1.2和JavaServlet2.3API。
·2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机。
·2001年9月24日,J2EE1.3发布。
·2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升。
·2004年9月0日18:
00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。
为了表示该版本的重要性,J2SE1.5更名为JavaSE5.0。
·2005年6月,JavaOne大会召开,SUN公司公开JavaSE6。
此时,Java的各种版本已经更名,以取消其中的数字“2”:
J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。
·2006年12月,SUN公司发布JRE6.0。
·2009年04月20日,甲骨文74亿美元收购Sun。
取得java的版权。
·2011年7月,甲骨文公司发布java7的正式版。
现在最新的已经是Java8了。
1.2Java的特点
1.2.1Java语言的优点
Java语言是一种优秀的编程语言。
它最大的优点就是与平台无关,在Windows9x、WindowsNT、Solaris、Linux、MacOS以及其它平台上,都可以使用相同的代码。
“一次编写,到处运行”的特点,使其在互联网上被广泛采用。
由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。
可以说,Java语言是一种比C++语言“还面向对象”的一种编程语言。
Java语言的语法结构与C++语言的语法结构十分相似,这使得C++程序员学习Java语言更加容易。
当然,如果仅仅是对C++改头换面,那么就不会有今天的Java热了。
Java语言提供的一些有用的新特性,使得使用Java语言比C++语言更容易写出“无错代码”。
这些新特性包括:
1、提供了对内存的自动管理,程序员无需在程序中进行分配、释放内存,那些可怕的内存分配错误不会再打扰设计者了;
2、去除了C++语言中的令人费解、容易出错的“指针”,用其它方法来进行弥补;
3、避免了赋值语句(如a=3)与逻辑运算语句(如a==3)的混淆;
4、取消了多重继承这一复杂的概念。
Java语言的规范是公开的,可以在上找到它,阅读Java语言的规范是提高技术水平的好方法。
1.2.2Java语言的特性
Java语言有许多有效的特性,吸引着程序员们,最主要的有以下几个:
1.简洁有效
Java语言是一种相当简洁的“面向对象”程序设计语言。
Java语言省略了C++语言中所有的难以理解、容易混淆的特性,例如头文件、指针、结构、共用体、运算符重载、虚基类、多继承等。
使得它更加严谨、简洁。
Java语言不使用指针,并提供了自动的垃圾回收机制,使得程序员不必为内存管理而担忧。
2.可移植性
对于一个程序员而言,写出来的程序如果不需修改就能够同时在Windows、MacOS、UNIX等平台上运行,简直就是美梦成真的好事!
而Java语言就让这个原本遥不可及的事已经越来越近了。
使用Java语言编写的程序,只要做较少的修改,甚至有时根本不需修改就可以在不同平台上运行了。
3.面向对象
可以这么说,“面向对象”是软件工程学的一次革命,大大提升了人类的软件开发能力,是一个伟大的进步,是软件发展的一个重大的里程碑。
在过去的30年间,“面向对象”有了长足的发展,充分体现了其自身的价值,到现在已经形成了一个包含了“面向对象的系统分析”、“面向对象的系统设计”、“面向对象的程序设计”的完整体系。
所以作为一种现代编程语言,是不能够偏离这一方向的,Java语言也不例外。
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。
相对C++而言,Java语言是一个纯粹的面向对象程序设计语言。
4.解释型
Java语言是一种解释型语言,相对于C/C++语言来说,用Java语言写出来的程序效率低,执行速度慢。
但它正是通过在不同平台上运行Java解释器,对Java代码进行解释,来实现“一次编写,到处运行”的宏伟目标的。
为了达到目标,牺牲效率还是值得的,况且,现在的计算机技术日新月异,运算速度也越来越快,用户是不会感到太慢的。
5.适合分布式计算
Java语言具有强大的、易于使用的联网能力,非常适合开发分布式计算的程序。
Java应用程序可以像访问本地文件系统那样通过URL访问远程对象。
使用Java语言编写Socket通信程序十分简单,使用它比使用任何其它语言都简单。
而且它还十分适用于公共网关接口(CGI)脚本的开发,另外还可以使用Java小应用程序(Applet)、Java服务器页面(JavaServerPage,简称JSP)、Servlet等等手段来构建更丰富的网页。
6.拥有较好的性能
正如前面所述,由于Java是一种解释型语言,所以它的执行效率相对就会慢一些,但由于Java语言采用了两种手段,使得其性能还是不错的。
A、Java语言源程序编写完成后,先使用Java伪编译器进行伪编译,将其转换为中间码(也称为字节码),再解释;
B、提供了一种“准实时”(Just-in-Time,JIT)编译器,当需要更快的速度时,可以使用JIT编译器将字节码转换成机器码,然后将其缓冲下来,这样速度就会更快。
7.健壮、防患于未然
Java语言在伪编译时,做了许多早期潜在问题的检查,并且在运行时又做了一些相应的检查,可以说是一种最严格的“编译器”。
它的这种“防患于未然”的手段将许多程序中的错误扼杀在摇蓝之中。
经常有许多在其它语言中必须通过运行才会暴露出来的错误,在编译阶段就被发现了。
另外,在Java语言中还具备了许多保证程序稳定、健壮的特性(Java的强类型机制、异常处理、废料的自动收集等),有效地减少了错误,这样使得Java应用程序更加健壮。
8.具有多线程处理能力
线程,是一种轻量级进程,是现代程序设计中必不可少的一种特性。
多线程处理能力使得程序能够具有更好的交互性、实时性。
Java在多线程处理方面性能超群,具有让设计者惊喜的强大功能,而且在Java语言中进行多线程处理很简单。
并提供多线程之间的同步机制(关键字为synchronized)。
9.具有较高的安全性
由于Java语言在设计时,在安全性方面考虑很仔细,做了许多探究,使得Java语言成为目前最安全的一种程序设计语言。
尽管Sun公司曾经许诺过:
“通过Java可以轻松构建出防病毒、防黑客的系统”,但“世界上没有绝对的安全”这一真理是不会因为某人的许诺而失灵验的。
就在JDK(JavaDevelopmentKit)1.0发布不久后,美国Princeton(普林斯顿)大学的一组安全专家发现了Java1.0安全特性中的第一例错误。
从此,Java安全方面的问题开始被关注。
不过至今所发现的安全隐患都很微不足道,而且Java开发组还宣称,他们对系统安全方面的Bugs非常重视,会对这些被发现的Bugs立即进行修复。
而且由于Sun公司开放了Java解释器的细节,所以有助于通过各界力量,共同发现、防范、制止这些安全隐患。
10.是一种动态语言
Java是一种动态的语言,Java语言的设计目标之一是适应于动态变化的环境。
Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。
这也有利于软件的升级。
另外,Java能进行运行时的类型检查。
11.是一种中性结构
“Java编译器生成的是一种中性的对象文件格式。
”也就是说,Java编译器通过伪编译后,将生成一个与任何计算机体系统无关的“中性”的字节码。
这种中性结构其实并不是Java首创的,在Java出现之前UCSDPascal系统就已在一种商业产品中做到了这一点,另外在UCSDPascal之前也有这种方式的先例,在NiklausWirth实现的Pascal语言中就采用了这种降低一些性能,换取更好的可移植性和通用性的方法。
Java的这种字节码经过了许多精心的设计,使得其能够很好地兼容于当今大多数流行的计算机系统,在任何机器上都易于解释,易于动态翻译成为机器代码。
1.3Java平台架构与版本
Java平台由Java虚拟机(JavaVirtualMachine)和Java应用编程接口(ApplicationProgrammingInterface,简称API)构成。
Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
现在Java平台已经嵌入了几乎所有的操作系统。
这样Java程序可以只编译一次,就可以在各种系统中运行。
Java应用编程接口已经从1.1x版发展到1.2版。
目前常用的Java平台基于Java1.5和Java1.6,最新版本为Java1.7和Java1.8。
Java分为三个体系:
·JavaSE(Java2PlatformStandardEdition,java平台标准版)
JavaSE(JavaPlatform,StandardEdition)。
JavaSE以前称为J2SE。
它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。
JavaSE包含了支持JavaWeb服务开发的类,并为JavaPlatformEnterpriseEdition(JavaEE)提供基础。
·JavaEE(Java2PlatformEnterpriseEdition,java平台企业版)
JavaEE(JavaPlatform,EnterpriseEdition)。
这个版本以前称为J2EE。
企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。
JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。
·JavaME(Java2PlatformMicroEdition,java平台微型版)
JavaME(JavaPlatform,MicroEdition)。
这个版本以前称为J2ME,也叫K-JAVA。
JavaME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。
基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
1.4Java虚拟机(JVM)
Java虚拟机(即JVM,JavaVirtualMachine的缩写)是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
1.4.1什么是Java虚拟机
1、Java的安全性和可移植性的关键在于Java编译器的输出并不是可执行代码,而是字节码。
2、字节码是一套设计用来在Java运行时环境执行的高度优化指令集,该运行时环境就称为Java虚拟机(JVM)。
3、在标准形式下,JVM是一个字节码解释器。
4、可以将JVM看成一个微型操作系统,它依附于计算机具体的操作系统之上,JVM本身具有一套虚拟机器指令,并有自身的栈、寄存器组件等等,通过JVM将编译过的.class文件与底层硬件平台、操作系统联系起来。
有利于跨平台(即可移植性)。
1.4.2JVM的功能是什么
1、提供运行时环境
2、提供垃圾回收机制
3、提供中立的体系结构,即字节码
1.4.2.1提供运行时环境
1>.Classloader类加载器——加载代码
加载程序执行所需要的全部类。
使用“命名空间”分隔本地文件系统的类和网络导入的类。
全部类被加载后,可执行文件的内存就确定下来,防止未授权的访问。
2>.Bytecodeverifier字节码校验器——校验代码
代码是否符合JVM规定的文件格式、是否有访问权限的违例、是否引起操作数的堆栈溢出、参数类型是否正确、是否有转型错误发生等。
3>.JITcodegeneratorJIT代码生成器——执行代码
JIT编译器:
JustInTime实时编译器。
JIT编译器是Java虚拟机的一部分,它的主要用途是将字节码指令集转换为针对某一特定微处理器的机器代码指令。
通过使用JIT编译器提高了Java代码的执行速度。
JVM提供运行时环境原理如图1-2所示:
图1-2JVM运行时环境
1.4.2.2提供垃圾回收机制
其它编程语言,例如C++,内存的分配和释放都是程序员的责任。
Java编程语言提供了一种系统级线程来跟踪内存的分配情况,程序员不用去管内存的回收情况,JVM会自动完成检查和释放不再需要的内存。
1.4.2.3提供中立的体系架构
一般的高级语言编写的程序如果要在不同的平台上运行,需要利用不同的编译工具编译成不同的目标代码,即跟具体的体系架构和处理器是相关的。
而引入Java语言虚拟机后,Java程序在不同平台上运行时不需要重新编译。
Java屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
综上所述,JVM的功能如图1-3所示:
图1-3Java虚拟机
从图1-3中不难明白JAVA可以实现可移植性的原因,只要在操作系统上(WINNT、Linux、Unix)植入JVM(Java虚拟机),JAVA程序就具有可移植性,也符合SUN公司提出的口号“WriteOnce,RunAnywhere”(即:
一次编写,处处运行)。
1.5JDK的安装及环境变量的配置
JDK(JavaSEDevelopmentKit)即java标准开发包,是Sun提供的一套用于开发Java应用程序的开发包,它提供了编译、运行java程序所需要的各种工具和资源,包含java编译器、java运行时环境(JRE)、以及常用的java类库等。
要开发Java程序,首先需要安装JDK,然后配置好环境变量即可。
这里我选用的是j2sdk1.6版本。
安装分为两个步骤:
1、安装JDK:
jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
2、配置环境变量path。
安装过程如下:
图1-4启动JDK安装程序
图1-5将安装路径设置为c:
\j2sdk
之后按照默认的安装设置即可。
安装完毕在JDK安装路径下面看到如下文件路径:
bin:
该路径下存放了jdk的各种工具命令,常用的javac、java等命令
demo:
该路径下存放了JDK提供的演示代码。
jre:
(JavaRuntimeEnvironment,Java运行环境),该路径下安装的是运行jav