程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 你知道的Java和你不知道的Java

你知道的Java和你不知道的Java

編輯:JAVA編程入門知識

最近我們收到一封電子郵件,咨詢 “什麼是Java?”條目的信息。在2006年,難道還有人不知道“什麼是Java”嗎?十年來,有大量介紹Java的書籍、網站和會議,難道不是所有人都知道“什麼是Java”嗎?顯然答案是否定的。

究竟,情況已經改變。

每個涉及applet和實時(Just-in-time)編譯器的含糊定義都有許多已固定下來並為許多人所了解的新說明和新事實,但它們並非全部都寫入文檔中了。過去,Java經常意味著:

•Applet

•字節碼解釋

•緩慢的性能

•等待Sun恩賜的“拜物教”

而如今,它意味著:

•Web應用程序、Web服務、SOA等等

•熱點動態編譯

•高性能

•一個日益獨立於Sun的開源社區

過去有個口號叫做“一次編寫,隨處運行”,這仍然是事實,但編寫的內容及其運行環境和方式正在改變。

Java編程語言

Java是一種面向對象的高級編程語言,它在許多方面受到C、C++和Smalltalk的影響,還借用了其他語言的概念。其語法的設計方式使得那些熟悉“大括號”語言(繼續自C)的人也會熟悉Java語法,但它具有比C++更強的面向對象性、對象的靜態類型轉換以及相當嚴格的異常系統,該系統要求調用堆棧中的每個方法要麼處理異常,要麼聲明其拋出異常的能力。當然還有垃圾自動收集功能,這使開發人員不必釋放由廢棄對象占用的內存。

Java的一個比較受爭議的方面(這些方面在發布Java時被廣為接受,但現在正日益受到批評)是它的不完全的面向對象性。具體來說,Java基本類型(如int、char、boolean等等)都不是對象,並且開發人員需要以完全不同的方式來處理它們:由於int不是類,因此不能為其創建子類並為其聲明新方法,也不能將它傳遞給需要普通對象的方法,諸如此類。基本類型提高了Java的性能,但卻降低了代碼的清楚度,這一點使用所謂的“包裝器類”(Integer、Character和Boolean)的人應該深有體會。Java 5.0引入了autoboxing(自動裝箱)模式,以消除許多使用包裝器類的用例,但在某些方面這使代碼的功能不那麼明顯了。

從理論上講,Java是種“早期出錯”語言。由於它的語法約束,許多編程錯誤在Java中不可能出現。由於不能直接訪問指針,所以指針運算錯誤也就不存在了。使用對象時的類型假如與當初聲明它的類型不同,就會要求進行顯式的類型轉換,這使編譯器能夠拒絕不合邏輯的編程,如對一幅圖像調用一個字符串方法。

許多Java企業框架都要求使用配置文件或者部署描述符(通常用XML編寫)來指定操作:哪個類處理特定的HTTP請求、在規則引擎中執行的步驟順序等等。實際上,要實現這些功能不能只用這種語言。評論人士指出,這會產生不當後果:不僅避開了Java編譯器的檢查,而且開發人員無法再(只)根據程序的源代碼就可確定它如何運行。Java 5.0為該語言添加了注釋(annotation)特性,它答應使用值為方法、字段和類添加標簽,在運行時,通常可通過反射對這些值進行內省和操作。許多程序員喜歡注釋,因為它簡化了工作,否則就需要通過部署描述符或其他方法來解決問題。但是,注釋也有可能使Java代碼難以理解,因為注釋的有無可能會影響代碼的執行方式,而這從注釋中不太輕易看出來。

盡管存在這麼多的批評意見,但Java通常還是被認為是當今最流行的通用計算語言。在企業編程領域,它是一個廣泛使用的標准,而且2005年它取代C++成為SourceForge項目使用最多的語言。使用Java有很多好處:免費的工具(適用於多種平台:Linux、Windows、Solaris和Mac均可編譯和執行Java應用程序)、內容豐富的知識庫以及大量樂意提供幫助的開發人員。

Java語言已經達到了開發人員生產率與代碼性能之間的一個特定平衡點:CPU周期成本持續降低,但開發人員的開發周期卻並未明顯縮短,因此在開發人員與CPU操作碼執行之間再出現一個抽象層也許是不可避免的了,它將使開發人員能夠更快地創建更好的軟件。實際上,Java生產率的批評者(如《Beyond Java》的BrUCe Tate)可能正是觀察到了這種不斷推進Java使其達到新的平衡點,從而進一步犧牲性能去換取更高的開發人員生產率的趨勢。


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved