程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 漫談EJB――Enterprise JavaBeans(一)

漫談EJB――Enterprise JavaBeans(一)

編輯:關於JAVA

Java語言

Java語言最早被稱為Oak,它是為了實現嵌入式的消費類電子產品應用而產生的,它的作者是James Gosling。Ed Frank, Patrick Naughton, Jonathan Payne, Chris Warth在隨後的幾年時間中為Java語言加入了大量的特性,並把Java語言的目標做了一個重新的定位,定位於適合Internet的語言。

Java語言是一種多用途的語言、並發的語言、以類為基礎,面向對象的語言。它的設計盡可能的做到和操作系統是無關的,也就是Java所宣傳的那句話:“一次編寫,到處運行。”Java的設計參考了C和C++語言,因此熟悉C和C++的程序員對Java語言上手很快,而Java設計的原則是能夠利用Java語言快捷的編寫應用,所以我們可以發現,在Java語言中,並沒有那些C和C++中的復雜的機制。最明顯的就是C中被大量使用的指針,由於它的隨意性,被Java以引用來代替了。而C++中的操作符重載、模板、泛型的特性也因為使用比較復雜,Java也不予采用。但是目前Java仍然不斷的推出新的特性,以滿足應用的發展。例如在新推出的JDK1.4中,Java語言就能夠支持Assertment機制和Perl語言中最有用的正則表達式機制。

Java語言主要由以下五種元素組成:標識符、關鍵字、文字、運算符和分隔符。這五種元素有著不同的語法含義和組成規則,它們互相配合,共同完成Java語言的語意表達。

1:標識符。變量,類和方法都需要一定的名稱,我們將這種名稱叫做標識符。

2:關鍵字。關鍵字是Java語言本身使用的標識符,它有其特定的語法含義。所有的Java關鍵字將不能被用作標識符。

3:數據類型。Java有著不同的數據類型。比較值得一提的是字符串數據類型,字符串數據類型是用一對雙引號括起來的字符序列,字符串數據實際上是由String類所實現,而不是C語言中所用的字符數組。每一個字符串數據將產生一個String類的新的實例,用戶不必對字符串與類這個概念發生關系而感到擔心,由於類的特性,你不必擔心如何去實現它們,它們會自己照顧好自己,需要說明的是字符串在Java裡作為類只是出於安全的考慮。

4:運算符。任何語言都有自己的運算符,Java語言也不例外,如+、-、*、/等都是運算符,運算符的作用是與一定的運算數據組成表達式來完成相應的運算。對不同的數據類型,有著不同的運算符。

5:分隔符。分隔符用來使編譯器確認代碼在何處分隔。‘’‘’‘;’‘:’都是Java語言的分隔符。

學習 Java 語言很簡單,畢竟 Java 語言也只包含五十多個關鍵詞(keyWord)與幾十個算符(Operator),再加上 Java 語法(syntax)也很簡單,所以一般人可以很快就學會 Java 語言。危險的是,很多人認為已經完全掌控 Java 語言,但其實對於內部的運作機制仍不能掌握,這些盲點有時候會讓你無法完全掌控 Java 語言。克服這些盲點的方式是看「The Java Language Specification, 2nd Ed.」(沒有中文版)來徹底弄懂 Java 程序語言,並看「Inside the Java Virtual Machine, 2nd Ed.」來徹底掌握 Java 虛擬機器的運作方式。學會了語言,並不代表就可以設計出好的對象導向系統架構。想要成為對象導向的專家,往往需要:(1) 多看相關的書,特別是 Design Pattern 和 Refactoring 的書。(2) 多觀摩別人的程序(例如 Java API 的 design 與 implementation)(3) 多寫程序。學會 Java 語言之後,還需要學會一些 API 才能寫出有用的程序。Java 的 API 非常多,必須規劃好一個學習路徑,才不會在浩瀚的 API 大海中迷失。必備的 API 包括了:IO、New IO、Collection Framework、Network、RMI、JAXP... 等。至於其它的 API,就看你的需求而定,大致上分成:

* GUI 類:JavaBean -> Swing -> JavaHelp -> Java2D -> Image IO -> JAI -> Java 3D ...

* EntERP(企業資源計劃(ERP)培訓 )rise 類:JDBC -> JDO -> Servlet -> JSP -> EJB -> JMS -> JTA/JTS...

* J2ME 類(這一類不是我的專長,無法提供學習順序建議)

Java語言通常都是根據Java虛擬機規范(The Java Virtual Machine Specification)中的定義,編譯為字節碼指令集和二進制格式。因此我們接下來就討論Java虛擬機(JVM)

JVM

我們已經談過Java語言的語法類似於C和C++,但是摒棄了C和C++中復雜、疑惑和不安全的特性。Java語言最早是用來構建消費類網絡設備的軟件的,因此它要支持多主機的架構,並要求能夠提供安全的軟件組件。為了滿足這些需求,編譯好的代碼就必須能夠通過網絡來傳播,能夠在任何客戶端上運行,同時還要保證客戶端是足夠安全的。

Java虛擬機是Java和Java 2 平台的基石。它能夠保證Java語言和硬件、操作系統無關,保證編譯後的代碼最小,並保護用戶不受惡意程序的攻擊。Java虛擬機到底是什麼呢。其實它就是一台不實際存在的計算機。和真實的計算機類似,它也有自己的指令集,並可以在運行環境中分配內存區域。使用虛擬機機制來實現編程語言並不是Java的創舉,這已經是非常普遍的做法了,最著名的許你就莫過於UCSD Pascal的P-Code機。

只要浏覽器檢測到目前所處理的Web文件內容含有一個Java Applet,浏覽器將會為這個Java小程序另外開一個JVM,執行這個Java應用小程序。在JVM中執行的Java小程序可以得到充分安全的保護。如同我們上面所說,JVM是一個自給自足的作業環境,就像是一台獨立的計算機一樣。例如,在JVM運作的Applet,無法存取主機操作系統。優點是:

1. 系統中立。Java應用程序可以在任何JVM中運作,不論該系統使用何種硬件、軟件。

2. 安全。正因JVM跟操作系統沒有任何接觸,Java程序很難損害到其它檔案或應用程序。

缺點是,由於在JVM運作的程序獨立在操作系統之外,也就無法享受操作系統各項特殊功能。

Java技術之所以在今天得到了如此廣闊的應用,其中它的安全性是不能不提的。不同於其它技術(例如Microsoft的ActiveX)中安全性作為附加設計和補丁,Java從設計之初便考慮到了安全性。因此Java的安全性是在語言層次實現的。Java的安全性由下列三個方面保證:

1、 語言特性(包括數組的邊界檢查、類型轉換、取消指針型變量)。

2、 資源訪問控制(包括本地文件系統訪問、Socket連接訪問)。

3、 代碼數字簽名(通過數字簽名來確認代碼源以及代碼是否完整)。

Java的源代碼是先編譯成為一種字節碼的中間代碼,存放這種代碼的文件就是.class的文件。真正執行的時候是將class文件裝載到JVM(虛擬機)中,然後由JVM解釋執行的。所以數組的上下界檢查及合法的類型轉換是通過JVM得到保證的。Java通過一個類裝載器類(ClassLoader)將虛擬機代碼文件(即class文件)裝載到JVM中,當完成裝載後,一個被稱做安全管理器(SecurityManager)的類開始運行,例如當一個Applet的class文件被缺省的類裝載器裝載到JVM中後,JVM會立即為它裝載一個SecurityManager的子類AppletSecurity,由這個管理器來驗證操作。代碼的所有動作(例如文件讀寫)都要先經過驗證,只有被該安全管理器接受的動作才能完成,否則就會拋出SecurityException異常。

對於JDK1.0,權限被籠統的劃分為兩大塊。一是擁有所有的權限,一個是僅擁有"沙箱"(sandBox)權限,這也是普通的Applet所擁有的權限。這時本地文件讀寫或是與源主機(Orignal Server)以外的主機連接都是被禁止的。這種劃分的最大問題就是缺乏靈活性。例如我們希望一個Applet在用戶信任的情況下能夠對本地文件系統的某個目錄進行讀寫,但並不要通過Socket與其它主機連接。這是JDK1.0的權限劃分就不能達到要求。JDK1.1後改進了權限的劃分,引入了權限集(PermissionSet)的概念。

由於我們的文章並不是討論JVM,因此,我們只是對JVM做一個簡單的介紹。如果需要詳細了解的,可以參考『The JavaTM TMVirtual Machine Specification』。

客觀的看待Java

相對於其他編程語音,Java有一個無庸置疑的優點:用戶以及編譯器第一次不必了解生成可執行代碼的特定CPU細節。Java引入了一個編譯代碼中間層,叫做字節代碼,並使用一個虛擬抽象的機器,而不是一個真實的機器。當Java編譯器結束了一個源文件的編譯後,你所得到的不是可以立即在一個給定平台上運行的代碼,而是可以在任何真實的平台上運行的字節代碼,唯一的條件就是這個平台要理解和支持Java。這些發展包含著一個文化的變革。作為一個開發人員,你只需要確定Java虛擬機(JVM)提供的抽象層,不同的OS銷售商負責執行代碼層,從而將中立於平台的字節代碼映射到主機平台的機構中。在這種情況下,Java似乎是統一分布式計算機世界的領袖候選人了。“編寫一次,永遠運行”(並且無論在哪裡)就成為Java誘人但卻真實的口號。

但我們平心而論,Java的跨平台並不是一個非常誘人的特性?跨平台理論的發展很好地證明了這一點。我們看到,將Java代碼從一個平台移植到另一個平台―Java這個語言最重要和最受吹捧的特點―並不象宣傳的那樣容易。任何Java平台都有其自己的虛擬機,它可以理解通用的字節代碼,並且及時地將其編譯為本地代碼。矛盾由此產生,不同虛擬機的執行也很不相同,這一點足以使代碼的移植比預期耗費多得多的時間,而且基本上不是自動的。在企業用戶的角度上來說,也很少會有企業會頻繁的更換平台,因此這個特性是否能夠帶來高價值是很難評價的。

那麼,Java模型的好處在哪裡呢?首先,Java是一種先進的、面向對象的語言,包含了預防常見錯誤的內置功能,並在僅僅一兩個對象中攜帶了許多經常需要用到的功能。與C++相比,Java更易於讀寫,不容易出錯,而且更加美觀,但是它速度較慢也不太靈活。想實現在任何軟件和硬件平台上都可虛擬移植,Java盡可能少地使用了公

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