Java軟件工程師

Java軟件工程師

互聯網行業工作
Java的應用可以說是無處不在,從桌面辦公應用到網絡數據庫等應用,從PC到嵌入式移動平台,從Java小應用程序(Applet)到架構龐大的J2EE企業級解決方案,處處都有Java的身影,就連美國大型太空項目當中,也使用了Java來開發控制系統和相關軟件。用途如此之廣的Java造就了Java工程師的輝煌,使其在軟件工程師的領域裡獨占鳌頭!Java軟件工程師運用Java這種編程語言去完成軟件産品的軟件程序設計、開發、測試、維護升級等工作。
    中文名:Java 外文名:Software Engineer for Java 适用領域:互聯網 所屬學科: 主要職責:完成軟件的設計、開發、測試等

工作内容

完成軟件的設計、開發、測試、修改bug等工作,包括業務需求的溝通,功能模塊詳細設計,業務功能實現與單元測試,系統維護

參與産品構思和架構設計;

撰寫相關的技術文檔;

支持售前技術服務;

支持項目對産品的應用服務。

薪資行情

根據IDC的統計數字,在所有軟件開發類人才的需求中,對Java工程師的需求達到全部需求量的60%~70%。同時,Java工程師的薪水相對較高。Java軟件工程師一般月薪範圍在4000-10000元,遠遠超過了應屆畢業生月薪2500元的平均水平。通常來說,有一年工作經驗的Java高級軟件工程師的薪酬大緻在年薪10—13萬左右。

職業要求

教育培訓

計算機相關專業,大專及以上學曆。相關專業證書有:Sun Certified Java Programmer(SCJP)和Sun Certified Java Developer(SCJD)認證。

工作經驗

有一定的軟件分析設計能力;熟悉Java、Servlet、JSP、EJB等開發技術;熟練使用Eclipse或jbuilder等java開發工具;熟悉JAVA+STRUTS體系結構和開發工具;熟悉至少一種數據庫的開發和設計;具有良好的學習能力,具有強烈的工作責任心、有良好的溝通能力和團隊合作精神。

基礎技能

初級部分

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解析器程序設計;

軟件企業規範和軟件工程,包括UML系統建模型和設計(Rational Rose 200x)軟件工程和業界開發規範;CVS版本控制、Java Code書寫規範;

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語義模型的标志性的語言,也很難想象能在當前業務架構發揮太大影響。但如果真如它所聲稱那樣,廣泛地改變着信息的結構。那麼對軟件架構也會有深遠影響。

相關詞條

相關搜索

其它詞條