1. 程式人生 > >java學習總結前言

java學習總結前言

寫在前面

本系列部落格是學習了java一段時間之後的一些見解;可以看做是筆記整理。
這些內容以一系列的博文呈現,每一篇博文都對應一張思維導圖。
參見
java基礎目錄:
https://www.processon.com/view/link/5af2d43ae4b0a95710260588
因為圖片貼上來不能動,所以建議另外開啟一個網頁,看著可得勁了。

JAVA基本思想和特性

一些歷史

JAVA是由sun公司開發的一種面向物件的程式語言,95年誕生,後被Oracle公司收購。
詳細的歷史有興趣可以去追究一下,這裡說一說思想的演變。
關於java思想,幾乎所有程式設計師都知道面向物件,可是對面向物件思想真正瞭解的又有多少人呢?

從二戰聊起

據我瞭解(猜測吧,不一定準,當故事聽),面向物件思想的雛形發生二戰期間的一次戰役中。大背景就是盟軍需要跨海運送物資,德軍各種阻撓,然後盟軍派送戰艦護送。戰艦上有一個特別重要的職位(依稀記得好像叫鐳射制導員),這個職位讓戰艦的核心戰鬥力大大提升,但是有一個嚴重的問題,就是人才非常稀缺,而且培養出一個成手至少需要7年左右的時間。沒辦法,肯定不能培訓啊,7年等物資的早就餓死了。這個時候,人們想了一個辦法,也是程式設計中最重要的思想之一,就是分解問題。讓一個成手將工作分解,分解到什麼程度呢?據說分解到了,是個正常人就能幹的地步。可能一個人只是遞送一個零件這麼簡單。這樣一來,每個人的職能單一,而且替換零成本。盟軍就完美解決了這個問題。

前面二戰的分解思想其實也用在了c語言中,不過c語言注重的是如何遞送零件,所以被稱為面向過程的語言;而像java、c++、c#一類的高階程式語言,生下來就是為了快速實現軟體的,所以更注重於描述每個人的職責是什麼樣的,不去操心具體是如何傳遞零件的,而是操心從哪裡拿零件和要送到哪裡。這也就是這些語言被叫做面嚮物件語言的原因。

時至今日,面向物件已經不再是語言的標籤了。它更是一種解決問題的思想,尤其是有6大原則支撐,讓面向物件思想更加的完善,擁抱變化的能力越發強悍。迄今為止,應該是目前世界上使用的最流行的思想之一了。話不能說死,畢竟現在面向介面和麵向服務也佔有一席之地了。

語法前面

原諒我實在是想不出什麼好的標題了。前面看不懂的後面都會有相應的解釋,要是我忘了在評論裡提醒我一下就好~
java可以說是當今世界上適用範圍比較廣的語言了(使用率第一的個人覺得應該是c),java的流行取決於網際網路的飛速發展。而我覺得java做了三件非常匹配網際網路又貼心的事,才是java經久不衰的真正原因。

-第一件:封裝指標為引用
提到指標甚至有些不做軟體的都知道,有些人會對指標產生畏懼,原因是不易懂、又複雜。這裡不去探討指標具體是怎麼樣的。我要說的是,java看到了使用指標直接操作記憶體這種方式的弊端,即造成程式可讀性降低、程式設計師需要分出相當一部分精力去管理記憶體等現象。所以java把指標封裝成了引用。雖然原理都是儲存記憶體地址,但是java做了大量的自動化記憶體管理工作,比如jvm模型、GC等。
避免程式設計師直接操作記憶體地址和手動管理記憶體的麻煩。這些工作讓程式設計師可以把精力主要集中在如何實現軟體業務上。省去了記憶體管理的工作,軟體做的更快、更完善、可維護性也更高了。

-第二件:不同版本的jvm

java生來就是想讓所有程式設計師都能使用。寫出來的程式在所有平臺都能跑。單這幾乎是不可能的。所以java很聰明的做了jvm(java虛擬機器)。讓java程式跑在jvm上,然後做相容不同系統的jvm就行了。這樣保證了幾乎對每個平臺的編碼規範都是一樣的(當然底層呼叫除外)。程式設計師寫一套程式就能在不同的平臺上跑,可省了大事了。

-第三件:大量API
java希望程式設計師用面向物件的思想去程式設計,將精力主要集中在實現可維護性高且適應變化能力較強的軟體上,而不需要去操心底層的實現。
所以java開發了大量的API供程式設計師使用,使編寫程式更加的便利,以及各種IDE工具的出現,更是讓專注於業務的程式設計師如虎添翼。

由於這三件事情,程式設計師獨立開發、團隊之間互相協作都變得非常容易和規範。加上apache等組織的出現,得以讓java在網際網路領域中稱王稱霸。
至此,java的學習總結前言就差不多了。這裡只講我學習過程中發現的跟他人不太一樣的見解,從不同的角度看問題,擴充套件思路。歡迎一起學習交流~!
後面的總結會每一篇文章配一張思維導圖,不過推薦去processon檢視,有賬號的幫忙點個贊最好,謝謝啦~~