學編程語言以前咱們先了解一下計算機編程語言的發展,隨着計算機自己硬件發展,硬件速度越快、體積越小、成本越低,應用到人類社會的場景就會越多,那麼所須要的算法就會越複雜,也就要求計算機編程語言越高級。最初重達幾十噸但一秒只能運算5000次的ENIAC(世界上第一臺計算機),只能作很是小的應用,好比:某些狀況的彈道計算。如今任何一我的的手機運算能力均可以秒殺那個年代地球上全部計算機運算能力的總和。計算機編程語言的發展歷經了從低級到高級發展。發展的核心思想就是「讓人更容易編程」。越容易使用的語言,就有越多人使用;越多人使用,就有越多協做;越多協做,就能夠創造越複雜的物體;計算機語言經歷了三代:第一代是機器語言,第二代是彙編語言,第三代是高級語言。
【1】第一代:機器語言(至關於人類的原始階段)
機器語言是機器指令的集合,機器指令展開來說就是一臺機器能夠正確執行的命令。電子計算機的機器指令是一列二進制數字。計算機將之轉變爲一列高低電平,以使計算機的電子器件受到驅動,從而進行運算。上面所說的計算機,指的是能夠執行機器指令,進行運算的機器。這是早期計算機的概念。早期的程序設計均使用機器語言。程序員們將用 0、1 數字編程的程序代碼打在紙袋或卡片上,1打孔,0不打孔,再將程序經過紙帶機或卡片機輸入計算機,從而進行運算。
應用8086CPU完成運算s=768+12288-1280,機器碼以下:
假如將程序錯寫成如下的錯誤,請你找出錯誤:
書寫和閱讀機器碼程序不是一件簡單的工做,要記住全部抽象的二進制碼。上面只是一個很是簡單的小程序,就暴露出機器碼的晦澀難懂和不易查錯。寫如此小的一個程序尚且如此,實際上一個有用的程序至少要有幾十行的機器碼。那麼,狀況將會怎麼樣呢?
在顯示器輸出「welcome to masm」,機器碼以下:
看到這樣的程序,你有什麼感想?若是程序裏有一個「1」被誤寫成爲「0」,又如何去查找錯誤呢?html
【2】第二代:彙編語言(至關於人類的手工業階段)
爲了編程的方便,以及解決更加複雜的問題。程序員開始改進機器語言,使用英文縮寫的助記符來表示基本的計算機操做。這些助記符構成了彙編語言的基礎。以下是一些常見的彙編語言助記符(單詞)好比:mov,add,sub之類,這樣人更容易使用了。識別幾百、幾千個單詞,感受要比幾百幾千個數字,美妙多了。彙編語言至關於人類的手工業社會,須要技術極其嫺熟的工匠,可是開發效率也很是低。彙編語言雖然能編寫高效率的程序,可是學習和使用都不是易事,而且很難調試。另外一個複雜的問題,彙編語言以及早期的計算機語言(Basic、Fortran等)沒有考慮結構化設計原則,而是使用goto語句來做爲程序流程控制的主要方法。這樣作的後果是:一大堆混亂的調轉語句使得程序幾乎不可能被讀懂。對於那個時代的程序員,能讀懂上個月本身寫的代碼都成爲一種挑戰。 彙編語言仍然應用於工業電子編程領域、軟件的加密解密、計算機病毒分析等。
下面以Masm軟件爲例,編寫一個簡單的「hello world!」程序。
【3】第三代:高級語言(至關於人類的工業階段)
對於簡單的任務,彙編語言能夠勝任。可是隨着計算機的發展,滲透到了工做生活的更多的方面,一些複雜的任務出現了,彙編語言就顯得力不從心(應該說是程序員使用匯編語言解決複雜問題出現了瓶頸)。因而,出現了高級語言。像咱們熟知的C、C++、Java等等都是高級語言。
高級語言容許程序員使用接近平常英語的指令來編寫程序。例以下圖所示:
java
java是由SUN公司的詹姆斯·高斯林 (James Gosling)發明的,可是如今SUN公司被Oracle收購了程序員
▪ 1991年,Sun公司的Green項目,Oak正則表達式
▪ 1995年,推出Java測試版算法
▪ 1996年,JDK1.0數據庫
▪ 1997年,JDK1.1編程
▪ 1998年,JDK1.2,大大改進了早期版本的缺陷,是一個革命性的版本,改名爲Java2小程序
▪ 1999 Java被分紅J2SE、J2EE 和J2ME,JSP/Servlet技術誕生windows
▪ 2004年,J2SE 5.0 (1.5.0) Tiger老虎.爲了表示這個版本的重要性,J2SE1.5改名爲J2SE5.0。安全
▪ 2006年,J2SE 6.0 (1.6.0) Mustang野馬.此時,Java的各類版本被改名,取消其中的數字"2":J2EE改名爲Java EE, J2SE改名爲 Java SE,J2ME改名爲Java ME
▪ 2009年4月20日甲骨文收購Sun公司,交易價格達74億美圓
▪ 2011年,JavaSE7.0
▪ 2014年 ,JavaSE8.0
▪ 2017年,JavaSE9.0
▪ 2018年3月,JavaSE10.0
▪ 2018年9月,JavaSE11.0
▪ 2019年3月,JavaSE12.0
▪ 2019年9月,JavaSE13.0
▪ 2020年3月,JavaSE14.0
........................................................................
咱們通常都基於8講解,不必學習最新的,企業通常都以穩定爲主。咱們再介紹一下不一樣版本JDK說明
JDK Version 1.1:於1997-02-19發行。
引入的新特性包括:引入JDBC(Java Database Connectivity);支持內部類;引入Java Bean;
引入RMI(Remote Method Invocation);引入反射(僅用於內省)。
J2SE Version 1.2:開發代號爲Playground(操場),於1998-12-08發行。
引入的新特性包括:引入集合(Collection)框架;對字符串常量作內存映射;引入JIT(Just In Time)編譯器;
引入對打包的Java文件進行數字簽名;引入控制受權訪問系統資源的策略工具;
引入JFC(Java Foundation Classes),包括Swing 1.0、拖放和Java 2D類庫;
在JDBC中引入可滾動結果集、BLOB、CLOB、批量更新和用戶自定義類型;
在Applet中添加聲音支持。引入Java 插件;
J2SE Version 1.3:開發代號爲Kestrel(紅隼),於2000-05-08發行。
引入的新特性包括:
引入Java Sound API;
jar文件索引;
對Java的各個方面都作了大量優化和加強。
J2SE Version 1.4:開發代號爲Merlin(隼),於2004-02-06發行(首次在JCP下發行)。
引入的新特性包括:
XML處理;
Java打印服務;
引入Logging API;
引入Java Web Start;
引入JDBC 3.0 API;
引入斷言;
引入Preferences API;
引入鏈式異常處理;
支持IPv6;
支持正則表達式;
引入Image I/O slot machine API。
Java Version SE 5.0:開發代號爲Tiger(老虎),於2004-09-30發行。
引入的新特性包括:
引入泛型;
加強循環,可使用迭代方式;
自動裝箱與自動拆箱;
類型安全的枚舉;
可變參數;
靜態引入;
元數據(註解);
引入Instrumentation。
Java Version SE 6: 開發代號爲Mustang(野馬),於2006-12-11發行。
引入的新特性包括:
支持腳本語言;
引入JDBC 4.0 API;
引入Java Compiler API;
可插拔註解;
增長對Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和 LDAP(Lightweight Directory Access Protocol)的支持;
繼承Web Services;
作了不少優化。
Java Version SE 7:開發代號是Dolphin(海豚),於2011-07-28發行。
引入的新特性包括:
switch語句塊中容許以字符串做爲分支條件;
在建立泛型對象時應用類型推斷;
在一個語句塊中捕獲多種異常;
支持動態語言;
支持try-with-resources;
引入Java NIO.2開發包;
數值類型能夠用2進制字符串表示,而且能夠在字符串表示中添加下劃線;
鑽石型語法;
null值的自動處理。
Java Version SE 8:開發代號是Spider(蜘蛛),於2014-03-18發行。
支持 lambda支持;
加強日期與時間API的功能;
對垃圾回收的性能也進行了改進;
而且移除了permgen區。
Lambdas表達式與Functional接口
接口的默認與靜態方法
方法引用
重複註解
更好的類型推測機制
擴展註解的支持
.......................................................
JavaSE(Java Standard Edition):標準版,定位在我的計算機上的應用
這個版本是Java平臺的核心,它提供了很是豐富的API來開發通常我的計算機上的應用程序,包括用戶界面接口AWT及Swing,網絡功能與國際化、圖像處理能力以及輸入輸出支持等。在上世紀90年代末互聯網上大放異彩的Applet也屬於這個版本。Applet後來爲Flash取代,Flash即將被HTML5取代。
JavaEE(Java Enterprise Edition):企業版,定位在服務器端的應用
JavaEE是JavaSE的擴展,增長了用於服務器開發的類庫。如:JDBC是讓程序員能直接在Java內使用的SQL的語法來訪問數據庫內的數據;Servlet可以延伸服務器的功能,經過請求-響應的模式來處理客戶端的請求;JSP是一種能夠將Java程序代碼內嵌在網頁內的技術;
JavaME(Java Micro Edition):微型版,定位在消費性電子產品的應用上
JavaME是JavaSE的內伸,包含J2SE的一部分核心類,也有本身的擴展類,增長了適合微小裝置的類庫:javax.microedition.io.*等。該版本針對資源有限的電子消費產品的需求精簡核心類庫,並提供了模塊化的架構讓不一樣類型產品可以隨時增長支持的能力。
在搭建環境以前咱們先解釋一下名詞
JDK(Java Development Kit)開發環境,編寫Java程序的程序員使用的軟件,包含JRE + 類庫 + 開發工具包
JRE(Java Runtime Environment)運行環境,運行Java程序的用戶使用的軟件,包含JVM和解釋器
JVM(Java Virtual Machine)Java虛擬機
下載JDK:https://www.oracle.com/java/technologies/javase-downloads.html,選擇一個合適的jdk下載便可
安裝JDK:跟正常安裝軟件沒什麼區別
配置JDK:這步若是不作的話每次編譯運行Java文件都須要先寫javac和java的全路徑,後面再寫文件的名字
備註:javac是編譯源文件的命令,java是執行字節碼文件的命令。
步驟:右擊個人電腦--屬性--高級系統設置--環境變量--並填寫如下內容
JAVA_HOME:你安裝jdk的路徑,這是個人安裝路徑:C:\Program Files\Java\jdk1.8.0_131
再修改一下path變量,%JAVA_HOME%\bin
若是是window7則須要這樣配,後面加一個分號
測試:打開DOS窗口:Windows鍵 + R——快捷鍵呼出運行窗口,輸入cmd
輸入java -version出現版本號,就表示配置成功
補充:path環境變量做用:將命令所在的路徑配置到path中去,就至關於在計算機中「註冊」了同樣,之後 找這個命令,會直接去你配置的路徑下尋找。達到了一個效果:在任意的路徑下去執行某個命令---》path環境針對整個操做系統而言。就好比沒配path變量以前,java命令須要輸入jdk的全安裝路徑,配了path變量以後,直接輸入Java命令便可。
classpath環境變量:有些教程會配這個,實際配不配均可以,只是能夠在任意的路徑下去執行字節碼文件,默認就是.\值
DOS操做系統
DOS命令
在windows中,咱們經過鼠標菜單等來操做系統,而在dos操做系統中,要經過dos命令來操做系統。
是DOS操做系統的命令,是一種面向磁盤的操做命令,
不區分大小寫。
windows給咱們保留了相似dos系統的操做界面,能夠直接操做磁盤
控制命令臺:win+r--->cmd
寫第一段程序以前,咱們還須要一個編寫代碼的工具,咱們當然能夠用電腦自帶的記事本寫,但問題是程序出問題時很差定位在第幾行出現了問題,你須要一行行找,因此咱們安裝一個編輯器,程序出現問題能更好的查找。
咱們能夠先選擇notepad++ 這樣的文本編輯器,等學到後面能夠再使用Eclipse或者IDEA這樣的IDE開發工具 。
準備工做作好以後,就能夠着手寫第一個程序,學習任何技術基本都愛用HelloWorld做爲演示案例,咱們也以它做爲案例,首先創建一個HelloWorld.java的文件,裏面的代碼以下:
/** * 解釋一下注釋,註釋的做用就是方便人閱讀的,程序編譯時會跳過這些註釋,下面這些解釋的文字就是一個個註釋,註釋還分爲3種 * 一、單行註釋:// 註釋的內容 * 二、多行註釋:/*註釋的內容 */ // 三、文檔註釋:/**註釋的內容*/,此註釋能夠配合javadoc.exe生成一套以網頁文件形式體現的該程序的說明文檔 //public修飾的類是一個公共類只能有一個,這個類的類名必須與文件名一致 public class HelloWorld { //程序的主方法,表示程序的入口,一個類只能有一個主程序入口 public static void main(String[] args) { //輸出語句,輸出雙引號中的內容,雙引號中的內容能夠隨意改變 System.out.println("第一段程序!"); } } //一個java文件能夠有多個類,不是public的就好,可是一般咱們類和類都是分開的,編譯時一個java源文件的每一個類都會生成一個class文件 class B{ }
注意:
演示一下如何編譯: