1. 程式人生 > 其它 >Java特性和優勢

Java特性和優勢

Java特性和優勢

  • 簡單性
  • 面向物件:其本質是以建立模型體現出來的抽象思維過程和麵向物件的方法,是一種程式設計思維,也是一種思考問題的方式。
  • 可移植性
  • 高效能(Java三高:高併發、高可用、高效能)
  • 分散式:一個大型的系統往往被分為幾個子系統來做,一個子系統可以部署在一臺機器的多個JVM上,也可以部署在多臺機器上。但是每一個系統不是獨立的,不是完全獨立的。需要相互通訊,共同實現業務功能。
  • 動態性:Java本質為靜態語言,而不是動態語言。動態語言顯著的特點是在程式執行時,可以改變程式結構或變數型別,典型的動態語言有Python、ruby、javascript等。Java不是動態語言,但Java具有一定的動態性,表現在以下幾個方面:(1)反射機制;(2)動態位元組碼操作;(3)動態編譯;(4)執行其他指令碼程式碼;
  • 多執行緒: 執行緒物件是可以產生執行緒的物件。比如在Java平臺中Thread物件,Runnable物件。執行緒,是指正在執行的一個指點令序列。在java平臺上是指從一個執行緒物件的start()開始,執行run方法體中的那一段相對獨立的過程。相比於多程序,多執行緒的優勢有:(1)程序之間不能共享資料,執行緒可以;(2)系統建立程序需要為該程序重新分配系統資源,故建立執行緒代價比較小;(3)Java語言內建了多執行緒功能支援,簡化了java多執行緒程式設計。
  • 安全性:
  1. 執行緒安全:就是當多執行緒訪問時,採用了加鎖的機制;即當一個執行緒訪問該類的某個資料時,會對這個資料進行保護,其他執行緒不能對其訪問,直到該執行緒讀取完之後,其他執行緒才可以使用。防止出現數據不一致或者資料被汙染的情況。
  2. 執行緒不安全:就是不提供資料訪問時的資料保護,多個執行緒能夠同時操作某個資料,從而出現數據不一致或者資料汙染的情況。
  3. 對於執行緒不安全的問題,一般會使用synchronized關鍵字加鎖同步控制。
  4. 執行緒安全 工作原理: jvm中有一個main memory物件,每一個執行緒也有自己的working memory,一個執行緒對於一個變數variable進行操作的時候, 都需要在自己的working memory裡建立一個copy,操作完之後再寫入main memory。
    當多個執行緒操作同一個變數variable,就可能出現不可預知的結果。
    而用synchronized的關鍵是建立一個監控monitor,這個monitor可以是要修改的變數,也可以是其他自己認為合適的物件(方法),然後通過給這個monitor加鎖來實現執行緒安全,每個執行緒在獲得這個鎖之後,要執行完載入load到working memory 到 use && 指派assign 到 儲存store 再到 main memory的過程。才會釋放它得到的鎖。這樣就實現了所謂的執行緒安全。
  • 健壯性:健壯性體現在java異常處理機制。java把c++裡面很多警告變成錯誤 ,這樣設計的原則是為了讓劣質程式碼不能寫出來。健壯性程式,1/9是核心程式碼 2/9是註釋 2/3是處理可能的異常。