Java历史

来源:互联网 发布:windows集中管理 编辑:程序博客网 时间:2024/04/30 10:06

Java的概述

它是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。 Java是一个纯的面向对象的程序设计语言。

Java的历史

1.早期的Java
語言最開始只是Sun電腦(Sun MicroSystems)公司在1990年12月開始研究的一個內部項目。Sun電腦公司的一個叫做帕特里克·諾頓的工程師被公司自己開發的C++和C語言編譯器搞得焦頭爛額,因為其中的API極其難用。帕特里克決定改用NeXT,同時他也獲得了研究公司的一個叫做「Stealth計劃」的項目的機會。

「Stealth計劃」後來改名為「Green計劃」,詹姆斯·高斯林和麥克·舍林丹也加入了帕特里克的工作小組。他們和其他幾個工程師一起在加利福尼亞州門羅帕克市沙丘路的一個小工作室裡面研究開發新技術,瞄準下一代智能家電(如微波爐)的程序設計,Sun公司預料未來科技將在家用電器領域大顯身手。團隊最初考慮使用C++語言,但是很多成員包括Sun的首席科學家比爾‧喬伊,發現C++和可用的API在某些方面存在很大問題。
工作小組使用的是內嵌類型平台,可以用的資源極其有限。很多成員發現C++太複雜以至很多開發者經常錯誤使用。他們發現C++缺少垃圾回收系統,還有可移植的安全性、分佈程序設計、和多執行緒功能。最後,他們想要一種易於移植到各種設備上的平台。

根據可用的資金,喬伊決定開發一種集C語言和Mesa語言大成的新語言,在一份報告上,喬伊把它叫做「未來」,他提議Sun公司的工程師應該在C++的基礎上,開發一種物件導向的環境。最初,高斯林試圖修改和擴展C++的功能,他自己稱這種新語言為C++ ++ –,但是後來他放棄了。他將要創造出一種全新的語言,被他命名為「Oak」(橡樹),以他的辦公室外的橡樹命名。

就像很多開發新技術的秘密工程一樣,工作小組沒日沒夜地工作到了1992年的夏天,他們能夠演示新平台的一部分了,包括Green操作系統,Oak的程序設計語言,類庫及其硬件。最初的嘗試是面向一種類PDA設備,被命名為Star7,這種設備有鮮豔的圖形界面和被稱為「Duke」的智能代理來幫助用戶。1992年12月3日,這台設備進行了展示。

同年11月,Green計劃被轉化成了「FirstPerson有限公司」,一個Sun公司的全資子公司,團隊也被重新安排到了帕洛阿爾托。FirstPerson團隊對建造一種高度互動的設備感興趣,當時代華納發佈了一個關於電視機頂盒的徵求提議書時(Request for proposal),FirstPerson改變了他們的目標,作為對徵求意見書的響應, 提出了一個機頂盒平台的提議。但是有線電視業界覺得FirstPerson的平台給予用戶過多的控制權,因此FirstPerson的投標敗給了SGI。與3DO公司的另外一筆關於機頂盒的交易也沒有成功,由於他們的平台不能在電視工業產生任何效益,公司被併回Sun公司。

2.Java和互联网

1994年6月、7月间,在经历了一场历时三天的脑力激盪的讨论后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。

3.Java和「Java」

由于商标搜索显示,Oak已被一家显卡制造商注册。于是同年,Oak被改名为Java。当使用十六进制编辑器打开由Java源代码编译出的二进制文件(.class文件)的话,最前面的32位将显示为CA FE BA BE,即词组“CAFE BABE”(咖啡屋宝贝)。

4.Java和浏览器

1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java 1.0a版本已经可以提供下載,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。升阳公司的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。

5.Java近况
在流行几年之后,Java在浏览器中的地位被逐步侵蚀。它在简单交互性动画方面的用途已经完全被Adobe公司的Flash排挤,2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。Java同时遭受到来自微软的反对,他们决定在新版本的Internet Explorer和Windows中不再附带Java平台。

与此相反。在万维网的服务器端和手持设备上,Java变得更加流行。很多网站在後端使用JSP和其他的Java技术。

在桌面系统上,独立的Java程序还是相对少见,这是因为Java平台的运行开销较大,而许多人的电脑上没有安装Java,由于网络带宽在以前较小,下载Java曾经是个耗时的事情。但是随着计算机计算能力、网络带宽在10年中取得了很大的进步,同时虚拟机和编译器的质量得到了提高,许多应用程序得到了广泛的使用,包括:

开源软件:
NetBeans和Eclipse等軟件開發工具
Android操作系统
JEdit
Azureus BitTorrent客户端。
JNode操作系统
Apache軟件基金會的Ant、Derby、Hadoop、Jakarta、POI和Tomcat
JBoss和GlassFish應用服務器

商業軟體:
EIOffice(永中Office)
纯Java 3D游戏合金战士Chrome
IBM Websphere、ColdFusion和WebLogic

还有许多用Java写的软件,可以在http://www.java.com 找到。 在以下网页可以看到非常多用Java写的程序: http://java.sun.com/products/ 下面有大量用Java Swing开发的桌面Java程序 http://java.sun.com/products/jfc/tsc/sightings/ 目前Java提供以下三个版本:
Java Platform, Enterprise Edition(Java EE:Java平台企业版)
Java Platform, Standard Edition(Java SE:Java平台标准版)
Java Platform, Micro Edition(Java ME:Java平台微型版)
Java Platform, Card Edition

6.Java開放原始碼項目

2006年SUN在JavaOne公佈Java 開放原始碼項目,並推出OpenJDK計畫。[6] Java虛擬機、Java編譯器和Java類庫以GNU通用公共許可證公開。

7.版本历史

主条目: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更名为Java SE 5.0
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME
2006年12月,SUN公司发布JRE6.0
2009年12月,SUN公司发布Java EE 6
2010年11月,由於Oracle公司對於Java社群的不友善,因此Apache揚言將退出JCP[7]
2011年7月28日,Oracle公司發佈Java SE 7
2014年3月18日,Oracle公司发表Java SE 8

Java的特性

1.面向对象

Java的特点之一就是面向对象,是程序设计方法的一种。“面向对象程序设计语言”的核心之一就是开发者在设计软件的时候可以使用自定义的类型和关联操作。代码和数据的实际集合体叫做“对象”。一个对象可以想像成绑定了很多“行为(代码)”和“状态(数据)”的物体。对于数据结构的改变需要和代码进行通信然后操作,反之亦然。面向对象设计让大型软件工程的计划和设计变得更容易管理,能增强工程的健康度,减少失败工程的数量。

2.跨平台性

Java语言的第二个特性就是跨平臺性,也就是说使用Java语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为“一次编译,到处运行”。

执行Java应用程式必须安装Java Runtime Environment(JRE),JRE内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类库(Class Library)。通过JVM才能在电脑系统执行Java应用程序(Java Application),这与.Net Framework的情况一样,所以电脑上没有安装JVM,那么这些程序将不能够执行。

实现跨平台性的方法是大多数编译器在进行Java语言程序的编码时候会生成一个用字节码写成的“半成品”,这个“半成品”会在Java虚拟机(解释层)的帮助下运行,虚拟机会把它转换成当前所处硬件平台的原始代码。之后,Java虚拟机会打开标准库,进行数据(图片、线程和网络)的存取工作。主要注意的是,尽管已经存在一个进行代码翻译的解释层,有些时候Java的字节码代码还是会被JIT编译器进行二次编译。

有些编译器,比如GCJ,可以自动生成原始代码而不需要解释层。但是这些编译器所生成的代码只能应用于特定平台。并且GCJ目前只支持部分的Java API。

甲骨文公司对于Java的许可是“全兼容的”,这也导致了微软和升阳关于微软的程序不支持RMI和JNI接口、并且增加特性为己所用的法律争端。升阳最终赢得了官司,获得了大约两千万美元的赔偿,法院强制要求微软执行升阳公司关于Java的许可要求。作为回应,微软不再在Windows系统中捆绑Java,最新的Windows版本,Windows Vista和Internet Explorer 7.0版本也不再提供对于Java应用程序和控件的支持。但是升阳公司和其他使用Java运行时系统的公司在Windows操作系统下对用户提供无偿的第三方插件和程序支持。

Java语言使用解释层最初是为了轻巧性。所以这些程序的运行效率比C语言和C++要低很多,用户也对此颇有微词。很多最近的调查显示Java的程序运行速度比几年前要高出许多,有些同样功能的程序的效率甚至超过了C++和C语言编写的程序[來源請求]。

Java语言在最开始应用的时候是没有解释层的,所有需要编译的代码都直接转换成机器的原始代码。这样做的后果就是获得了最佳的性能,但是程序臃肿异常。从JIT技术开始,Java的程序都经过一次转换之后才变成机器码。很多老牌的第三方虚拟机都使用一种叫做“动态编译”的技术,也就是说虚拟机实时监测和分析程序的运行行为,同时选择性地对程序所需要的部分进行编译和优化。所有这些技术都改善了代码的运行速度,但是又不会让程序的体积变得失常。

程序的轻便性事实上是软件编写很难达到的一个目标,Java虽然成功地实现了“一次编译,到处运行”,但是由于平台和平台之间的差异,所编写的程序在转换代码的时候难免会出现微小的、不可察觉的错误和意外。有些程序员对此非常头疼,他们嘲笑Java的程序不是“一次编译,到处运行”,而是“一次编译,到处调试”。以Java AWT為例,早期Java AWT內提供的按鈕、文字區等均是以電腦系統所預設的樣式而顯示。這令Java程式在有些沒有提供圖案的電腦系統產生錯誤(在Microsoft Windows設有視窗管理員,在一些Linux distribution則沒有)。後來SUN公司針對Java AWT一些問題而推出Java Swing。

平台无关性让Java在服务器端软件领域非常成功。很多服务器端软件都使用Java或相关技术建立。

3.自動垃圾回收(Garbage Collection)

C++語言被用戶詬病的原因之一是大多數C++編譯器不支持垃圾收集機制。通常使用C++編程的時候,程式設計師於程式中初始化對象時,會在主機記憶體堆疊上分配一塊記憶體與位址,當不需要此對象時,進行解構或者刪除的時候再釋放分配的記憶體位址。如果對象是在堆疊上分配的,而程序員又忘記進行刪除,那麼就會造成記憶體洩漏(Memory Leak)。長此以往,程序運行的時候可能會生成很多不清除的垃圾,浪費了不必要的記憶體空間。而且如果同一記憶體地址被刪除兩次的話,程序會變得不穩定,甚至崩潰。因此有經驗的C++程序員都會在刪除之後將指標重置為NULL,然後在刪除之前先判斷指標是否為NULL。

C++中也可以使用「智慧指標」(Smart Pointer)或者使用C++託管擴展編譯器的方法來實現自動化記憶體釋放,智慧指標可以在標準類庫中找到,而C++託管擴展被微軟的Visual C++ 7.0及以上版本所支持。智慧指標的優點是不需引入緩慢的垃圾收集機制,而且可以不考慮線程安全的問題,但是缺點是如果不善使用智慧指標的話,性能有可能不如垃圾收集機制,而且不斷地分配和釋放記憶體可能造成記憶體碎片,需要手動對堆進行壓縮。除此之外,由於智慧指標是一個基於模板的功能,所以沒有經驗的程序員在需要使用多態特性進行自動清理時也可能束手無策。

Java語言則不同,上述的情況被自動垃圾收集功能自動處理。對象的建立和放置都是在記憶體堆疊上面進行的。當一個物件沒有任何引用的時候,Java的自動垃圾收集機制就發揮作用,自動刪除這個物件所佔用的空間,釋放記憶體以避免記憶體洩漏。

注意程式設計師不需要修改finalize方法,自動垃圾收集也會發生作用。但是記憶體洩漏並不是就此避免了,當程序員疏忽大意地忘記解除一個物件不應該有的引用時,記憶體洩漏仍然不可避免.

不同廠商、不同版本的JVM中的記憶體垃圾回收機制並不完全一樣,通常越新版本的記憶體回收機制越快,IBM、BEA、SUN等等開發JVM的公司都曾宣稱過自己製造出了世界上最快的JVM[來源請求],JVM性能的世界紀錄也在不斷的被打破並提高。

IBM有一篇有關Java記憶體回收機制比不啟用垃圾收集機制的C++記憶體處理快數倍的技術文章[8],而著名的Java技術書籍《Java編程思想》(Thinking in Java)也有一段論述Java記憶體及性能達到甚至超過C++的章節[9]。

Windows系统安装JDK

  1. 下载和安装:可以在Oracle网站下载JDK安装程序,双击安装程序,安装过程中只需要设置JDK(Java开发者工具)安装路径和JRE(Java运行时环境)安装路径即可。
  2. 配置环境变量:配置环境变量是为了能够在命令行提示符下通过命令编译并运行Java程序,做法是在"计算机"上点右键选择"属性",点击"高级系统设置"在"系统属性"中选择"高级"选项卡,点击"环境变量",在环境变量中的用户变量或系统变量中设置PATH环境变量,如果没有PATH环境变量则点击"新建";如果已经存在PATH则选中点击"编辑"。在新建或编辑环境变量的窗口中将变量名设置为PATH,将变量值设置为JDK安装路径下bin文件夹的路径,点击"确定"保存对环境变量的设置。
  3. 检查配置是否成功:在运行中(可以用Win+R快捷键打开运行)键入cmd打开命令行提示符(当然也可以在开始菜单的附件中打开命令行提示符),输入javac -version看看能否看到javac的版本提示,如果可以则证明JDK已经安装配置成功,接下来就可以通过javac命令编译Java程序,通过java运行Java程序。

安装和使用Eclipse

  1. 下载:可以在Eclipse官网下载Eclipse IDE for Java Developers的最新版本。
  2. 安装:解压缩下载的压缩文件。
  3. 运行:双击eclipse.exe运行Eclipse并设置工作空间(放置Java项目的路径)。
  4. 创建项目:在Package Explorer中点击右键选择New创建Java Project,再创建向导中输入项目名称并点击Finish完成项目创建。
  5. 创建类:在项目的src目录下点击右键创建类,接下来就可以开始Java的旅程了。

Hello World

public class Hello {    public static void main(String[] args) {        System.out.println("Hello, world!");    }}
0 0
原创粉丝点击