JAVA编程语言.docx
《JAVA编程语言.docx》由会员分享,可在线阅读,更多相关《JAVA编程语言.docx(43页珍藏版)》请在冰豆网上搜索。
JAVA编程语言
JAVA语言
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。
就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在1995年5月23日以“Java”的名称正式发布了。
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
Oracle收购Sun后Java前途未卜。
JAVA-概述
编程范型:
Object-oriented,structured,
imperative
面市時間:
1990年代
设计者:
升阳电脑
型态系统:
Static,strong,safe,nominative
主要实作产品:
Numerous
启发语言:
Objective-C, C ,Smalltalk,Eiffel,C#[1]
影响语言:
C#,D,J#, PHP,Ada2005
操作系统:
跨平台
Website:
======================================
Java 编程语言的风格十分接近C、C++ 语言。
Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。
但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。
与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。
全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。
“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。
这与微软公司所倡导的注重精英和封闭式的模式完全不同。
Sun 公司对Java编程语言的解释是:
Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。
Java平台是基于Java语言的平台。
这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。
JAVA-名字由来
一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,这个提议得到了其他人的赞同,于是,Java这个名字就这样传开了。
原来看SUN的JAVA标识没去多想,现在看看,这不就是一杯正冒着热气的咖啡吗?
JAVA-历史
早期的Java
Java平台和语言最开始只是升阳公司在1990年12开始研究的一个内部项目。
升阳公司的一个叫做帕特里克·诺顿的工程师被升阳自己开发的C和C语言编译器搞得焦头烂额,因为其中的API极其难用。
帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth计划”的项目的机会。
“Stealth计划”后来改名为“Green计划”,詹姆斯·高斯林和麦克·舍林丹也加入了帕特里克的工作小组。
他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,升阳公司预料未来科技将在家用电器领域大显身手。
团队最初考虑使用C语言,但是很多成员包括升阳的首席科学家比尔·乔伊,发现C和可用的API在某些方面存在很大问题。
工作小组使用的是内嵌类型平台,可以用的资源极其有限。
很多成员发现C太复杂以至很多开发者经常错误使用。
他们发现C缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。
最后,他们想要一种易于移植到各种设备上的平台。
根据可用的资金,比尔·乔伊决定开发一种集C语言和Mesa语言大成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议升阳公司的工程师应该在C的基础上,开发一种面向对象的环境。
最初,高斯林试图修改和扩展C的功能,他自己称这种新语言为C--,但是后来他放弃了。
他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的树而命名。
就像很多开发新技术的秘密的工程一样,工作小组没日没夜地工作到了1992年的夏天,他们能够演示新平台的一部分了,包括Green操作系统,Oak的程序设计语言,类库,和其硬件。
最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。
1992年12月3日,这台设备进行了展示。
同年11月,Green计划被转化成了“FirstPerson有限公司”,一个升阳公司的全资子公司,团队也被重新安排到了帕洛阿尔托。
FirstPerson团队对建造一种高度互动的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Requestforproposal),FirstPerson改变了他们的目标,作为对征求意见书的响应,提出了一个机顶盒平台的提议。
但是有线电视业界觉得FirstPerson的平台给予用户过多地控制权,因此FirstPerson的投标败给了SGI。
与3DO公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司再并回升阳公司。
JAVA与互联网
1994年6、7月间,在经历了一场历时三天的头脑风暴的讨论后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。
他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。
作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。
同年,Oak改名为Java。
商标搜索显示,Oak已被一家显卡制造商注册,因此团队找到了一个新名字。
这个名字是在很多成员常去的本地咖啡馆中杜撰出来的。
名字是不是首字母缩写还不清楚,很大程度上来说不是。
虽然有人声称是开发人员名字的组合:
JamesGosling(詹姆斯·高斯林)ArthurVanHoff(阿瑟·凡·霍夫)AndyBechtolsheim(安迪·贝克托克姆),或“JustAnotherVagueAcronym”(只是另外一个含糊的缩写)。
还有一种比较可信的说法是这个名字是出于对咖啡的喜爱,所以以Java咖啡来命名。
类文件的前四个字节如果用十六进制阅读的话,分别为CAFEBABE,就会拼出两个单词“CAFEBABE”(咖啡宝贝)。
1994年10月,HotJava和Java平台为公司高层进行演示。
1994年,Java1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。
升阳公司的科学指导约翰·盖吉宣告Java技术。
这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。
1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。
JAVA-Java主要特性
1、Java语言是简单的。
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。
特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
2、Java语言是一个面向对象的。
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。
总之,Java语言是一个纯的面向对象程序设计语言。
3、Java语言是分布式的。
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。
Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
4、Java语言是健壮的。
Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。
对指针的丢弃是Java的明智选择。
Java的安全检查机制使得Java更具健壮性。
5、Java语言是安全的。
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。
除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
6、Java语言是体系结构中立的。
Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。
这种途径适合于异构的网络环境和软件的分发。
7、Java语言是可移植的。
这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。
Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSIC实现的。
8、Java语言是解释型的。
如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。
在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
9、Java是高性能的。
与那些解释型的高级脚本语言相比,Java的确是高性能的。
事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
10、Java语言是多线程的。
在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。
通常有两种方法来创建线程:
其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。
线程的活动由一组方法来控制。
Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
11、Java语言是动态的。
Java语言的设计目标之一是适应于动态变化的环境。
Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。
这也有利于软件的升级。
另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。
Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。
Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。
特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
JAVA-Java语言特点
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。
当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。
那么Java到底有何神奇之处呢?
Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。
他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。
但是,网络的出现改变了OAK的命运。
在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。
这对于那些迷恋于WEB浏览的人们来说简直不可容忍。
他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。
对于用户的这种要求,传统的编程语言显得无能为力。
SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。
当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都心生感叹:
噢,这正是我想要的!
于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。
Java近况
在流行几年之后,Java在浏览器中的地位被逐步侵蚀。
它在简单交互性动画方面的用途已经完全被Adobe公司的Flash排挤,2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。
Java同时遭受到来自微软的反对,他们决定在新版本的InternetExplorer和Windows中不再附带Java平台。
与此相反。
在万维网的服务器端和手持设备上,Java变得更加流行。
很多网站在前端使用JSP和其他的Java技术。
在桌面系统上,独立的Java程序还是相对少见,这是因为Java平台的运行开销较大,而许多人的电脑上没有安装Java,由于网络带宽在以前较小,下载Java曾经是个耗时的事情。
但是随着计算机计算能力、网络带宽在10年中取得了很大的进步,同时虚拟机和编译器的质量得到了越高,许多应用程序得到了广泛的使用,包括:
开源软件:
NetBeans
Eclipse
JEdit
AzureusBitTorrent客户端。
JNode操作系统
闭源软件:
EIOffice(永中Office)
纯Java3D游戏合金战士Chrome
Java程序
目前Java提供以下三个版本:
JavaPlatform,EnterpriseEdition(JavaEE:
Java平台企业版)
JavaPlatform,StandardEdition(JavaSE:
Java平台标准版)
JavaPlatform,MicroEdition(JavaME:
Java平台微型版)
以上为Java各种版本的SUN公司官方中文翻译方式:
版本历史(时间表)
JAVA
1995年5月23日,Java语言诞生
1996年1月,第一个JDK-JDK1.0诞生
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
1996年9月,约8.3万个网页应用了JAVA技术来制作
1997年2月18日,JDK1.1发布
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)
2000年5月8日,JDK1.3发布
2000年5月29日,JDK1.4发布
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机
2001年9月24日,J2EE1.3发布
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升
2004年9月30日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
开发技巧
Eclipse中最常用的快捷键:
Ctrl+L Go to Line F5 Step Into Ctrl+H Open Search Dialog Ctrl+Shift+K Find Previous Ctrl+F11 Run Ctrl+Shift+\ Remove Block Comment F11 Debug Ctrl+Shift+/Add Block Comment Ctrl+K Find Next F8 Resume (during Debug) Ctrl+O Quick Outline Alt+Shift+RRename (Refactoring) F3 Open Declaration Ctrl+R Run to Line Ctrl+/ Toggle Comment Ctrl+Shift+O Organize Imports F6 Step Over Ctrl+Shift+F Format Ctrl+Shift+G References in Workspace
语言特性
Java之所以被开发,是要达到以下五个:
应当使用面向对象程序设计方法学
应当允许同一程序在不同的计算机平台执行
应当包括内建的对计算机网络的支持
应当被设计成安全地执行远端代码
应当易于使用,并借鉴以前那些面向对象语言(如C)的长处。
Java技术主要分成几个部分:
Java语言、运行环境JVM、类库。
一般情况下说Java时并不区分指的是哪个部分。
面向对象
Java的特点之一就是面向对象,是程序设计方法的一种。
“面向对象程序设计语言”的核心之一就是开发者在设计软件的时候可以使用自定义的类型和关联操作。
代码和数据的实际集合体叫做“对象”。
一个对象可以想象成绑定了很多“行为(代码)”和“状态(数据)”的物体。
对于数据结构的改变需要和代码进行通信然后操作,反之亦然。
面向对象设计让大型软件工程的计划和设计变得更容易管理,能增强工程的健康度,减少失败工程的数量。
面向对象设计另外一个目标就是能产生很多的有关联的类,可以让软件的再开发变得简单。
举例来说,很多软件工程都有同样的功能,尤其是很多应用了同一原理组织的软件工程。
软件的二次开发者想自己为软件开发插件以增强功能的时候,绝对不想看到混乱的开发代码和管理计划。
面向对象的目的就是不生产难懂且难以使用的代码,为软件各个功能群之间建立有效的通信通道。
很多开源软件社区正在计划给软件作者提供更多的类来让软件的二次开发变得简便。
跨平台姓
JAVA
Java语言的第二个特性就是跨平台性,也就是说使用Java语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。
这个特性经常被称为“一次编译,到处运行”。
实现跨平台性的方法是大多数编译器在进行Java语言程序的编码时候会生成一个用字节码(Bytecode)写成的“半成品”,这个“半成品”会在Java虚拟机(解释层)的帮助下运行,虚拟机会把它转换成当前所处硬件平台的原始代码。
之后,Java虚拟机会打开标准库,进行数据(图片、线程和网络)的存取工作。
主要注意的是,尽管已经存在一个进行代码翻译的解释层,有些时候Java的字节码代码还是会被JIT编译器进行二次编译。
有些编译器,比如GCJ,可以自动生成原始代码而不需要解释层。
但是这些编译器所生成的代码只能应用于特定平台。
并且GCJ目前只支持部分的JavaAPI。
升阳对于Java的许可是“全兼容的”,这也导致了微软和升阳关于微软的程序不支持RMI和JNI接口、并且增加特性为己所用的法律争端。
升阳最终赢得了官司,获得了大约两千万美元的赔偿,法院强制要求微软执行升阳公司关于Java的许可要求。
作为回应,微软不再在Windows系统中捆绑Java,最新的Windows版本,WindowsVista和InternetExplorer7.0版本也不再提供对于Java应用程序和控件的支持。
但是升阳公司和其他使用Java运行时系统的公司对于微软的操作对用户提供无偿的第三方插件和程序支持。
Java语言使用解释层最初是为了轻巧性。
所以这些程序的运行效率比C语言和C要低很多,用户也对此颇有微词。
很多最近的调查显示Java的程序运行速度比几年前要高出许多,有些同样功能的程序的效率甚至超过了C和C语言编写的程序。
Java语言在最开始应用的时候是没有解释层的,所有需要编译的代码都直接转换成机器的原始代码。
这样做的后果就是获得了最佳的性能,但是程序臃肿异常。
从JIT技术开始,Java的程序都经过一次转换之后才变成机器码。
很多老牌的第三方虚拟机都使用一种叫做“动态编译”的技术,也就是说虚拟机实时监测和分析程序的运行行为,同时选择性地对程序所需要的部分进行编译和优化。
所有这些技术都改善了代码的运行速度,但是又不会让程序的体积变得失常。
程序的轻便性事实上是软件编写很难达到的一个目标,Java虽然成功地实现了“一次编译,到处运行”,但是由于平台和平台之间的差异,所编写的程序在转换代码的时候难免会出现微小的、不可察觉的错误和意外。
有些程序员对此非常头疼,他们嘲笑Java的程序不是“一次编译,到处运行”,而是“一次编译,到处调试”。
平台无关性让Java在服务器端软件领域非常成功。
很多服务器端软件都使用Java或相关技术建立。
自动垃圾回收(GarbageCollection)
C语言被用户诟病的原因之一就是大多数C编译器不支持垃圾收集机制。
通常使用C编程的时候,程序员所创建的对象在创建时在本地堆栈上分配一块内存地址,当不需要这个对象,进行析构或者删除的时候再释放分配的内存地址。
如果对象是在堆上分配的,而程序员又忘记进行地址删除,那么就会造成内存泄漏(MemoryLeak)。
长此以往,程序运行的时候可能会生成很多不清除的垃圾,浪费了不必要的内存空间。
更糟糕的是,如果同一内存地址被删除两次的话,程序会变得不稳定,甚至崩溃。
因此有经验的C程序员都会在删除之后将指针