<b>宏觀上:</b>
1.技術廣度方面
至少要精通多門開源技術吧,研究過struts\spring等的源碼。
2.項目經驗方面
從頭到尾跟過幾個大項目,頭是指需求階段,包括需求調研。
尾是指上線傳遞之後,包括維護階段。
3.架構經驗方面
有過分布式系統的架構和開發經驗。對于跨系統的結構優化,資料存儲的性能名額等有豐富經驗。什麼緩存啊、資料庫的垂直切分什麼的,業務的抽象和水準拆分啊,這些應該都輕車熟路吧。
4.行業領域方面
最起碼得精通一到兩門業務吧,所謂精通,就是比如做金融證券業務的,至少等當半個經融分析師。做電力業務的,至少等當半個電力工程師。
5.個人修為
有自己一些獨到的見解,不會人雲亦雲啦。如果你想學習java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裡面有大量的學習資料可以下載下傳,也可以交流不懂的問題可以提問。
<b>微觀上:</b>
1.你需要精通面向對象分析與設計(ooa/ood)、涉及模式(gof,j2eedp)以及綜合模式。你應該十分了解uml,尤其是class,object,interaction以及statediagrams。
2.你需要學習java語言的基礎知識以及它的核心類庫(collections,serialization,streams,networking, multithreading,reflection,event,handling,nio,localization,以及其他)。
3.你應該了解jvm,classloaders,classreflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類檔案并且明白一些基本的彙編指令。
4.如果你将要寫用戶端程式,你需要學習web的小應用程式(applet),必需掌握gui設計的思想和方法,以及桌面程式的swing,awt, swt。你還應該對ui部件的javabean元件模式有所了解。javabeans也被應用在jsp中以把業務邏輯從表現層中分離出來。
5.你需要學習java資料庫技術,如jdbcapi并且會使用至少一種persistence/orm構架,例如hibernate,jdo, cocobase,toplink,insideliberator(國産jdo紅工廠軟體)或者ibatis。
6.你還應該了解對象關系的阻抗失配的含義,以及它是如何影響業務對象的與關系型資料庫的互動,和它的運作結果,還需要掌握不同的資料庫産品運用,比如:oracle,mysql,mssqlserver。
7.你需要學習java的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,codesigning, digitalsignatures,cryptography,certification,kerberos,以及其他)還有不同的安全/認證 api,例如jaas(javaauthenticationandauthorizationservice),jce (javacryptographyextension),jsse(javasecuresocketextension),以及jgss (javageneralsecurityservice)。
8.你需要學習servlets,jsp,以及jstl(standardtaglibraries)和可以選擇的第三方taglibraries。
9.你需要熟悉主流的網頁架構,例如jsf,struts,tapestry,cocoon,webwork,以及他們下面的涉及模式,如mvc/model2。
10.你需要學習如何使用及管理web伺服器,例如tomcat,resin,jrun,并且知道如何在其基礎上擴充和維護web程式。
11.你需要學習分布式對象以及遠端api,例如rmi和rmi/iiop。
12.你需要掌握各種流行中間件技術标準和與java結合實作,比如tuxedo、croba,當然也包括javaee本身。
13.你需要學習最少一種的xmlapi,例如jaxp(javaapiforxmlprocessing),jdom(javaforxmldocumentobjectmodel),dom4j,或jaxr(javaapiforxmlregistries)。
14.你應該學習如何利用javaapi和工具來建構webservice。例如jax-rpc(javaapiforxml/rpc),saaj (soapwithattachmentsapiforjava),jaxb(javaarchitectureforxmlbinding),jaxm(javaapiforxmlmessaging), jaxr(javaapiforxmlregistries),或者jwsdp(javawebservicesdeveloperpack)。
15.你需要學習一門輕量級應用程式架構,例如spring,picocontainer,avalon,以及它們的ioc/di風格(setter,constructor,interfaceinjection)。
16.你需要熟悉不同的j2ee技術,例如jndi(javanaminganddirectoryinterface),jms (javamessageservice),jta/jts(javatransactionapi/javatransactionservice),jmx (javamanagementextensions),以及javamail。
17.你需要學習企業級javabeans(ejb)以及它們的不同元件模式:stateless/statefulsessionbeans,entitybeans(包含bean- managedpersistence[bmp]或者container-managedpersistence[cmp]和它的ejb-ql),或者 message-drivenbeans(mdb)。
18.你需要學習如何管理與配置一個j2ee應用程式伺服器,如weblogic,jboss等,并且利用它的附加服務,例如簇類,連接配接池以及分布式處理支援。你還需要了解如何在它上面封裝和配置應用程式并且能夠監控、調整它的性能。
19.你需要熟悉面向方面的程式設計以及面向屬性的程式設計(這兩個都被很容易混淆的縮寫為aop),以及他們的主流java規格和執行。例如aspectj和aspectwerkz。
20.你需要熟悉對不同有用的api和frame work等來為你服務。例如log4j(logging/tracing),quartz (scheduling),jgroups(networkgroupcommunication),jcache(distributedcaching), lucene(full-textsearch),jakartacommons等等。
21.如果你将要對接或者正和舊的系統或者本地平台,你需要學習jni (javanativeinterface) and jca (javaconnectorarchitecture)。
22.你需要熟悉jini技術以及與它相關的分布式系統,比如掌握croba。
23.你需要javacommunityprocess(jcp)以及他的不同javaspecificationrequests(jsrs),例如portlets(168),jolap(69),dataminingapi(73),等等。
24.你應該熟練掌握一種javaide例如sunone,netbeans,intellijidea或者eclipse。(有些人更喜歡vi或emacs來編寫檔案。随便你用什麼了:)
25.java(精确的說是有些配置)是冗長的,它需要很多的人工代碼(例如ejb),是以你需要熟悉代碼生成工具,例如xdoclet。
26.你需要熟悉一種單元測試體系(jnunit),并且學習不同的生成、部署工具(ant,maven)。
27.你需要熟悉一些在java開發中經常用到的軟體工程過程。例如rup(rationalunifiedprocess)andagilemethodologies。
28.你需要能夠深入了解加熟練操作和配置不同的作業系統,比如gnu/linux,sunsolaris,macos等,做為跨平台軟體的開發者。
29.你還需要緊跟java發展的步伐,比如現在可以深入的學習javame,以及各種java新規範,技術的運用,如新起的web富用戶端技術。
30.你必需要對opensource有所了解,因為至少java的很多技術直接是靠開源來驅動發展的,如java3d技術。