Java程序員的高薪使得很多人羨慕不已,有很多人就是沖著Java的高薪從而學習的。但是你們知道Java程序員的工資高的原因嗎,或者說java編程語言比其他編程好到哪里?才讓這么多人來學習它呢?本文將為大家做詳細分析。
Java編程語言比其他編程好在那里?
Java刪除了許多極少被使用、不容易理解和容易令人混淆的C++功能。刪除的功能主要包括運算符重載、多重繼承以及廣泛的自動強迫同型。與C++相比,Java語言也提供重載函數(shù),不過它重載的對象是函數(shù)而非變量或是運算符。Java的目標之一是要協(xié)助開發(fā)能獨立地在小型機器上順利執(zhí)行的軟件。Java的基本解釋器和對象類支持約占40KB空間,而若增加基本的標準程序庫和線程支持則需增加約175KB。體積小對于在嵌入式系統(tǒng)中的使用是很重要的,正因為這樣,Java才能夠通過網(wǎng)絡輕易下載。下面來說一下java編程的優(yōu)點,也是他為什么比其他編程好的原因。
(1)Java是健壯的:
Java的目標是要協(xié)助開發(fā)人員建立各方面可靠的程序,Java強調:開發(fā)人員可在設計初期即檢查可能存在的問題,其后則進行動態(tài)的檢查,并排除容易出現(xiàn)的錯誤。C++語言的優(yōu)點是允許在編譯時進行深入的檢查,以便提前發(fā)現(xiàn)錯誤。Java與C/C++之間最大的不同點之一在于Java擁有一種模型,能排除內存被覆蓋和毀損數(shù)據(jù)的可能性。Java不采用指針計算法,而是提供真正的數(shù)組陣列。這允許程序執(zhí)行下標檢查,但它不允許將一個整數(shù)轉成指針的情形發(fā)生。
(2)Java是面向對象的語言:
面向對象是在業(yè)界中一度流行的術語之一。不過,它確定是一項很強的設計功能,它可以促成明確的接口定義,并允許開發(fā)人員建立可重復使用的軟件部件。
(3)Java是分布式語言:
Java擁有廣泛的能輕易地處理TCP/IP協(xié)議的運行庫,例如HTTP與FTP類庫等等。這使得在Java中比在C或C++中更容易建立網(wǎng)絡連接。Java應用程序可以借助URL通過網(wǎng)絡開啟和存取對象,就如同存取一個本地文件系統(tǒng)一樣簡單。
(4)Java的安全性:
Java設計的目的是要能夠使用于網(wǎng)絡/分布式運算環(huán)境。為此,Java非常強調安全性,以確保建立無病毒且不會被侵入的系統(tǒng)。Java的驗證技術是以公鑰加密法為基礎。鍵壯性與安全性之間存在一種很強的相互作用關系。例如,指針語意的改變,讓應用程序不可能偽造對象結構存取權,或存取它們在對象中沒有存取權的?數(shù)據(jù)。這等于關上大門,杜絕大多數(shù)病毒的侵入。
(5)Java的中立性結構:
Java的設計目標是要支持網(wǎng)絡應用程序。一般而言,網(wǎng)絡是由許多不同的平臺系統(tǒng)構成,包括各種CPU與操作系統(tǒng)結構。為了讓Java應用程序能夠在網(wǎng)絡上任何地方執(zhí)行,其編譯器將會生成一種具備結構中立性的目標文件格式。編譯后的程序碼可以在提供Java運行系統(tǒng)的多種不同處理器上面執(zhí)行。Java的這種中立性結構不僅對網(wǎng)絡應用很有幫助,而且也很適合單一的系統(tǒng)軟件流通。
結構中立性是確保程序可移植的最重要部份,不過除此之外還需很多必須配合的條件和C與C++不同的是,Java規(guī)范中并無任何與機器結構相依存的陳述存在。它指定了基本數(shù)據(jù)類型的大小,及其算術運算元的執(zhí)行行為。例如:“int”代表一個有符號的二進制補碼32Bit整數(shù),而“float”代表一個32BitIEEE754浮點數(shù)。這些選擇在今天的環(huán)境很適用,因為幾乎所有CPU都具備這些特性。程序運行庫屬于系統(tǒng)的一部份,它定義了一些可移植的程序接口。例如,它包括一個抽象的Windows類,并且提供了該類在Unix、Windows和Macintosh平臺上的實現(xiàn)。
(6)高效能的Java程序:
雖然解決過的字節(jié)代碼性能已相當不錯,不過有些情形下還是要求程序達到更高執(zhí)行效能。字節(jié)代碼可以動態(tài)地解釋為執(zhí)行應用程序特定CPU的機器碼。這對于習慣使用一般編譯器與動態(tài)載人器的程序設計者而言,有點類似將最終的機器碼生成器放到動態(tài)載入器之內。
字節(jié)代碼格式在設計上即已考慮了機器碼的產(chǎn)生,因此實際的機器碼生成程序相當簡單。其生成的機器碼是有效的,編譯器自動分配寄存器,而在生成字節(jié)代碼期間也會進行一些優(yōu)化。我們以解決碼在一臺SunMicrosystemSPARCStation10上執(zhí)行時,達到每秒三十萬個函數(shù)調用速率。字節(jié)代碼轉換至機器碼的速度性能,幾乎和直接生成機器目標代碼的C或C++沒有什么兩樣。
(7)Java是解釋執(zhí)行的:
Java解決器可以直接在任何已移植該解釋器的機器上解釋、執(zhí)行Java字節(jié)代碼。再者,由于其鏈接過程比較傾向于逐步增量與輕量過程,因此程序開發(fā)更快、更精密。
(8)Java對多線程的支持
Java擁有一組復雜的同步化基本單元,它們是以廣泛使用的C.A.R.Hoare監(jiān)視器與條件變量圖為基礎的。將這些概念融合到語言中之后,它們就變得更容易使用且更為健壯。這種融合方式大部分來自Xerox的Cedar/Mesa系統(tǒng)。
多線程所帶來的其它好處包括更好的交互式回應能力與實時運行能力。然而這會受到底層平臺的限制:獨立執(zhí)行的Java運行環(huán)境有著很好的實時執(zhí)行能力,而若在其他系統(tǒng)例如Unix、Windows、Macintosh或WindowsNT等平臺上執(zhí)行時,則會由于底層平臺的原因而使實時響應能力受到影響。