1991年4月,由James Gosling博士領導的綠色計劃(Green Project)開始啓動,此計劃的目的是開發一種可以在各類消費性電子產品(如機頂盒、冰箱、收音機等)上運行的程序架構。這個計劃的產品就是Java語言的前身:Oak(橡樹)。Oak當時在消費品市場上並不算成功,但隨着1995年互聯網潮流的興起,Oak迅速找到了最適合本身發展的市場定位並蛻變成爲Java語言。 1992年3月,因爲Oak已被用做另外一種已存在的編程語言名稱,所以必須選一個新的名字——它就是Java,靈感來源於咖啡。 1993年2月,電視機頂盒,FirstPerson試圖從時代華納得到一個電視機頂盒交互系統的一攬子訂單。在那時,因爲綠色計劃不是很成功,隨即失去了時代華納的訂單。因而開發的重心從家庭消費電子產品轉到了電視盒機頂盒的相關平臺上。 1995年5月23日,Oak語言更名爲Java,而且在SunWorld大會上正式發佈Java 1.0版本。Java語言第一次提出了「Write Once,Run Anywhere」的口號。 1996年1月23日,JDK 1.0發佈,Java語言有了第一個正式版本的運行環境。JDK 1.0提供了一個純解釋執行的Java虛擬機實現(Sun Classic VM)。JDK 1.0版本的表明技術包括:Java虛擬機、Applet、AWT等。 1996年4月,10個最主要的操做系統供應商申明將在其產品中嵌入Java技術。同年9月,已有大約8.3萬個網頁應用了Java技術來製做。在1996年5月底,Sun公司於美國舊金山舉行了首屆JavaOne大會,今後JavaOne成爲全世界數百萬Java語言開發者每一年一度的技術盛會。 1997年2月19日,Sun公司發佈了JDK 1.1,Java技術的一些最基礎的支撐點(如JDBC等)都是在JDK 1.1版本中發佈的,JDK 1.1版的技術表明有:JAR文件格式、JDBC、JavaBeans、RMI。Java語法也有了必定的發展,如內部類(Inner Class)和反射(Reflection)都是在這個時候出現的。 直到1999年4月8日,JDK 1.1一共發佈了1.1.0~1.1.8九個版本。從1.1.4以後,每一個JDK版本都有一個本身的名字(工程代號),分別爲:JDK 1.1.4 - Sparkler(寶石)、JDK 1.1.5 - Pumpkin(南瓜)、JDK 1.1.6 - Abigail(阿比蓋爾,女子名)、JDK 1.1.7 - Brutus(布魯圖,古羅馬政治家和將軍)和JDK 1.1.8 – Chelsea(切爾西,城市名)。 1998年12月4日,JDK迎來了一個里程碑式的版本JDK 1.2,工程代號爲Playground(競技場),Sun在這個版本中把Java技術體系拆分爲3個方向,分別是面向桌面應用開發的J2SE(Java 2 Platform, Standard Edition)、面向企業級開發的J2EE(Java 2 Platform, Enterprise Edition)和麪向手機等移動終端開發的J2ME(Java 2 Platform, Micro Edition)。在這個版本中出現的表明性技術很是多,如EJB、Java Plug-in、Java IDL、Swing等,而且這個版本中Java虛擬機第一次內置了JIT(Just In Time)編譯器(JDK 1.2中曾並存過3個虛擬機,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平臺出現過;後面兩個虛擬機都是內置JIT編譯器的,而以前版本所帶的Classic VM只能之外掛的形式使用JIT編譯器)。在語言和API級別上,Java添加了strictfp關鍵字與如今Java編碼之中極爲經常使用的一系列Collections集合類。 在1999年3月和7月,分別有JDK 1.2.1和JDK 1.2.2兩個小版本發佈。 1999年4月27日,HotSpot虛擬機發布,HotSpot最初由一家名爲「Longview Technologies」的小公司開發,由於HotSpot的優異表現,這家公司在1997年被Sun公司收購了。HotSpot虛擬機發布時是做爲JDK 1.2的附加程序提供的,後來它成爲了JDK 1.3及以後全部版本的Sun JDK的默認虛擬機。 2000年5月8日,工程代號爲Kestrel(美洲紅隼)的JDK 1.3發佈,JDK 1.3相對於JDK 1.2的改進主要表如今一些類庫上(如數學運算和新的Timer API等),JNDI服務從JDK 1.3開始被做爲一項平臺級服務提供(之前JNDI僅僅是一項擴展),使用CORBA IIOP來實現RMI的通訊協議,等等。這個版本還對Java 2D作了不少改進,提供了大量新的Java 2D API,而且新添加了JavaSound類庫。JDK 1.3有1個修正版本JDK 1.3.1,工程代號爲Ladybird(瓢蟲),於2001年5月17日發佈。 自從JDK 1.3開始,Sun維持了一個習慣:大約每隔兩年發佈一個JDK的主版本,以動物命名,期間發佈的各個修正版本則以昆蟲做爲工程名稱。 2002年2月13日,JDK 1.4發佈,工程代號爲Merlin(灰背隼)。JDK 1.4是Java真正走向成熟的一個版本,Compaq、Fujitsu、SAS、Symbian、IBM等著名公司都有參與甚至實現本身獨立的JDK 1.4。哪怕是在十多年後的今天,仍然有許多主流應用(Spring、Hibernate、Struts等)能直接運行在JDK 1.4之上,或者繼續發佈能運行在JDK 1.4上的版本。JDK 1.4一樣發佈了不少新的技術特性,如正則表達式、異常鏈、NIO、日誌類、XML解析器和XSLT轉換器等。 JDK 1.4有兩個後續修正版: 2002年9月16日發佈的工程代號爲Grasshopper(蚱蜢)的JDK 1.4.1 2003年6月26日發佈的工程代號爲Mantis(螳螂)的JDK 1.4.2。 2002年先後還發生了一件與Java沒有直接關係,但事實上對Java的發展進程影響很大的事件,那就是微軟公司的.NET Framework發佈了。這個不管是技術實現上仍是目標用戶上都與Java有不少相近之處的技術平臺給Java帶來了不少討論、比較和競爭,.NET平臺和Java平臺之間聲勢浩大的孰優孰劣的論戰到目前爲止都在繼續。 2004年9月30日,JDK 1.5發佈,工程代號Tiger(老虎)。從JDK 1.2以來,Java在語法層面上的變換一直很小,而JDK 1.5在Java語法易用性上作出了很是大的改進。例如,自動裝箱、泛型、動態註解、枚舉、可變長參數、遍歷循環(foreach循環)等語法特性都是在JDK 1.5中加入的。在虛擬機和API層面上,這個版本改進了Java的內存模型(Java Memory Model,JMM)、提供了java.util.concurrent併發包等。另外,JDK 1.5是官方聲明能夠支持Windows 9x平臺的最後一個JDK版本。 2006年12月11日,JDK 1.6發佈,工程代號Mustang(野馬)。在這個版本中,Sun終結了從JDK 1.2開始已經有8年曆史的J2EE、J2SE、J2ME的命名方式,啓用Java SE 六、Java EE 六、Java ME 6的命名方式。JDK 1.6的改進包括:提供動態語言支持(經過內置Mozilla Java Rhino引擎實現)、提供編譯API和微型HTTP服務器API等。同時,這個版本對Java虛擬機內部作了大量改進,包括鎖與同步、垃圾收集、類加載等方面的算法都有至關多的改動。 在2006年11月13日的JavaOne大會上,Sun公司宣佈最終會將Java開源,並在隨後的一年多時間內,陸續將JDK的各個部分在GPL v2(GNU General Public License v2)協議下公開了源碼,並創建了OpenJDK組織對這些源碼進行獨立管理。除了極少許的產權代碼(Encumbered Code,這部分代碼大可能是Sun自己也無權限進行開源處理的)外,OpenJDK幾乎包括了Sun JDK的所有代碼,OpenJDK的質量主管曾經表示,在JDK 1.7中,Sun JDK和OpenJDK除了代碼文件頭的版權註釋以外,代碼基本上徹底同樣,因此OpenJDK 7與Sun JDK 1.7本質上就是同一套代碼庫開發的產品。 JDK 1.6發佈之後,因爲代碼複雜性的增長、JDK開源、開發JavaFX、經濟危機及Sun收購案等緣由,Sun在JDK發展之外的事情上耗費了不少資源,JDK的更新沒有再維持兩年發佈一個主版本的發展速度。JDK 1.6到目前爲止一共發佈了37個Update版本,最新的版本爲Java SE 6 Update 37,於2012年10月16日發佈。 2009年2月19日,工程代號爲Dolphin(海豚)的JDK 1.7完成了其第一個里程碑版本。根據JDK 1.7的功能規劃,一共設置了10個里程碑。最後一個里程碑版本原計劃於2010年9月9日結束,但因爲各類緣由,JDK 1.7最終沒法按計劃完成。 從JDK 1.7最開始的功能規劃來看,它本應是一個包含許多重要改進的JDK版本,其中的Lambda項目(Lambda表達式、函數式編程)、Jigsaw項目(虛擬機模塊化支持)、動態語言支持、GarbageFirst收集器和Coin項目(語言細節進化)等子項目對於Java業界都會產生深遠的影響。在JDK 1.7開發期間,Sun公司因爲相繼在技術競爭和商業競爭中都陷入泥潭,公司的股票市值跌至僅有高峯時期的3%,已無力推進JDK 1.7的研發工做按正常計劃進行。爲了儘快結束JDK 1.7長期「跳票」的問題,Oracle公司收購Sun公司後不久便宣佈將實行「B計劃」,大幅裁剪了JDK 1.7預約目標,以便保證JDK 1.7的正式版可以於2011年7月28日準時發佈。「B計劃」把不能按時完成的Lambda項目、Jigsaw項目和Coin項目的部分改進延遲到JDK 1.8之中。最終,JDK 1.7的主要改進包括:提供新的G1收集器(G1在發佈時依然處於Experimental狀態,直至2012年4月的Update 4中才正式「轉正」)、增強對非Java語言的調用支持(JSR-292,這項特性到目前爲止依然沒有徹底實現定型)、升級類加載架構等。 到目前爲止,JDK 1.7已經發布了9個Update版本,最新的Java SE 7 Update 9於2012年10月16日發佈。從Java SE 7 Update 4起,Oracle開始支持Mac OS X操做系統,並在Update 6中達到徹底支持的程度,同時,在Update 6中還對ARM指令集架構提供了支持。至此,官方提供的JDK能夠運行於Windows(不含Windows 9x)、Linux、Solaris和Mac OS平臺上,支持ARM、x8六、x64和Sparc指令集架構類型。 2009年4月20日,Oracle公司宣佈正式以74億美圓的價格收購Sun公司,Java商標今後正式歸Oracle全部(Java語言自己並不屬於哪間公司全部,它由JCP組織進行管理,儘管JCP主要是由Sun公司或者說Oracle公司所領導的)。因爲此前Oracle公司已經收購了另一家大型的中間件企業BEA公司,在完成對Sun公司的收購以後,Oracle公司分別從BEA和Sun中取得了目前三大商業虛擬機的其中兩個:JRockit和HotSpot,Oracle公司宣佈在將來1~2年的時間內,將把這兩個優秀的虛擬機互相取長補短,最終合二爲一。能夠預見在不久的未來,Java虛擬機技術將會產生至關巨大的變化。 2011年7月28日,Oracle公司發佈Java SE 1.7 2014年3月18日,Oracle公司發表Java SE 1.8 Java語言有下面一些特色 :簡單、面向對象、分佈式、解釋執行、魯棒、安全、體系結構中立、可移植、高性能、多線程以及動態性。
最後來看張表格:java
Java SE(Java 2 Platform Standard Edition)標準版【J2SE】程序員
支持面向桌面級應用(如Windows下的應用程序)的Java平臺,提供了完整的Java核心API,此版本之前稱爲J2SE,是其它二者的基礎。正則表達式
Java ME(Java 2 Platform Micro Edition)小型版、微型版【J2ME】 (已經被安卓幹掉)算法
支持Java程序運行在移動終端(手機、PDA)上的平臺,對Java API有所精簡,並加入了針對移動終端的支持,此版本之前稱爲J2ME。apache
Java EE(Java 2 Platform Enterprise Edition)企業版【J2EE】編程
是爲開發企業環境下的應用程序提供的一套解決方案。該技術體系中包含的技術如:Servlet 、Jsp等,主要針對於Web應用程序開發。版本之前稱爲J2EE。windows
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各類版本已經改名以取消其中的數字"2"。今後J2EE改名爲Java EE,J2SE改名爲Java SE,J2ME改名爲Java ME。api
三種技術的關係:緩存
從Java的應用領域來分,Java語言的應用方向主要表如今如下幾個方面:安全
企業級應用:主要指複雜的大企業的軟件系統、各類類型的網站。Java的安全機制以及它的跨平臺的優點,使它在分佈式系統領域開發中有普遍應用。應用領域包括金融、電信、交通、電子商務等。
Android平臺應用:Android應用程序使用Java語言編寫。Android開發水平的高低很大程度上取決於Java語言核心能力是否紮實。
移動領域應用:主要表如今消費和嵌入式領域,是指在各類小型設備上的應用,包括手機、PDA、機頂盒、汽車通訊設備等。
一、簡單性(簡潔有效、易學)
Java丟棄了C++中不多使用的、很難理解的、使人迷惑的那些特性,如操做符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,而是引用。並提供了自動的廢料收集,使得程序員沒必要爲內存管理而擔心。
二、面向對象(強制面向對象)
Java語言提供類、接口和繼承等面向對象的特性,爲了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,並支持類與接口之間的實現機制。
Java語言全面支持動態綁定,而C++語言只對虛函數使用動態綁定。
三、分佈式處理(適合分佈式計算)
Java語言支持Internet應用的開發,在基本的Java應用編程接口中有一個網絡應用編程接口(java net),它提供了用於網絡應用編程的類庫。
Java的RMI(遠程方法激活)機制也是開發分佈式應用的重要手段。
四、健壯性(魯棒性,防患於未然)
Java吸取了C/C++語言的優勢,但去掉了其影響程序健壯性的部分(如指針、內存的申請與釋放等),提供了一個相對安全的內存管理和訪問機制。
Java的強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。
五、結構中立(是一種中性結構)
Java程序(後綴爲java的文件)在Java平臺上被編譯爲體系結構中立的字節碼格式(後綴爲class的文件),而後能夠在實現這個Java平臺的任何系統中運行。這種途徑適合於異構的網絡環境和軟件的分發。
六、跨平臺(可移植性)
經過Java語言編寫的應用程序在不一樣的系統平臺上均可以運行。「Write once , Run Anywhere」
原理:只要在須要運行 java 應用程序的操做系統上,先安裝一個Java虛擬機 (JVM: Java Virtual Machine) 便可。由JVM來負責Java程序在該系統中的運行。
Java系統自己也具備很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。
七、解釋型(解釋性)
Java程序在Java平臺上被編譯爲字節碼格式,而後能夠在實現這個Java平臺的任何系統中運行。在運行時,Java平臺中的Java解釋器對這些字節碼進行解釋執行,執行過程當中須要的類在聯接階段被載入到運行環境中。
八、高性能(具備較好的性能)
與那些解釋型的高級腳本語言相比,Java的確是高性能的。
九、多線程(具備多線程處理能力)
Java語言支持多個線程的同時執行,並提供多線程之間的同步機制。
十、安全性(具備較高的安全性)
Java一般被用在網絡環境中,爲此,Java提供了一個安全機制以防惡意代碼的攻擊。
十一、動態(是一種動態語言)
Java程序須要的類可以動態地被載入到運行環境,也能夠經過網絡來載入所須要的類。這也有利於軟件的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。
明確什麼是JRE,JDK(jdk包含了jre和開發工具)
-java runtime environment
-java development kit
什麼是JRE、JDK?
JRE(Java Runtime Environment Java運行環境) 包括Java虛擬機(JVM Java Virtual Machine)和Java程序所需的核心類庫等
JDK(Java Development Kit Java開發工具包) JDK是提供給Java開發人員使用的,其中包含了java的開發工具,也包括了JRE。因此安裝了JDK,就不用在單獨安裝JRE了
其中的開發工具:
運行工具(java.exe)
編譯工具(javac.exe) (c:compiler轉換爲二進制指令)
打包工具(jar.exe) .
查看進程(jps.exe)
jdk = jre + 開發工具
jre = jvm + 核心類庫(API)
做爲開發人員,只須要jdk便可.
1.創建一個專門用於存放軟件的目錄
c:\mysoft
2.雙擊安裝程序
更改目錄到剛纔建立的c:\mysoft,再下邊再建立一個jdk相關的目錄
c:\mysoft\jdk8
進入安裝程序:
3.安裝過程當中出現安裝jre的提示,選擇安裝,選擇和jdk同等級的目錄
好比:
c:\mysoft\jre8
4.安裝過程
5.安裝完成.點擊關閉
驗證jdk的安裝
在任意的目錄下輸入java -version
出現錯誤提示:找不到命令:
緣由:
在cmd中輸入的全部命令,系統都是在Path的環境變量中去尋找,找到就執行,找不到就報錯.
解決的辦法:
告訴Path環境變量,Java命令在哪. 備註:Jdk的Path路徑從盤符開始到bin,由於編 譯時的命令javac及java命令都在bin文件夾中
jdk的安裝包的路徑結構:
classpath環境變量說明:classpath是指java.exe命令尋找.class文件(編譯後的文件)的路徑,默認狀況下是當前路徑(.java源文件所在的路徑),若是在計算機中配置以下路徑classpath=:g:\chenliang\day1,那麼java命令時就會在此路徑下尋找.class文件,找不到就會報錯.
bin:binary.二進制文件,在windows中二進制文件指的就是可執行的文件(程序).
db:軟件自帶的一些重要數據加密.
include:包含的文件,一般是一些c語言寫的頭文件.
jre:jdk自帶的jre.
lib:第三方的api庫.
配置環境變量
1.右鍵計算機
2.點擊環境變量
3.修改系統環境變量Path
PATH:配置JDK命令文件的目錄
CLASSPATH:配置類庫文件的目錄
JAVAHOME:配置JDK安裝路徑
把其中的內容考到一個文本文件中,在末尾加上jdk中的bin目錄的路徑,路徑之間用英文的分號分隔.
例如:
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\mysoft\Python34;C:\mysoft\Python34\Scripts;C:\InstallPackage\scala-2.10.3\scala-2.10.3\bin;C:\mysoft\hadoop-2.7.3\bin;C:\mysoft\apache-maven-3.5.2\bin;C:\mysoft\MySQL\MySQL Server 5.5\bin;C:\mysoft\MySQL\bin;C:\mysoft\jdk8\bin
每一個人的計算機的環境變量都不一樣,不能隨便拷貝別人的環境變量拿來直接用!!
4.從新開啓一個cmd窗口,輸入java -version命令,出現如下提示,就代表安裝OK
set 命令能夠查看當前系統的全部環境變量
1.編寫源代碼,保存在後綴爲.java的文本文件中
2.使用javac命令對它進行編譯:
javac xxx.java
c -> compiler 編譯(把人類能識別的代碼轉換成計算機能識別的二進制指令)
編譯的結果是生成一個和類名同名的字節碼文件:XXX.class
3.使用java命令運行這個程序(解釋).
java xxx (注意:不加後綴)
1.在c盤下建立一個專門用於存放代碼的文件夾:
c:\code13
再創建以天數命令的文件夾:day01
2.在day01中建立一個文本文件.並更名成:HelloWord.java
在其中寫以下代碼:
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello world"); } }
3.在當前路徑下打開cmd
4.使用javac 編譯源文件
javac HelloWorld.java
正常編譯的結果是:生成一個HelloWorld.class
5.運行這個二進制文件
java HelloWorld
常見的錯誤:
1.path沒有配置好致使找不到命令.
2.大小寫錯誤,致使找不到類
3.亂配置classpath
Java命令尋找類的路徑
默認狀況下,是當前路徑.
注意:
在notepad++中打開的命令提示符窗口,會緩存以前的環境變量設置!!!!
主要有三種:
//開始到本行末尾都是註釋內容
/* */期間的全部內容都會被當成註釋.能夠跨行.
注意:多行註釋不能嵌套.
格式:/** 註釋文字 */
一般是加在類定義的前面和方法定義的前面
註釋的兩種做用:
1.提示做用
2.幫助調試
/* 需求:在屏幕上打印Hello World字符串 */ //類定義 public class Hello{ /* main方法,程序的入口點,被JVM直接執行的類須要有main方法 其格式是固定的 */ public static void main(String[] args){ //這是輸出語句,用於將括號裏的內容打印到控制檯 System.out.println("Hello World"); } }
能夠經過 javadoc 命令從文檔註釋中提取內容,生成程序的 API 幫助文檔
打開首頁,查看下生成的 API 文檔
PS:使用文檔註釋時還可使用 javadoc 標記,生成更詳細的文檔信息:
@author 標明開發該類模塊的做者
@version 標明該類模塊的版本
@see 參考轉向,也就是相關主題
@param 對方法中某參數的說明
@return 對方法返回值的說明
@exception 對方法可能拋出的異常進行說明
IDE:集成開發環境
(將程序開發環境與程序調試環境集合在一塊兒,提升開發效率)
IDE工具:MyElipse
https://www.eclipse.org/downloads
或者
目的:主要爲了方便源代碼管理,能夠將不一樣的源代碼放置到不一樣的包下
MyElipse是對elispe的擴展,集合了不少插件
5:文件的導入導出
(1)導出
(2)導入
右鍵左側空白欄,選import