1. 程式人生 > >《Java從小白到大牛精簡版》——第1章 開篇綜述

《Java從小白到大牛精簡版》——第1章 開篇綜述

java javase java小白 java初學者

Java誕生到現在已經有20多年了,但是Java仍然是非常熱門的編程語言之一,很多平臺中使用Java開發。表1-1所示的是TIOBE社區發布的2016年5月和2017年5月的編程語言排行榜,可見Java語言的熱度,或許這也是很多人選擇學習Java的主要原因。

表 1-1 TIOBE編程語言排行榜

2017年5月2016年5月變化編程語言評級評級變化
11
Java14.639%-6.320%
22
C7.002%-6.220%
33
C++4.751%-1.950%
45技術分享Python3.548%-0.240%
54技術分享C#3.457%-1.020%
610技術分享Visual Basic .NET3.391%1.070%
77
JavaScript3.071%0.730%
812技術分享Assembly language2.859%0.980%
96技術分享PHP2.693%-0.300%
109技術分享Perl2.602%0.280%
118技術分享Ruby2.429%0.090%
1213技術分享Visual Basic2.347%0.520%
1315技術分享Swift2.274%0.680%
1416技術分享R2.192%0.860%
1514技術分享Objective-C2.101%0.500%
1642技術分享Go2.080%1.830%
1718技術分享MATLAB2.063%0.780%
1811技術分享Delphi/Object Pascal2.038%0.030%
1919
PL/SQL1.676%0.470%
2022技術分享Scratch1.668%0.740%

1.1 Java語言歷史

在正式學習Java語言之前,讀者有必要先來了解一下Java的歷史。1990年底美國Sun公司1成立了一個叫做Green的項目組,該Green項目主要目標是為消費類電子產品開發一種分布式系統,使之能夠操控電冰箱、電視機等家用電器。

消費類電子產品種類很多,包括掌上電腦(個人數字助理,Personal Digital Assistant,簡稱PDA)、機頂盒、手機等等,這些消費類電子產品所采用的處理芯片和操作系統基本上都是不相同的,存在跨平臺等問題。開始Green項目組考慮采用C++語言來編寫消費類電子產品的應用程序,但是C++語言過於復雜、龐大,而且安全性差。於是他們設計並開發出一種新的語言——Oak(橡樹)。Oak這個名字來源於Green項目組辦公室窗外的一棵橡樹。由於Oak在進行註冊商標時已經被註冊,他們需要為這個新語言取一個新的名字,有一天,幾位項目的成員正在咖啡館喝著Java(爪哇)咖啡,其中一個人靈機一動說就叫Java怎麽樣?馬上得到了其他人的同意,於是這個新的語言取名為Java。

Sun在1996年發布了Java 1.0,但是Java 1.0開發的應用速度很慢,並不適合做真正的應用開發,直到Java 1.1後速度有了明顯的提升。Java設計之初是為消費類電子產品開發應用,但是真正使Java流行起來是在互聯網上的Web應用程序,上個世紀90年代正在互聯網發展起步階段,互聯網上設備差別很大,需要應用程序能夠跨平臺運行,那麽Java語言具有“一經編寫到處運行”的跨平臺能力。

到本書編寫時,Oracle公司已經發布了Java 8,Java 9將在2017年秋季發布。Java

在20多年發展過程中,與時俱進,為了適應時代的需要,經歷過兩次重大的版本升級,一個是Java 5,Java 5提供了泛型等重要的功能;另一個是Java 8,Java 8中提供了Lambda表達式和枚舉類等重要的功能。

1.2 Java語言特點

Java語言能夠流行起來,並長久不衰,得益於Java語言有很多優秀的關鍵特點。這些特點包括:簡單、面向對象、分布式、結構中立、可移植、解釋執行、健壯、安全、高性能、多線程和動態。下面詳細解釋一下:

1. 簡單

Java設計目標之一就是能夠方便學習,使用簡單。由於當初C++程序員很多,介紹C++語言的書籍也很多,所以Java語言的風格設計成為類似於C++語言風格,但Java摒棄了C++中容易引發程序錯誤的地方,如指針、內存管理、運算符重載和多繼承等。一方面C++程序員可以很快遷移到Java;另一方面沒有編程經驗的初學者也能很快學會Java。

2. 面向對象

面向對象是Java最重要的特性。Java是徹底的、純粹的面向對象語言,在Java中“一切都是對象”。Java完全具有面向對象三個基本特性:封裝、繼承和多態,其中封裝性實現了模塊化和信息隱藏,繼承性實現了代碼的復用,用戶可以建立自己的類庫。而且Java采用的是相對簡單的面向對象技術,去掉了多繼承等復雜的概念,只支持單繼承。

3. 分布式

Java語言就是為分布式系統而設計的。JDK(Java Development Kits,Java開發工具包)中包含了支持HTTP和FTP等基於TCP/IP協議的類庫。Java程序可以憑借URL打開並訪問網絡上的對象,其訪問方式與訪問本地文件系統幾乎完全相同。

4. 結構中立

Java程序需要在很多不同網絡設備中運行,這些設備有很多不同類型的計算機和操作系統。為能夠使Java程序能在網絡的任何地方運行,Java編譯器編譯生成了與機器結構(CPU和操作系統)無關的字節碼(byte-code)文件。任何種類的計算機,只要可以運行Java虛擬機,字節碼文件就可以在該計算機上運行。

5. 可移植

體系結構的中立也使得Java程序具有可移植性。針對不同的CPU和操作系統Java虛擬機有不同的版本,這樣就可以保證相同的Java字節碼文件可以移植到多個不同的平臺上運行。

6. 解釋執行

為實現跨平臺,Java設計成為解釋執行的,即Java源代碼文件首先被編譯成為字節碼文件,這些字節碼本身包含了許多編譯時生成的信息,在運行時候Java解釋器負責將字節碼文件解釋成為特定的機器碼進行運行。

7. 健壯

Java語言是強類型語言,它在編譯時進行代碼檢查,使得很多錯誤能夠在編譯期被發現,不至於在運行期發生而導致系統崩潰。

Java摒棄了C++中指針操作,指針是一種很多強大的技術,能夠直接訪問內存單元,但同時也很復雜,如果指針操控不好,會引起導致內存分配錯誤、內存泄漏等問題。而Java中則不會出現由指針所導致的問題。

內存管理方面C/C++等語言采用手動分配和釋放,經常會導致內存泄漏,從而導致系統崩潰。而Java 采用自動內存垃圾回收機制,程序員不再需要管理內存,從而減少內存錯誤的發生,提高了程序的健壯性。

8. 安全

在Java程序執行過程中,類裝載器負責將字節碼文件加載到Java虛擬機中,這個過程中由字節碼校驗器檢查代碼中是否存在著非法操作。如果字節碼校驗器檢驗通過,由Java解釋器負責把該字節碼解釋成為機器碼進行執行,這種檢查可以防止木馬病毒。

另外。Java虛擬機采用的是“沙箱”運行模式,即把Java程序的代碼和數據都限制在一定內存空間裏執行,不允許程序訪問該內存空間外的內存。

9. 高性能

Java編譯器在編譯時對字節碼會進行一些優化,使之生成高質量的代碼。Java字節碼格式就是針對機器碼轉換而設計的,實際轉換時相當簡便。Java在解釋運行時采用一種即時編譯技術,可使Java程序的執行速度提升很大。多年的發展Java虛擬機也有很多改進這都使得Java程序的執行速度提升很大。

10. 多線程

Java是為網絡編程而設計的,這要求Java能夠並發處理多個任務。Java支持多線程編程,多線程機制可以實現並發處理多個任務,互不幹涉,不會由於某一任務處於等待狀態而影響了其它任務的執行,這樣就可以容易的實現網絡上的實時交互操作。

11. 動態

Java應用程序在運行過程中,可以動態的加載各種類庫,即使是更新類庫也不必重新編譯使用這一類庫的應用程序。這一特點使之非常適合於網絡環境下運行,同時也非常有利於軟件的開發。

1.3 Java平臺

Java不僅是編程語言,還是一個開發平臺,Sun公司根據Java應用領域的不同將Java分成三個平臺:Java SE、Java EE和Java ME。

1.3.1 Java SE

Java SE是Java Standard Edition,主要目的是為臺式機和工作站桌面應用(Application)程序的版本。Java SE是其他平臺的基礎,本書主要介紹的就是Java SE版本中的技術。

Java SE中主要包含了:JRE(Java SE Runtime Environment,Java SE運行環境)、JDK(Java Development Kit,Java開發工具包)和Java核心類庫。如果只是運行Java程序,不考慮開發Java程序,那麽只安裝JRE就可以了。在JRE中包含了Java程序運行所需要的Java虛擬機(JVM,Java Virtual Machine)。JDK中包含了JRE和一些開發工具,這些工具包括:編譯器、文檔生成器和文件打包等工具。

另外,Java SE中還提供了Java應用程序開發需要的基本的和核心的類庫,這些類庫:字符串、集合、輸入輸出、網絡通信和圖形用戶界面等。事實上學習Java就是在學習Java語法和Java類庫使用。

1.3.2 Java EE

Java EE是Java Enterprise Edition,主要目的是為簡化企業級系統的開發、部署和管理。Java EE是以Java SE為基礎的,並提供了一套服務、API接口和協議,能夠開發企業級分布式系統、Web應用程序和業務組件等,其中的包括:JSP、Servlet、EJB、JNI和Java Mail等。

1.3.3 Java ME

Java ME是Java Micro Edition,主要是面向消費類電子產品,為消費電子產品提供一個Java的運行平臺,使得Java程序能夠在手機、機頂盒、PDA等產品上運行。Java ME在早期的諾基亞塞班手機系統有很多應用,而現在的iOS和Android等智能手機中基本上沒有它的用武之地。

1.4 Java虛擬機

Java應用程序能夠跨平臺運行,主要是通過Java虛擬機實現的。如圖1-1所示,不同軟硬件平臺Java虛擬機是不同的,Java虛擬機往下是不同的操作系統和CPU,使用或開發時需要下載不同的JRE或JDK版本。Java虛擬機往上是Java應用程序,Java虛擬機屏蔽了不同軟硬件平臺,Java應用程序不需要修改,不需要重新編譯直接可以在其他平臺上運行。

技術分享

圖1-1 Java虛擬機

Java虛擬機是中包含了Java解釋器,Java程序在運行過程如圖1-2所示,首先由編譯器將加Java源程序文件(.java文件)編譯成為字節碼文件(.class文件),然後再由Java虛擬機中的解釋器將字節碼解釋成為機器碼去執行。

技術分享

圖1-2 Java程序運行過程

本章小結

本章首先介紹了解到Java的歷史、Java語言的特點,然後介紹了Java三大平臺,最後介紹了Java虛擬機。


配套視頻

1、Java從小白到大牛第1篇 【Java基礎】視頻課程

2、Java從小白到大牛第2篇 【面向對象】視頻課程

3、Java從小白到大牛第3篇 【Java進階】視頻課程

4、Java從小白到大牛第4篇項目實戰視頻課程1——【PetStore寵物商店】

5、Java從小白到大牛第4篇項目實戰視頻課程2——【Java版QQ】

6、Java從小白到大牛項目實戰專題

配套源代碼

http://www.51work6.com/java1.php

與本書免費版對應的還有一個收費版本:

1. 進入百度閱讀電子書
2. 進入圖靈社區電子書


本文出自 “「智捷課堂」關東升的博客” 博客,轉載請與作者聯系!

《Java從小白到大牛精簡版》——第1章 開篇綜述