JAVA程序員不得不留意的編碼規(guī)范
01 規(guī)范存在的意義
應(yīng)用編碼規(guī)范對于軟件本身和軟件開發(fā)職員而言尤為重要,有以下幾個原因:
- 好的編碼規(guī)范可以盡可能的減少一個軟件的維護本錢 , 并且?guī)缀鯖]有任何一個軟件,在其整個生命周期中,均由最初的開發(fā)職員來維護;
- 好的編碼規(guī)范可以改善軟件的可讀性,可以讓開發(fā)職員盡快而徹底地理解新的代碼;
- 好的編碼規(guī)范可以最大限度的進步團隊開發(fā)的合作效率;
- 長期的規(guī)范性編碼還可以讓開發(fā)職員養(yǎng)成好的編碼習慣,甚至鍛煉出更加嚴謹?shù)乃季S;
02 命名規(guī)范
1. 一般概念
- 盡量使用完整的英文描述符
- 采用適用于相關(guān)領(lǐng)域的術(shù)語
- 采用大小寫混合使名字可讀
- 盡量少用縮寫,但假如用了,必須符合整個工程中的同一定義
- 避免使用長的名字(小于 15 個字母為正常選擇)
- 避免使用類似的名字,或者僅僅是大小寫不同的名字
- 避免使用下劃線(除靜態(tài)常量等)
2. 標識符類型說明
(1) 包( Package )的命名
Package 的名字應(yīng)該采用完整的英文描述符,都是由一個小寫單詞組成。并且包名的前綴總是一個頂級域名, 通常是 com、edu、gov、mil、net、org 等;
如:com.yjhmily.test
(2) 類( Class )的命名
類名應(yīng)該是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量保證類名簡潔而富于描述。
使用完整單詞,避免縮寫詞 ( 除非工程內(nèi)有同一縮寫規(guī)范或該縮寫詞被更廣泛使用,像 URL , HTML)
如:FileDescription
(3) 接口( Intece )的命名基本與 Class 的命名規(guī)范類似。在滿足 Classd 命名規(guī)則的基礎(chǔ)之上,保證開頭第一個字母為 ”I”, 便于與普通的 Class區(qū)別開。實在現(xiàn)類名稱取接口名的第二個字母到最后,且滿足類名的命名規(guī)范;
如:IMenuEngine
(4) 枚舉( Enum )的命名
基本與 Class 的命名規(guī)范類似。在滿足 Classd 命名規(guī)則的基礎(chǔ)之上,保證開頭第一個字母為 ”E” , 便于與普通的 Class區(qū)別開。
如:EUserRole
(5) 異常( Exception )的命名
異常( Exception ) 通常采用字母 e 表示異常,對于自定義的異常類,其后綴必須為 Exception
如:BusinessException
(6)方法( Method )的命名
方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。
方法名盡可能的描述出該方法的動作行為。返回類型為 Boolean 值的方法一般由“ is ”或“ has ”來開頭
如:
getCurrentUser() addUser() hasAuthority()
(7) 參數(shù)( Param )的命名
第一個單詞的首字母小寫,其后單詞的首字母大寫。參數(shù)目名不答應(yīng)以下劃線或美元符號開頭, 固然這在語法上是答應(yīng)的。參數(shù)名應(yīng)簡短且富于描述。
如:public UserContext getLoginUser(String loginName);
(8)常量字段 ( Constants )的命名
靜態(tài)常量字段( static final ) 全部采用大寫字母,單詞之間用下劃線分隔;
如:
public static final Long FEEDBACK; public static Long USER_STATUS;
03 注釋規(guī)范
一個很好的可遵循的有關(guān)注釋的經(jīng)驗法則是:
問問你自己,你假如從未見過這段代碼,要在公道的時間內(nèi)有效地明白這段代碼,你需要一些什么信息???
1. 一般概念
- 注釋應(yīng)該增加代碼的清楚度
- 保持注釋的簡潔
- 在寫代碼之前或同時寫注釋
- 注釋出為什么做了一些事,而不僅僅是做了什么
2. 注釋哪些部分
Java 文件:必須寫明版權(quán)信息以及該文件的創(chuàng)建時間和作者;
類:類的目的、即類所完成的功能,以及該類創(chuàng)建的時間和作者名稱;多人一次編輯或修改同一個類時,應(yīng)在作者名稱處出現(xiàn)多人的名稱;
接口: 在滿足類注釋的基礎(chǔ)之上,接口注釋應(yīng)該包含設(shè)置接口的目的、它應(yīng)如何被使用以及如何不被使用。在接口注釋清楚的條件下對應(yīng)的實現(xiàn)類可以不加注釋;
方法注釋: 對于設(shè)置 (Set 方法 ) 與獲取 (Get 方法 ) 成員的方法,在成員變量已有說明的情況下,可以不加注釋;普通成員方法要求說明完成什么功能,參數(shù)含義是什么且返回值什么;另外方法的創(chuàng)建時間必須注釋清楚,為將來的維護和閱讀提供寶貴線索;
方法內(nèi)部注釋: 控制結(jié)構(gòu),代碼做了些什么以及為什么這樣做,處理順序等,特別是復雜的邏輯處理部分,要盡可能的給出具體的注釋;
參數(shù): 參數(shù)含義、及其它任何約束或條件條件;
屬性: 字段描述;
局部 ( 中間 ) 變量: 無特別意義的情況下不加注釋;
3. 注釋格式
遵循工程規(guī)定的同一注釋格式,一般情況下會以 codetemplates.xml 格式的文件導進 IDE(Eclipse) 或者用Eclipse默認的;
04 代碼格式規(guī)范
遵循工程規(guī)定的同一代碼格式,一般情況下直接使用 IDE(Eclipse) 自帶的默認代碼格式對代碼進行格式化;
05 其他規(guī)范
JSP 文件命名
用完整的英文描述說明 JSP 所完成的功能,盡可能包括一個生動的動詞,第一個字母小寫,
如: viewMessage.jsp 、editUser.jsp 等。
06 工程特有命名規(guī)范
1. 持久層
- Hibernate 映射文件及實體與數(shù)據(jù)庫表名稱完全對應(yīng);
如: Advertisement.hbm.xml 、 Advertisement.java
- 數(shù)據(jù)訪問 DAO
DAO 接口和實現(xiàn)類名稱必須完全符合正常接口和實現(xiàn)類的命名規(guī)則,且最后以 ”DAO” 結(jié)尾DAO 內(nèi)的數(shù)據(jù)訪問方法必須足夠抽象的描述出對數(shù)據(jù)庫的基本 CRUD 操縱;
如: ICrossAdDAO( 接口 ) 、 CrossAdDAO( 實現(xiàn)類 )
- 各種操縱數(shù)據(jù)庫的 HQL 配置文件
HQL 文件的個數(shù)原則上與系統(tǒng)的 Services 層的服務(wù)個數(shù)相等,且以服務(wù)名稱命名 HQL 文件;
如: resource.hbm.xml
2. 服務(wù)層
(1)服務(wù)接口和實現(xiàn)
服務(wù)接口和實現(xiàn)類必須完全符合正常接口和實現(xiàn)類的命名規(guī)則;以工程定義的服務(wù)名為主體, 并同一以 ”Serv” 結(jié)尾
如: IResourceServ( 服務(wù)接口 ) 、 ResourceServ( 接口實現(xiàn)類 )
(2)服務(wù)接口方法
方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。
方法名盡可能的描述出該方法的動作行為。
- 返回類型為 Boolean 值:用“ is ”或“ has ”來開頭
- 得到某數(shù)據(jù): get+ 數(shù)據(jù)描述名詞復數(shù) + 數(shù)據(jù)類型;
- 得到所有數(shù)據(jù): get+All+ 數(shù)據(jù)描述名詞復數(shù) + 數(shù)據(jù)類型;
- 通過 XXX 得到 / 查詢某數(shù)據(jù): get/query+ 數(shù)據(jù)描述名詞復數(shù) + 數(shù)據(jù)類型 +By+ 條件;
- 添加某數(shù)據(jù): save/add+ 數(shù)據(jù)描述名詞 ()
- 更新某數(shù)據(jù): save/update+ 數(shù)據(jù)描述名詞;
- 刪除某數(shù)據(jù): delete/remove+ 數(shù)據(jù)描述名詞;
(3)業(yè)務(wù)對象
業(yè)務(wù)名稱 +BO
(4)查詢參數(shù)對象
凡是繼續(xù) Abst***QuerySpec 的查詢參數(shù)類全部滿足以下規(guī)則:
- Query+ 所要查詢的數(shù)據(jù)描述名詞 +Spec
- 作為參數(shù)傳進時,參數(shù)名必須為:所要查詢的數(shù)據(jù)描述名詞 +Spec
如: QueryProgramSpec
3. MVC 層
(1)Action 控制層
Action 類名:功能模塊名稱 +Action ;
Actoin 方法名稱盡可能的描述出頁面遷移的往向
如: LoginAction( 登錄用 action) , toWelcome( 轉(zhuǎn)向歡迎頁的 action 方法 )
(2)資源文件
系統(tǒng)全局資源文件: globalMessages_+ 字符編碼類型 +.properties
功能模塊內(nèi)部的資源文件: package.properties
4. Spring 配置文件
(1) Action 相關(guān)配置文件
文件目錄: WebRoot/WEB-INF/spring/action/功能模塊名稱 +_ApplicationContext.xml
(2)Services 相關(guān)配置文件
文件目錄: WebRoot/WEB-INF/spring/services/Services_ApplicationContext.xml
(3)全局性配置文件
文件目錄: WebRoot/WEB-INF/spring/工程名+_ApplicationContext.xml
(4)JSP 文件
采用完整的英文描述說明 JSP 所完成的功能,盡可能包括一個生動的動詞,第一個字母小寫,
如: viewMessage.jsp 、editUser.jsp 等。
07 應(yīng)用命名總結(jié)
所有文件,變量同一采用英文單詞表示。盡量避免簡寫和縮寫。
1. java類
java類根據(jù)java規(guī)范采用駝峰標示,java類首字母大寫,類名中的各個單詞首字母都大寫。
Java類代表現(xiàn)實世界的一個事物,類名詞最好是一個名詞。最好采用現(xiàn)實的名稱。如員工用Employee,而不是Employ避免歧義。最好不是用縮寫empl等。
- 應(yīng)用軟件中經(jīng)常應(yīng)用分層,每一層的類的名稱盡量帶上該層后綴。
- 推薦實體類沒有后綴名。
- 數(shù)據(jù)層使用SQLMapper后綴。
- 數(shù)據(jù)層查詢參數(shù)為Param
- 服務(wù)層使用Service
- Web層使用Packager
- Web層form表單后綴為Form
比如員工模塊,分別為Employee(實體),EmployeeSQLMapper(數(shù)據(jù)層),EmployeeService(服務(wù)層),EmployeePackager(web層)
常用英文名稱(最好能整理一份常用詞匯詞典)
- 員工:employee
- 部分:department
2. 字段
根據(jù)java駝峰標示命名法,java字段以首字母以小寫開頭,每個單詞首字母大寫(第一個單詞除外)。
字段表示現(xiàn)實中一個事物的屬性在類中的名稱,最好用名詞。字段名稱應(yīng)采用最精確的單詞,盡量采用一個單詞。沒有必要把類名掛在字段前面,如employee的id字段,直接可以用id,不用使用employeeId,假如出現(xiàn)兩個字段可能產(chǎn)生歧義,可以增加描述性單詞來區(qū)分。
字段命名最好能看詞識意。
3. 方法
方法表示一種行為,它代表一種動作,最好是一個動詞或者動詞詞組或者第一個單詞為一個動詞。
屬性方法,get/set開頭,其后跟字段名稱,字段名稱首字母大寫。
數(shù)據(jù)層方法,只能以insert(插進),delete(刪除),update(更新),select(查找),count(統(tǒng)計)開頭,其他層方法避免以這個5個單詞開頭,以免造成誤解。
服務(wù)層方法,根據(jù)方法的行為命名,只描述方法的意義,而不采用方法的目的命名。比如系統(tǒng)的添加新用戶,用戶可以前臺注冊,也可以治理員后臺添加,方法會被重用,所以最好不要用使用register,采用add會更好寫。避免使用與web層相關(guān)的方法。
Web層方法最好是貼近web的語言,如register,login,logout等方法。
4. 變量
變量是一方法中重要的元素,一個貼切的名稱,能讓這段代碼優(yōu)雅百倍(夸張一下)。變量名首字母小寫。
變量屬于名稱,避免用采用其他詞性。
采用名稱要能代表在方法中的意義。假如員工列表:
最好是使用List employees或則employeeList而不是往使用List list或則更糟糕的List l,假如應(yīng)用了List employees和Map employees可以分別使用employeeList和employeeMap。
自定義類型的變量可以采用本身的名稱,把首字母改為小寫。
5. Xml文件名
Xml命名采用與類名相似的方法,采用首字母大寫的駝峰標示。
Ibatas映射文件:namespace名稱為該模塊實體類的名稱,首字母大寫,typealias采用該類*** name。resultMap和sql名稱采用首字母小寫的命名規(guī)則,方法名稱與數(shù)據(jù)層方法名稱一致。
Form和FormItem文件名才用首字母大寫的駝峰標示。Form名稱也使用首字母大寫的格式。Form中的item名稱使用與form表單類的屬性名稱。采用駝峰標示(最好不使用_分隔)
Action文件名稱使用首字母大寫,文件package和action name字段采用所有字母小寫的格式。
6. URL命名
url路徑名稱同一采用小寫(所有字母都用小寫),用get方法提交的參數(shù)名和url路徑名一樣使用小寫。
(1)J2EE規(guī)范
①J2EE規(guī)范
J2EE(Java 2 Platform,Enterprise Edition)是SUN公司定義的一個開發(fā)分布式企業(yè)級應(yīng)用的規(guī)范。它提供了一個多層次的分布式應(yīng)用模型和一系列開發(fā)技術(shù)規(guī)范。多層次分布式應(yīng)用模型是指根據(jù)功能把應(yīng)用邏輯分成多個層次,每個層次支持相應(yīng)的服務(wù)器和組件,組件在分布式服務(wù)器的組件容器中運行(如Servlet組件在Servlet容器上運行,EJB組件在EJB容器上運行),容器間通過相關(guān)的協(xié)議進行通訊,實現(xiàn)組件間的相互調(diào)用。遵從這個規(guī)范的開發(fā)者將得到行業(yè)的廣泛支持,使企業(yè)級應(yīng)用的開發(fā)變得簡單、快速。
②J2EE組件層次J2EE組件和層次如圖1-1所示。
圖1-1 J2EE組件層次(略)
①. J2EE規(guī)范定義了如下組件:
A. 客戶端組件
B. Web組件
C. EJB組件
②. J2EE規(guī)范定義了以下四個層次。
A. 客戶端層(Client Tier)
客戶端層用來實現(xiàn)企業(yè)級應(yīng)用系統(tǒng)的操縱界面和顯示層。另外,某些客戶端程序也可實現(xiàn)業(yè)務(wù)邏輯。可分為基于Web的和非基于Web的客戶端兩種情況。基于Web的情況下主要作為企業(yè)Web服務(wù)器的瀏覽器。非基于Web的客戶層則是獨立的應(yīng)用程序,可以完成瘦客戶機無法完成的任務(wù)。
B. Web層
為企業(yè)提供Web服務(wù)。包括企業(yè)信息發(fā)布等。Web層由Web組件組成。J2EE Web組件包括JSP頁面和Servlets。Web層也可以包括一些JavaBeans。Web層主要用來處理客戶請求,調(diào)用相應(yīng)的邏輯塊,并把結(jié)果以動態(tài)網(wǎng)頁的形式返回到客戶端。
C. 業(yè)務(wù)層(Business Tier)
業(yè)務(wù)層也叫EJB層或應(yīng)用層,它由EJB服務(wù)器和EJB組件組成。一般情況下很多開發(fā)商把Web服務(wù)器和EJB服務(wù)器產(chǎn)品結(jié)合在一起發(fā)布,稱為應(yīng)用服務(wù)器。EJB層用來實現(xiàn)企業(yè)級信息系統(tǒng)的業(yè)務(wù)邏輯。這是企業(yè)級應(yīng)用的核心,由運行在業(yè)務(wù)層中的EJB來處理。一個Bean從客戶端接收數(shù)據(jù)、處理,然后把數(shù)據(jù)送到企業(yè)信息系統(tǒng)層存儲起來。同樣,一個Bean也可以從企業(yè)信息系統(tǒng)取出數(shù)據(jù),發(fā)送到客戶端程序。業(yè)務(wù)層中的EJB要運行在容器中,容器解決了底層的題目,如事務(wù)處理、生命周期、狀態(tài)治理、多線程安全治理、資源池等。
D. 企業(yè)信息系統(tǒng)層(Enterprise Information System tier)
處理企業(yè)系統(tǒng)軟件,包括企業(yè)基礎(chǔ)系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其他遺留的系統(tǒng)。J2EE將來的版本支持連接架構(gòu)(Connector Architecture)。它是連接J2EE平臺和企業(yè)信息系統(tǒng)層的標準API。
業(yè)務(wù)層和Web層共同組成了三層J2EE應(yīng)用的中間層,其他兩層是客戶端層和存儲層或企業(yè)信息系統(tǒng)層。
E. J2EE的分布應(yīng)用技術(shù)
為實現(xiàn)企業(yè)級分布式應(yīng)用,J2EE定義了豐富的技術(shù)標準,符合這些標準的開發(fā)工具和API為開發(fā)企業(yè)級應(yīng)用提供支持。這些技術(shù)涵蓋數(shù)據(jù)庫訪問、分布式通訊、安全等。為分布式應(yīng)用提供支持的多方面。
a. 組件技術(shù)
J2EE的核心思想是基于組件/容器的應(yīng)用。每個組件提供了方法、屬性、事件的接口。組件可以由多種語言開發(fā)。組件是可以重用的、共享的、分布的。
b. Servlets和JSP
Servlets用來天生動態(tài)頁面或接收用戶請求產(chǎn)生相應(yīng)操縱(調(diào)用EJB)。JSP基于文本。通過容器產(chǎn)生相應(yīng)的Servlets,使內(nèi)容和顯示分開。J2EE中提供了Servlet API,用于創(chuàng)建Servlets。
c. EJB技術(shù)
EJB規(guī)范提供了一種開發(fā)和部署服務(wù)器端組件的方法。每個EJB是按功能邏輯劃分的,開發(fā)時不必關(guān)注系統(tǒng)底層細節(jié)題目,只關(guān)注具體的事務(wù)分析。EJB開發(fā)完畢后,按規(guī)范部署在EJB容器,完成相應(yīng)的事務(wù)功能。EJB支持分布式計算。真正體現(xiàn)了企業(yè)級的應(yīng)用。
d. 數(shù)據(jù)庫訪問
無論是傳統(tǒng)的企業(yè)信息系統(tǒng)還是將來的企業(yè)信息系統(tǒng),數(shù)據(jù)庫都占有重要的地位。開發(fā)分布式系統(tǒng)要求數(shù)據(jù)庫訪問具有良好的靈活性和擴展性。JDBC(JavaDatabase Connectivity)是一個獨立于特定的數(shù)據(jù)庫治理系統(tǒng)的開發(fā)接口。它提供一個通用的訪問SQL數(shù)據(jù)庫和存儲結(jié)構(gòu)的機制,支持基本SQL功能的一個通用底層的應(yīng)用程序編程接口。它在不同的數(shù)據(jù)庫界面上提供了一個同一的用戶界面。提供了多種多樣的數(shù)據(jù)庫連接方式。J2EE中提供了JDBC API使多種數(shù)據(jù)庫操縱簡單、可行。
e. 分布式通訊技術(shù)
分布式通訊技術(shù)是分布式企業(yè)系統(tǒng)的核心技術(shù)。J2EE框架為Web應(yīng)用和EJB應(yīng)用提供多種通訊模式。
為了使運行于某一機器上的對象調(diào)用另一臺機器的對象,J2EE實現(xiàn)了如下通訊方式:
- Java RMI(Remote Method Invoke):遠程方法調(diào)用。Java RMI實現(xiàn)Java對象間的遠程通訊。服務(wù)器用注冊器把一個名字和遠程對象綁在一起,客戶機通過名字從服務(wù)器注冊器上查找遠程對象,找到后下載遠程對象的本地代理,調(diào)用遠程對象的方法。
- Java IDL(Java Inte***ce Defilation Language):接口定義語言??梢詫崿F(xiàn)Java對象的符合CORBA規(guī)范的遠程對象通訊。
- JNDI(Java Naming and Directory Inte***ce):Java命名和目錄接口。JNDI為分布式系統(tǒng)訪問遠程對象提供了一個標準的命名接口。EJB主接口對象、數(shù)據(jù)源、消息服務(wù)器等都可以用JDNI樹的形式注冊到名稱服務(wù)器中,調(diào)用它們的對象通過符合JDNI的程序接口在JNDI名稱服務(wù)器中查找指定名稱的遠程對象。
- JMS(Java Message Service):Java消息服務(wù)。為開發(fā)消息中間件應(yīng)用程序定義了一套規(guī)范。Java客戶端和Java中間層訪問消息系統(tǒng)只要實現(xiàn)JMS定義的簡單的接口,就可以實現(xiàn)復雜的應(yīng)用,而不必往關(guān)注低級的技術(shù)細節(jié)。
08 JAVA編程規(guī)范
1. 應(yīng)用范圍
本規(guī)范應(yīng)用于采用J2EE規(guī)范的項目中,所有項目中的JAVA代碼(含JSP,SERVLET,JAVABEAN,EJB)均應(yīng)遵守這個規(guī)范。同時,也可作為其它項目的參考。
2. 設(shè)計類和方法
(1)創(chuàng)建具有很強內(nèi)聚力的類
方法的重要性往往比類的重要性更輕易理解,方法是指執(zhí)行一個同一函數(shù)的一段代碼。類常被錯誤的視為是一個僅僅用于存放方法的容器。有些開發(fā)職員甚至把這種思路作了進一步的發(fā)揮,將他們的所有方法放進單個類之中。
① J2EE是一套全然不同于傳統(tǒng)應(yīng)用開發(fā)的技術(shù)架構(gòu),包含很多組件,主要可簡化且規(guī)范應(yīng)用系統(tǒng)的開發(fā)與部署,進而進步可移植性、安全與再用價值。
② J2EE 的四層模型
- 運行在客戶端機器上的客戶層組件
- 運行在J2EE服務(wù)器上的Web層組件
- 運行在J2EE服務(wù)器上的業(yè)務(wù)邏輯層組件
- 運行在EIS服務(wù)器上的企業(yè)信息系統(tǒng)(Enterprise information system)層軟件
09 J2EE應(yīng)用程序組件
J2EE應(yīng)用程序是由組件構(gòu)成的.J2EE組件是具有獨立功能的軟件單元,它們通過相關(guān)的類和文件組裝成J2EE應(yīng)用程序,并與其他組件交互
J2EE說明書中定義了以下的J2EE組件:
- 應(yīng)用客戶端程序和applets是客戶層組件.
- Java Servlet和JavaServer Pages(JSP)是web層組件.
- Enterprise JavaBeans(EJB)是業(yè)務(wù)層組件.
1. 客戶層組件
J2EE應(yīng)用程序可以是基于web方式的,也可以是基于傳統(tǒng)方式的.
2. web 層組件
J2EE web層組件可以是JSP 頁面或Servlets.按照J2EE規(guī)范,靜態(tài)的HTML頁面和Applets不算是web層組件。正如下圖所示的客戶層那樣,web層可能包含某些 JavaBean 對象來處理用戶輸進,并把輸進發(fā)送給運行在業(yè)務(wù)層上的enterprise bean 來進行處理。
3. 業(yè)務(wù)層組件
業(yè)務(wù)層代碼的邏輯用來滿足銀行,零售,金融等特殊商務(wù)領(lǐng)域的需要,由運行在業(yè)務(wù)層上的enterprise bean 進行處理.下圖表明了一個enterprise bean 是如何從客戶端程序接收數(shù)據(jù),進行處理(假如必要的話), 并發(fā)送到EIS 層儲存的,這個過程也可以逆向進行。有三種企業(yè)級的bean: 會話(session) beans, 實體(entity) beans, 和消息驅(qū)動(message-driven) beans. 會話bean 表示與客戶端程序的臨時交互.當客戶端程序執(zhí)行完后, 會話bean 和相關(guān)數(shù)據(jù)就會消失. 相反, 實體bean 表示數(shù)據(jù)庫的表中一行永久的記錄. 當客戶端程序中止或服務(wù)器封閉時, 就會有潛伏的服務(wù)保證實體bean 的數(shù)據(jù)得以保存.消息驅(qū)動 bean 結(jié)合了會話bean 和 JMS的消息監(jiān)聽器的特性, 答應(yīng)一個業(yè)務(wù)層組件異步接收JMS 消息.
4. 企業(yè)信息系統(tǒng)層
企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件包括企業(yè)基礎(chǔ)建設(shè)系統(tǒng)例如企業(yè)資源計劃(ERP), 大型機事務(wù)處理, 數(shù)據(jù)庫系統(tǒng),和其它的遺留信息系統(tǒng). 例如,J2EE 應(yīng)用組件可能為了數(shù)據(jù)庫連接需要訪問企業(yè)信息系統(tǒng)3, J2EE平臺由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成,它對開發(fā)基于Web的多層應(yīng)用提供了功能支持,下面對J2EE中的 13種技術(shù)規(guī)范進行簡單的描述
5. JDBC(Java Database Connectivity)
JDBC API為訪問不同的數(shù)據(jù)庫提供了一種同一的途徑,象ODBC一樣,JDBC對開發(fā)者屏蔽了一些細節(jié)題目,另外,JDCB對數(shù)據(jù)庫的訪問也具有平臺無關(guān)性。 JNDI(Java Name and Directory Inte***ce)
JNDI API被用于執(zhí)行名字和目錄服務(wù)。它提供了一致的模型來存取和操縱企業(yè)級的資源如DNS和LDAP,本地文件系統(tǒng),或應(yīng)用服務(wù)器中的對象。
6. EJB(Enterprise JavaBean)
J2EE技術(shù)之所以贏得媒體廣泛重視的原因之一就是 EJB。它們提供了一個框架來開發(fā)和實施分布式商務(wù)邏輯,由此很明顯地簡化了具有可伸縮性和高度復雜的企業(yè)級應(yīng)用的開發(fā)。EJB規(guī)范定義了EJB組件在何 時如何與它們的容器進行交互作用。容器負責提供公用的服務(wù),例如目錄服務(wù)、事務(wù)治理、安全性、資源緩沖池以及容錯性。但這里值得留意的是,EJB并不是實 現(xiàn)J2EE的唯一途徑。正是由于J2EE的開放性,使得有的廠商能夠以一種和EJB平行的方式來達到同樣的目的。 RMI(Remote Method Invoke)
正如其名字所表示的那樣,RMI協(xié)議調(diào)用遠程對象上方法。它使用了序列化方式在客戶端和服務(wù)器端傳遞數(shù)據(jù)。 RMI是一種被EJB使用的更底層的協(xié)議。
7. Java IDL/CORBA
在Java IDL的支持下,開發(fā)職員可以將Java和CORBA集成在一起。他們可以創(chuàng)建Java對象并使之可在CORBA ORB中展開, 或者他們還可以創(chuàng)建Java類并作為和其它ORB一起展開的CORBA對象的客戶。后一種方法提供了另外一種途徑,通過它Java可以被用于將你的新的應(yīng) 用和舊的系統(tǒng)相集成。 JSP(Java Server Pages)
JSP頁面由HTML代碼和嵌進其中的Java代碼所組成。服務(wù)器在頁面被客戶端所請求以后對這些Java代碼進行處理,然后將天生的HTML頁面返回給客戶真?zhèn)€瀏覽器。
8. Java Servlet
Servlet是一種小型的Java程序,它擴展了Web服務(wù)器的功能。作為一種服務(wù)器真?zhèn)€應(yīng)用,當被請求時開始執(zhí)行,這和CGI Perl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現(xiàn)的方式不同。JSP通常是大多數(shù)HTML代碼中嵌進少量的Java代碼,而 servlets全部由Java寫成并且天生HTML。
9. XML(Extensible Markup Language)
XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務(wù)過程中共享數(shù)據(jù)。
XML的發(fā)展和Java是相互獨立的,但是,它和Java具有的相同目標正是平立性。通過將Java和XML的組合,您可以得到一個完美的具有平立性的解決方案。
10. JMS(Java Message Service)
MS是用于和面向消息的中間件相互通訊的應(yīng)用程序接口(API)。它既支持點對點的域,有支持發(fā)布/訂閱 (publish/subscribe)類型的域,并且提供對下列類型的支持:經(jīng)認可的消息傳遞,事務(wù)型消息的傳遞,一致性消息和具有持久性的訂閱者支 持。JMS還提供了另一種方式來對您的應(yīng)用與舊的后臺系統(tǒng)相集成。
11. JTA(Java Transaction Architecture)
JTA定義了一種標準的API,應(yīng)用系統(tǒng)由此可以訪問各種事務(wù)監(jiān)控。
12. JTS(Java Transaction Service):
JTS是CORBA OTS事務(wù)監(jiān)控的基本的實現(xiàn)。JTS規(guī)定了事務(wù)治理器的實現(xiàn)方式。該事務(wù)治理器是在高層支持Java Transaction API (JTA)規(guī)范,并且在較底層實現(xiàn)OMG OTS specification的Java映像。JTS事務(wù)治理器為應(yīng)用服務(wù)器、資源治理器、獨立的應(yīng)用以及通訊資源治理器提供了事務(wù)服務(wù)。
13. JavaMail
JavaMail是用于存取郵件服務(wù)器的API,它提供了一套郵件服務(wù)器的抽象類。不僅支持SMTP服務(wù)器,也支持IMAP服務(wù)器。
14. JAF(JavaBeans Activation Framework)
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉(zhuǎn)換成Java對象,或者轉(zhuǎn)換自 Java對象。大多數(shù)應(yīng)用都可以不需要直接使用JAF。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決String字符串轉(zhuǎn)JSONObject順序不對的問題
這篇文章主要介紹了解決String字符串轉(zhuǎn)JSONObject順序不對的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Java中使用Thread類和Runnable接口實現(xiàn)多線程的區(qū)別
這篇文章主要介紹了使用Thread類和Runnable接口實現(xiàn)多線程的區(qū)別,本文給大家介紹了兩種實現(xiàn)方式的步驟,除了以上兩種多線程實現(xiàn)方式,還可以使用 Callable 接口實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-07-07Spring Boot 配置 IDEA和DevTools 熱部署的方法
這篇文章主要介紹了Spring Boot 配置 IDEA和DevTools 熱部署的方法,需要的朋友可以參考下2018-02-02Java多線程Runable售票系統(tǒng)實現(xiàn)過程解析
這篇文章主要介紹了Java多線程Runable售票系統(tǒng)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06