Java軟體工程師
Java軟體工程師
Java的應用可以說是無處不在,從桌面辦公應用到網路資料庫等應用,從PC到嵌入式移動平台,從Java小應用程序(Applet)到架構龐大的J2EE企業級解決方案,處處都有Java的身影,就連美國大型太空項目當中,也使用了Java來開發控制系統和相關軟體。用途如此之廣的Java造就了Java工程師的輝煌,使其在軟體工程師的領域裡獨佔鰲頭!Java軟體工程師運用Java這種編程語言去完成軟體產品的軟體程序設計、開發、測試、維護升級等工作。
完成軟體的設計、開發、測試、修改bug等工作,包括業務需求的溝通,功能模塊詳細設計,業務功能實現與單元測試,系統維護;
參與產品構思和架構設計;
撰寫相關的技術文檔;
支持售前技術服務;
支持項目對產品的應用服務。
根據IDC的統計數字,在所有軟體開發類人才的需求中,對Java工程師的需求達到全部需求量的60%~70%。同時,Java工程師的薪水相對較高。Java軟體工程師一般月薪範圍在6000-10000元,遠遠超過了應屆畢業生月薪3000元的平均水平。通常來說,有2年工作經驗的Java高級軟體工程師的薪酬大致在年薪10—15萬左右。
教育培訓
計算機相關專業,大專及以上學歷。相關專業證書有:Sun Certified Java Programmer(SCJP)和Sun Certified Java Developer(SCJD) 認證。目前國內在java軟體工程師培訓中有名的是軟帝科技,NIIT,達內科技等,這些都是擁有很多年的辦學經驗,在java軟體培訓上擁有其獨特的優勢。
工作經驗
有一定的軟體分析設計能力;熟悉Java、Servlet、JSP、EJB等開發技術;熟練使用Eclipse、MyEclipse、NetBeans、jbuilder等java開發工具;熟悉三大框架體系結構和開發工具;熟悉至少一種資料庫的開發和設計;具有良好的學習能力,具有強烈的工作責任心、有良好的溝通能力和團隊合作精神。
雖然Java人才的薪水很高,但是對該類人才需求旺盛的IT企業卻很難招聘到合格的Java軟體工程師。其中,最根本的原因就是許多計算機專業的畢業生在讀期間沒有掌握實用的技能與經驗,距離企業的實際用人要求有較大的差距。因此,計算機專業的大學生欲成為Java軟體工程師,最便捷的一條路就是參加以實戰項目為主要教學方法的Java職業技能培訓,從而有效地縮短同企業具體用人要求之間的差距。
Java軟體工程師的未來發展方向大致分為兩類:
一是成為管理人員,例如產品研發經理,技術經理,項目經理等;
二是繼續他的技術工作之路,成為高級軟體工程師、需求工程師等。
Java語言是一個面向對象的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C++ 語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。
Java語言是分散式的。Java語言支持Internet應用的開發,在基本的Java應用編程介面中有一個網路應用編程介面(java net),它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分散式應用的重要手段。
Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
Java語言是安全的。Java通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組代碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。
Java語言是體系結構中立的。Java程序(後綴為java的文件)在Java平台上被編譯為體系結構中立的位元組碼格式(後綴為class的文件),然後可以在實現這個Java平台的任何系統中運行。這種途徑適合於異構的網路環境和軟體的分發。
Java語言是可移植的。這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。
Java語言是編譯解釋型的。如前所述,Java程序在Java平台上被編譯為位元組碼格式,然後可以在實現這個Java平台的任何系統中運行。在運行時,Java平台中的Java解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。
Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,隨著JIT(Just-In-Time)編譯器技術的發展,Java的運行速度可以和優化過的本地代碼相媲美。
Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable) 的構造子將一個實現了Runnable介面的對象包裝成一個線程,其二,從Thread類派生齣子類並重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字為synchronized)。
Java語言是動態的。Java語言的設計目標之一是適應於動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。 Java語言的優良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java對對象技術的全面支持和Java平台內嵌的API能縮短應用系統的開發時間並降低成本。Java的編譯一次,到處可運行的特性使得它能夠提供一個隨處可用的開放結構和在多平台之間傳遞信息的低成本方式。特別是Java企業應用編程介面(Java Enterprise APIs)為企業計算及電子商務應用系統提供了有關技術和豐富的類庫。
和C/C++的差異 熟悉C語言和C++語言的讀者一定想搞清楚這個問題,實際上,Java確實是從C語言和C++語言繼承了許多成份,甚至可以將Java看成是 類C語言發展和衍生的產物。比如Java語言的變數聲明,操作符形式,參數傳遞,流程式控制制等方面和C語言,C++語言完全相同。儘管如此,Java和C語言,C++語言又有許多差別,主要表現在如下幾個方面:
(1) Java中對內存的分配是動態的,它採用面向對象的機制,採用 運算符new為每個對象分配內存空間,而且,實際內存還會隨程序運行情況而改變。程序運行中 Java系統自動對內存進行掃描,對長期不用的空間作為”垃圾”進行收集,使得 系統資源得到更充分地利用。按照這種機制,程序員不必關注內存管理問題,這使Java程序的編寫變得簡單明了,並且避免了由於內存管理方面的差錯而導致系統出問題。而C語言通過malloc()和free()這兩個庫函數來分別實現分配內存和釋放內存空間的,C++語言中則通過運算符new和delete來分配和釋放內存。在C和C++這種機制中,程序員必須非常仔細地處理內存的使用問題。一方面,如果對己釋放的內存再作釋放或者對未曾分配的內存作釋放,都會造成死機;而另一方面,如果對長期不用的或不再使用的內存不釋放,則會浪費系統資源,甚至因此造成資源枯竭。
(2) Java不在所有類之外定義全局變數,而是在某個類中定義一種公用靜態的變數來完成全局變數的功能。 (3) Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯的功能。 (4) Java不支持頭文件,而C和C++語言中都用頭文件來定義類的原型,全局變數,庫函數等,這種採用頭文件的結構使得系統的運行維護相當繁雜。
(5) Java不支持宏定義,而是使用關鍵字final來定義常量,在C++中則採用宏定義來實現常量定義,這不利於程序的可讀性。
(6) Java對每種數據類型都分配固定長度。比如,在Java中,int類型總是32位的,而在C和C++中,對於不同的平台,同一個數據類型分配不同的位元組數,同樣是int類型,在PC機中為二位元組即16位,而在VAX-11中,則為32位。這使得C語言造成不可移植性,而Java則具有跨平台性(平台無關性)。
(7) 類型轉換不同。在C和C++中,可通過指針進行任意的類型轉換,常常帶來不安全性,而在Java中,運行時系統對對象的處理要進行類型相容性檢查,以防止不安全的轉換。
(8) 結構和聯合的處理。在C和C++中,結構和聯合的所有成員均為公有,這就帶來了安全性問題,而在Java中根本就不包含結構和聯合,所有的內容都封裝在類裡面。
(9) Java不再使用指針。指針是C和C++中最靈活,也最容易產生錯誤的數據類型。由指針所進行的內存地址操作常會造成不可預知的錯誤,同時通過指針對某個內存地址進行顯式類型轉換后,可以訪問一個C++中的私有成員,從而破壞安全性。而Java對指針進行完全地控制,程序員不能直接進行任何指針操作。
(10)避免平台依賴。Java語言編寫的類庫可以在其它平台的Java應用程序中使用,而不像C++語言必須依賴於Windows平台。
(11)在B/S開發方面,Java要遠遠優於C++。
自從sun被甲骨文收購以後,Java的發展前景就變得撲朔迷離起來,很多程序開發者都感到很迷惑。2010年4月9日,被稱為Java之父的JamesGosling又在個人博客上宣布離開Oracle,這一事件更為Java的前景增加了一層迷霧。但是在進入5月份之後,一切開始變得明朗起來。首先是Oracle在Java的後續支持方面,宣布了一系列關於Java的相關計劃。然後是Java之父JamesGosling繼聲明Java不會死去之後又盛讚Oracle對Java所做的貢獻。在Oracle的活動發布網站上,連續發布了多個關於Java的推廣活動。
版本簡介
2010年5月12日,Oracle主要產品負責人DaveHofert將大談對JavaSE商業應用的改進和革新。根據宣傳資料,在這次演講中,DaveHofert將提到以下問題:
商業版與社區版本之間平台支持的差異。
如何獲得專家幫助,以幫助企業增強其Java應用。
對於舊版本的安全修補問題。
可使用的發布工具和更新。
2010年6月18、19、20、27日,將分別在赫爾辛基、斯圖加特、布達佩斯、倫敦舉行Oracle、Sun專家與用戶見面會,在見面會上與用戶一起探討Java的發展路線。主要討論的問題包括Oracle將如何繼續投資和改進Java技術,並且還會向用戶通報JavaSE、JavaME專家團隊的最新消息、JavaFX和JDK7最新的消息,以及OracleBerkeley DB的相關信息。
2010年5月3日,已經離開Oracle近一個月的Java之父JamesGosling在他的博客上表達了對NetBeans 6.9 和 FX1.3發布的關心。這兩個項目最新版本的發布,可以證明Oracle已經開始兌現當初的承諾。JamesGosling在其早期的博客中,也透露了不會放棄Java事業,只是需要解決一些與Oracle之間的法律問題。
這一切跡象表明,Oracle絕對不會輕易放棄Java這塊巨大的蛋糕,並且Oracle也開始逐漸學會了對開源社區的尊重。首先在JDK的商業版本方面,Oracle將會繼續深入挖掘Java的商業利益,與其固有產品進行更深入的整合。在社區版本方面,Oracle將與Java開發者一起探討和研發Java的技術。這裡需要特別提到的一個產品是OracleBerkeleyDB,該產品是Oracle一直支持的一個開源非關係資料庫產品,在NOSQL大行其道的今天,如果Oracle能夠將BerkeleyDB與Java進行深入整合,將會為Java帶來更多的活力和生命。從JamesGosling的表現來看,他似乎與Oracle之間已經達成某種諒解,並且有進一步合作的可能性。
java發展
Java在日新月異的IT技術領域內不算年輕,在過去的十幾年中,Java曾憑藉開放和跨平台等特性、藉助網際網路蓬勃發展的東風,改變了C/C++稱霸天下的局面,形成Java、C、C++三足鼎立的格局。特別是Java在編程語言排名榜上獨佔鰲頭長達10年之久,並幫助Sun奠定了其在IT技術和開源領域的地位,都說明Java在開發領域中的重要性。
在未來發展方向上,Java在Web、移動設備以及雲計算方面前景非常廣闊。雖然面對來自網路的類似於Ruby on Rails這樣編程平台的挑戰,Java依然還是事實上的企業Web開發標準。在Java對新開發者吸引力方面,這麼多年以來,Java一直都在面對那些不成熟的,基於腳本的程序語言的挑戰。比如PHP和Ruby,雖然經過多年努力,但是並沒有看到他們相具有比Java更強的競爭力。另一方面,隨著雲計算以及移動領域的擴張,更多的企業在考慮將其應用部署在Java平台上,無論是本地主機,公共雲,Java都是目前最合適的選擇。
事實上Java技術的開放性、安全性和龐大的社會已有資源,以及其跨平台性,即“編寫一次,到處運行”的特點,也使Java技術成為智能手機軟體平台的事實標準。採用Java技術后,編寫應用程序和提供服務的人就不必關心接受其服務的手機採用的是什麼操作系統和晶元,只要按照Java的要求去寫程序就好了;同樣,生產手機的廠商也不必顧慮將來誰來提供增值服務。同時在Oracle的技術投資擔保下,Java也將是企業在雲應用方面迴避微軟平台、在移動應用方面迴避蘋果公司的一個最佳選擇。比如VMware就宣布了一個稱為VMforce的服務,該服務將在雲計算機中布置Java應用,Google應用引擎也將一如既往的支持Java。他們都是微軟提供的,基於.Net和開源PHP語言基礎上的Azure雲平台的競爭對手。此外,進軍傳統的桌面應用仍是Java未來一個努力的方向之一。
JAVA作為主流的商業應用的語言在3G、物聯網時代下煥發出新的生機!
在網際網路時代,JAVA語言已經是使用最廣泛的伺服器端語言。隨著3G、網際網路時代的到來,JAVA語言並不會“過時”,相反,JAVA語言會在新的業務領域有著更輝煌的發展前景。
3G、網際網路的發展不僅僅帶動了“智能手機製造業”、“電信運營業”、“RFID產業”、“嵌入式設備”等硬體或系統軟體行業的發展;更重要的是:3G、網際網路開創了更多、更新的商業領域應用,而這些領域的核心編程語言仍然是JAVA!
在TTS4.0 課程體系中的基於智能手機平台的“航空公司移動服務門戶”項目和基於全球定位、實時訂單跟蹤、RFID倉儲管理等諸多網際網路新技術的“新一代物流管理系統”都是這些新商業應用領域的典型代表。
未來趨勢
對Java來說,2010年是不平凡的一年,從Oracle在年初完成對Sun的收購,使大家對Java的未來充滿了關注,而12月份在北京進行的JavaOne大會,可以說是Oracle在收購Sun之後的第一次正式大會,大家可以從 JavaOne上更多了解了Java未來的發展。而2011年,將成為Java新的開始。
Java走過了它15年的歷程,在日新月異的IT技術領域不算年輕,但它一直沒有停下變革、創新的腳步。Java已經不單單是一種計算機語言,很多情況下,我們稱它是一個平台,一個社區。下面從Java SE、Java EE、Java ME、JavaFX幾個方面,展望Java技術在2011年的發展。
Java SE
從Oracle公布的Java未來戰略我們可以看到,Oracle目標是加強和繼續擴大Java在新領域的應用,並將Java平台納入新的部署架構,加大對 Java社區的投資,允許社區更多地參與。開發人員比較關注的Java SE 7將會在2011年夏天就緒,其中JCP已經批准了JSR 334、JSR 335、JSR 336和JSR 337等,支持改進Java語言和API規範,比如switch in string、multi-catch、泛型實例創建中的precise rethrow、Lambda表達式(閉包)等。而Java SE 8也將在SE 7發布之後的一年到一年半的時間就緒。
模塊化的VM:可以將VM拆分成小塊由應用程序使用,並按需推向Internet,這樣的結果是Java應用程序的啟動時間更短了,當VM不在目標機器上時,下載的時間也更短了。
額外的語言支持:Java平台支持用不同語言編寫的應用程序,未來將會添加更多的語言支持,當然也包括對動態語言的支持,這就是所謂的達芬奇機或多語言虛擬機,請參考JSR-292。
增強的多核支持:需要藉助工具、庫和內置設施幫助新的和現有的Java應用程序更有效地利用多核硬體的優勢,Java的線程模型可以輕鬆地創建并行執行任務的線程,但你如何將一個單一的任務拆分成多片進行并行執行呢?
其它改進包括持續的性能改進,以及許多語言方面的增強,包括增加的閉包,在switch語句中對Strings的支持,以及多塊異常捕獲,閉包是一個有爭議的功能,它是通過使用匿名的Java內部類實現的。
Java EE
Oracle長期以來一直都是Java的支持者,也是最大的JCP成員之一,10多年前就開始參與Java EE規範的編製,因此對Oracle成為Java中間件市場的大鱷不應該感到意外。
Java EE展望
模塊化,開發標準:Java EE 6通過配置文件(Profile)定義實現了模塊化Java EE,允許廠商根據特定需求創建更小的Java EE堆棧子集,解決成本和Java EE使用複雜問題。通過模塊化設計和定義標準,有助於簡化Java EE,讓它的應用領域更廣泛。
Java EE 6規定了兩種配置文件:Web配置文件(Servlet,JSP和JSF)和Java EE企業配置文件。顯然還可以定義更多的配置文件種類,例如,為支持會話初始化協議(SIP)定義電信伺服器配置文件。
UI和RIA:HTML仍然是Java EE應用程序隱含的UI協議,通常有Java Servlet,JSP和JSF生成,考慮到生產的Web頁面是靜態的,可以使用Ajax技術,不過它已經超出了Java EE的範疇。
雖然Oracle沒有明確這方面的具體計劃,但未來Java EE和JavaFX集成時將會解決Ajax問題。
Java ME
作為 Oracle 首選的移動環境的 Java,這個堆棧未來默認的呈現方式將會是 HTML, CSS 和 Javascript。Java ME 將包含 WebKit 引擎,JavaScript. 引擎,和 Java/JavaScript. 橋,換言之,未來運行新版 Java ME 的手機,將能夠訪問瀏覽器以外的 Web 服務,而不會有任何性能問題。這些引擎將直接插入 Java ME虛擬機和插入 Java FX。
Oracle 的 Java ME 引擎,將利用當代圖形硬體加速器所擅長的(60 frames/秒)二維和三維渲染(在 Windows 環境下,微軟的 Direct X,還有 OpenGL 或未來“更好”的技術)。 Java ME 將會針對 ARM7 和 ARM9晶元組進行優化,包括 Broadcom,三星,NEC,德州儀器,以及其他取得授權的手機部件製造商,還將內置充分利用手機裝置的支付,通話,和定位等功能的 API。
JavaFX
隨著 JavaFX 和 Java 的整合,並運行於 JVM 之上,它的富媒體處理及二維和三維渲染功能,也將能提供給任何在 JVM 上運行的其他編程語言,這意味著,例如 Groovy, Scala 和 JRuby 等也都能用來整合 JavaFX 的能力。
JavaFX展望:
基於可視化組件創建一個設計範式
為JavaFX應用程序創建一個豐富的UI擴展庫
提升所有平台的JavaFX性能
增強跨設備移植JavaFX應用程序的能力
與Java,JavaScript和HTML 5無縫集成
支持新興設備和UI範式(如多點觸摸)
Java OO程序設計基礎,包括 J2sdk基礎、Java面向對象基礎、Java API使用、數據結構及演演算法基礎、Java AWT圖形界面程序開發;
J2SE平台Java程序設計,包括Swing圖形程序設計, Socket網路應用程序設計,對象序列化,Java 常用數據結構,Applet,流和文件,多線程程序設計;
Java桌面系統項目開發,4~5人組成一個項目組,項目大小為(15人*工作日);
Linux的基本操作,Linux下的Java程序開發,Linux系統的簡單管理;
Oracle資料庫,包括SQL/PLSQL;資料庫和資料庫設計;簡單掌握ORACLE9i 資料庫的管理;
Java Web應用編程,包括 Java Oracle 編程,即JDBC;Java Web編程,包括JSP、Servlet,JavaBean;Java應用編程,包括Weblogic、Websphere、Tomcat;以及利用Jbuilder開發Java程序;
MVC與Struts,學習業界通用的MVC設計模式和Struts架構;
Java B/S商務項目開發,4~5人一個項目組,項目大小為(25人*工作日左右)
J2ME程序設計,包括J2EE程序、J2ME;Java高級程序設計(J2EE),包括J2EE體系結構和J2EE技術、EJB;Weblogic使用、 JBuilder開發;
Java和XML,包括Java Web Service,Java XML, 業界主流XML解析器程序設計;
J2EE商務應用系統項目開發,4~5人一個項目組,項目大小為(25人*工作日左右)
軟體架構作為一個概念,體現在技術和業務兩個方面。
從技術角度來說:軟體架構隨著技術的革新不斷地更新其內容,軟體架構建立於當前技術和一些基本原則的基礎之上。
分層原則
分層是為了降低軟體深度複雜性而使用的關鍵思想,就像社會有了階級一樣,軟體有了層次結構。
模塊化原則
模塊化是化解軟體廣度複雜的必然手段,模塊化的目的就是讓軟體分工。
介面實現分離原則隨著軟體模塊化的不斷深入改進,面向介面編程而不是面向實現編程可以讓複雜度日趨增高的軟體降低模塊之間的耦合度,從而讓各模塊更輕鬆改進。從這個原則出發,軟體也從微觀進行了細緻的規範化。
還有兩個比較小但很重要的原則:
細節隱藏原則
很顯然把複雜問題簡化,把難看的細節隱去,能讓軟體結構更清晰。其實這個原則使用很普遍,java/c++語言中的封裝原則以及設計模式中的Facade(外觀)模式就很能體現這個原則的精神。
隨著軟體結構的進一步發展,層與層之間、模塊與模塊之間的依賴逐漸加深,而層、模塊的動態可插拔要求不端增大。依賴倒置原則可看視為介面實現分離原則的深化,根據此原則的精神,軟體進入了工具時代。這個原則有點類似於知名的好萊塢法則:Don't call us, we'll call you。
以上這些原則奠定了我們的軟體架構的價值指標。但軟體架構畢竟是建立在當前技術之上的。而每一代技術都有架構模式。過去的不再說了,讓我們就來看一下當前流行的技術,以及我們能採用的架構。
因為面向對象是當前最流行開發技術,且設計模式的大量使用使面向對象的走向成熟,而資料庫是當前最有效的存儲結構、web界面是當前最流行的用戶介面,所以當前最典型的三層次架構就架構在以上幾項技術的基礎之上,用資料庫作存儲層、用面向對象來實現業務層、用web來作為用戶介面層。我們從三層次架構談起:
因為面向對象技術和資料庫技術不適配,所以在標準三層次架構的基礎上,我們增加了數據持久層,來管理O-R雙向映射,但目前一直沒有最理想的實現技術。cmp和entity bean技術因為其實現複雜,功能前景有限,已接近被淘汰的邊緣。JDO及hibernate作為o-r映射的後期之秀,尤其是hibernate,功能相當完備。推薦作為持久層的首選
在業務層,因為當前業務日趨負載,且變動頻繁,所以我們必須有足夠敏捷的技術來保證我們的適應變化的能力,在標準j2ee系統中session bean負責業務處理,且有不錯的性能表現,但採用ejb系統對業務架構模式改變太大,且其複雜而昂貴,業務代碼移植性差。而spring 作為一個bean配置的輕量級架構,漂亮的IOC模式實現,對業務架構影響小,所以推薦作為中間層業務框架。
在用戶結構層,雖然servlet/jsp/jstl/javaBean 能夠實現MVC架構,但終究過於粗糙。struts對MVC架構的實現就比較完美,Taperstry也極好地實現MVC架構,且採用基於事件的方式,非常誘人,惜其不夠成熟,我們仍舊推薦struts作為用戶介面層基礎架構。
因為業務層是三層次架構中最有決定意義的,所以讓我們回到業務層細緻地分析一下,在複雜的業務我們常常需要以下基礎服務的一種或幾種:事務一致 性服務acid(tool:jta/jts)、併發加鎖服務concurrent&&lock、池化管理服務cache、訪問控制服務(tool:jaas)、流程式控制制服務workflow、動態實現服務IOC,串列化消息服務(tool:jms)、負載平衡服務blance等。如果我們不採用重量級應用伺服器(如weblogic,websphere,jboss等)及重量級組件(EJB),我們必須自己實現其中一些服務。雖然我們大 多情況下,不需要所有這些服務,但實現起來卻非易事。幸運的是我們有大量的開源實現代碼,但採用開源代碼卻常常是件不輕鬆的事。
隨著xml作為結構化信息傳輸和存儲地位日漸重要,一些xml文檔操作工具(DOM,Digester,SAX等)的使用愈發重要,而隨著 xml schema的java binding工具(jaxb,xmlbean等)工具的成熟,採用xml schema來設計xml文檔格式,然後採用java binding來生成java bean 會成為主要編程模式,而這又進一步使數據中心向xml轉移,使在中小數據量上,愈發傾向於以xquery為查詢語言的xml資料庫。最。近還有一個趨勢, microsoft,ibm等紛紛大量開發中間軟體如(microsoft office之infopath),可以直接從xml schema 生成錄入頁面等非常實用的功能。還有web service 的廣泛應用,都將對軟體的架構有非常重大的影響。至於面向服務架構(SOA)前景如何,三層次架構什麼時候走入歷史,還很難定論。
aop的發展也會對軟體架構有很深的影響,但在面向對象架構里,無論aspectJ還是jboss-aop抑是aspectWerks、 nanning都有其自身的嚴重問題:維護性很差,所以說它將很難走遠。也許作為一個很好的思想,它將在web service里大展身手。
rdf,owl作為w3c語義模型的標誌性的語言,也很難想象能在當前業務架構發揮太大影響。但如果真如它所聲稱那樣,廣泛地改變著信息的結構。那麼對軟體架構也會有深遠影響。
目前培訓機構遍地都是,IT人才一批又一批被培養出來,工作需求較小