一、計算機語言的發展歷史
學編程語言之前我們先了解一下計算機編程語言的發展,隨著計算機本身硬體發展,硬體速度越快、體積越小、成本越低,應用到人類社會的場景就會越多,那么所需要的演算法就會越復雜,也就要求計算機編程語言越高級,最初重達幾十噸但一秒只能運算5000次的ENIAC(世界上第一臺計算機),只能做非常小的應用,比如:某些情況的彈道計算,現在任何一個人的手機運算能力都可以秒殺那個年代地球上所有計算機運算能力的總和,計算機編程語言的發展歷經了從低級到高級發展,發展的核心思想就是“讓人更容易編程”,越容易使用的語言,就有越多人使用;越多人使用,就有越多協作;越多協作,就可以創造越復雜的物體;計算機語言經歷了三代:第一代是機器語言,第二代是匯編語言,第三代是高級語言,

【1】第一代:機器語言(相當于人類的原始階段)
機器語言是機器指令的集合,機器指令展開來講就是一臺機器可以正確執行的命令,電子計算機的機器指令是一列二進制數字,計算機將之轉變為一列高低電平,以使計算機的電子器件受到驅動,從而進行運算,上面所說的計算機,指的是可以執行機器指令,進行運算的機器,這是早期計算機的概念,早期的程式設計均使用機器語言,程式員們將用 0、1 數字編程的程式代碼打在紙袋或卡片上,1打孔,0不打孔,再將程式通過紙帶機或卡片機輸入計算機,從而進行運算,
應用8086CPU完成運算s=768+12288-1280,機器碼如下:

假如將程式錯寫成以下的錯誤,請你找出錯誤:

書寫和閱讀機器碼程式不是一件簡單的作業,要記住所有抽象的二進制碼,上面只是一個非常簡單的小程式,就暴露出機器碼的晦澀難懂和不易查錯,寫如此小的一個程式尚且如此,實際上一個有用的程式至少要有幾十行的機器碼,那么,情況將會怎么樣呢?
在顯示幕輸出“welcome to masm”,機器碼如下:

看到這樣的程式,你有什么感想?如果程式里有一個“1”被誤寫成為“0”,又如何去查找錯誤呢?
【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技術誕生
? 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介面
介面的默認與靜態方法
方法參考
重復注解
更好的型別推測機制
擴展注解的支持
.......................................................
三、Java體系結構
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.*等,該版本針對資源有限的電子消費產品的需求精簡核心類別庫,并提供了模塊化的架構讓不同型別產品能夠隨時增加支持的能力,

四、Java的語言特點
- 面向物件(使用計算機模擬現實世界,解決現實問題,貼近人類思維)
- 簡單(相對C、C++,不易造成記憶體溢位、減少代碼量、代碼可讀性強)
- 跨平臺(作業系統、服務器、資料庫)
跨平臺這里我們著重介紹一下,Java的跨平臺原理核心在于JVM,在每個作業系統分別對應安裝一個JVM,我們寫的java源檔案編譯運行在JVM中產生一個二進制的位元組碼檔案,就像圖中這樣:

然后由JVM將運行產生的class位元組碼檔案一行行解釋成為作業系統認識的可執行檔案,Java為什么這樣做呢?為了安全,我們拿Java和經典的C語言比較一下

C語言直接和作業系統接觸,語言層面萬一出現問題比如記憶體和指標,那么會導致作業系統崩潰,但Java語言則把這些問題拋給JVM,語言層面無需關心,所有問題都會被JVM處理掉,不會讓作業系統崩潰,所以我們說Java語言是安全的
五、Java的環境搭建
在搭建環境之前我們先解釋一下名詞
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作業系統
- Microsoft公司推出的作業系統,(在windows之前的作業系統)
- DOS是英文"Disk Operating System"的縮寫,其中文含意是"磁盤作業系統".
- DOS是單用戶、單任務的作業系統.(只能執行一個任務)

-
DOS命令
-
在windows中,我們通過滑鼠選單等來作業系統,而在dos作業系統中,要通過dos命令來作業系統,
-
是DOS作業系統的命令,是一種面向磁盤的操作命令,
-
不區分大小寫,
-
windows給我們保留了類似dos系統的操作界面,可以直接操作磁盤
控制命令臺:win+r--->cmd

- 更換盤符:d:
- 查看當前目錄下的檔案及檔案夾:dir
- 進入檔案夾:cd 檔案夾的名字
- 回傳上一級目錄:cd ..
- 清空螢屏:cls
- 洗掉檔案:del 檔案名
- 洗掉檔案夾:rd 檔案夾名稱
- 退出:exit
-
六、第一段程式
寫第一段程式之前,我們還需要一個撰寫代碼的工具,我們固然可以用電腦自帶的記事本寫,但問題是程式出問題時不好定位在第幾行出現了問題,你需要一行行找,所以我們安裝一個編輯器,程式出現問題能更好的查找,
我們可以先選擇notepad++ 這樣的文本編輯器,等學到后面可以再使用Eclipse或者IDEA這樣的IDE開發工具 ,
準備作業做好之后,就可以著手寫第一個程式,學習任何技識訓本都愛用HelloWorld作為演示案例,我們也以它作為案例,首先建立一個HelloWorld.java的檔案,里面的代碼如下:
/**
* 解釋一下注釋,注釋的作用就是方便人閱讀的,程式編譯時會跳過這些注釋,下面這些解釋的文字就是一個個注釋,注釋還分為3種
* 1、單行注釋:// 注釋的內容
* 2、多行注釋:/*注釋的內容 */
// 3、檔案注釋:/**注釋的內容*/,此注釋可以配合javadoc.exe生成一套以網頁檔案形式體現的該程式的說明檔案
//public修飾的類是一個公共類只能有一個,這個類的類名必須與檔案名一致
public class HelloWorld {
//程式的主方法,表示程式的入口,一個類只能有一個主程式入口
public static void main(String[] args) {
//輸出陳述句,輸出雙引號中的內容,雙引號中的內容可以隨意改變
System.out.println("第一段程式!");
}
}
//一個java檔案可以有多個類,不是public的就好,但是通常我們類和類都是分開的,編譯時一個java源檔案的每個類都會生成一個class檔案
class B{
}
注意:
- 建立檔案之前把檔案的后綴名打開,如若不然,你創建的檔案還是.txt為后綴名(HelloWorld.java.txt)
- 如果復制上面的代碼保存時要以ANSI格式保存,要不編譯時會亂碼
- 所有的標點符號必須是英文,分號和逗號等
- 有大括號的陳述句都是成對出現的,沒有大括號的陳述句結尾都是以分號結束
- Java語言嚴格區分大小寫
演示一下如何編譯:
- 打開cmd視窗,切換到java檔案的路徑下

- 通過javac命令對該java檔案進行編譯(javac HelloWorld.java)生成.class檔案

- 通過java命令運行生成的class位元組碼檔案(java HelloWorld)

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/60929.html
標籤:Java
上一篇:有個程式員老公是有爽?
