[一個java高級工程師的進階之路]
宏觀方面
一、 JAVA。
要想成為JAVA(高級)工程師肯定要學(xué)習(xí)JAVA。一般的程序員或許只需知道一些JAVA的語法結(jié)構(gòu)就可以應(yīng)付了。但要成為JAVA(高級) 工程師,您要對JAVA做比較深入的研究。您應(yīng)該多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、線程。如果可能,希望您 對JAVA的所有包都瀏覽一下,知道大概的API,這樣您就發(fā)現(xiàn)其實您想實現(xiàn)的很多功能,通過JAVA的API都可以實現(xiàn)了,就不必自己費太多的腦經(jīng) 了。
二、設(shè)計模式。
其實寫代碼是很容易的事情,我相信您也有同感。但如何寫得好就比較難了。這個“好”字包括代碼可重用性,可維護性,可擴展性等。如何寫出好的代碼往往要借助一些設(shè)計模式。當(dāng)然長期的代碼經(jīng)驗積累,只要您用心,會使您形成自己代碼風(fēng)格。相信您的代碼也比較符合代碼的可重用性,可維護性,可擴展性。但既然前人已經(jīng)給我們總結(jié)出了經(jīng)驗,我們何不踩著前人的肩膀前進?
三、XML。
現(xiàn)在的系統(tǒng)中不使用XML幾乎是不可能的。XML的功能非常強大,它可以做數(shù)據(jù)轉(zhuǎn)換、做系統(tǒng)的配置、甚至可保存您的系統(tǒng)業(yè)務(wù)數(shù)據(jù)。因此您必須了解XML,包括它的語法,結(jié)構(gòu)。您還需要比較熟練的使用解析XML的一些API,比如JDOM,SAX等,因為在我們一般的項目中,XML往往擔(dān)當(dāng)系統(tǒng)配置信息的作用,您需要用這些API解析這些配置信息,開發(fā)完美的項目。
四、精通使用一種或兩種框架。
像在《如何成為java初級程序員》中提到的那樣,“框架都會有許多可重用的代碼,良好的層次關(guān)系和業(yè)務(wù)控制邏輯,基于框架的開發(fā)使你可以省出很多的開發(fā)成本”。但我這里希望您能精通,更多的是希望您能通過框架的使用了解框架的思想。這樣您在開發(fā)一個項目時思路會開闊一些,比如您會想到把SQL語句與您的JAVA代碼分開,再比如您會考慮把您的業(yè)務(wù)邏輯配置到XML或者數(shù)據(jù)庫中,這樣整個項目就很容易擴張了。
五、熟悉主流數(shù)據(jù)庫。
其實真正比較大的項目都是有人專門做數(shù)據(jù)庫的,但往往很多項目要求作為(高級)工程師的您也參與數(shù)據(jù)庫的設(shè)計以及SQL的編寫。所以為了更好的為國家做貢獻,建議您還是多了解一些主流數(shù)據(jù)庫,比如SQLSERVER,ORACLE,多連接SQL和存儲過程以及觸發(fā)器。如果您不是“科班”出身,您還需要補充一些數(shù)據(jù)庫原理方面的知識。
六、精通一種或兩種WEBServer。
盡管我再《如何成為java初級程序員》里講過它,我還是要強調(diào)您要精通一種或兩種。因為作為JAVA工程師,特別時想成為高級JAVA工程師的您,您不可避免地要部署您的項目到WebServer上,而且只有當(dāng)您精通一種WebServer,您才可能最大限度地使用它的資源,這往往可以節(jié)省很多時間和精力。
七、UML。
我知道您肯定想成為高級工程師,因此您有必要了解或熟練或精通UML,這取決于您有多大決心想成為高級工程師和項目經(jīng)理。在比較正規(guī)的開發(fā)團隊中,UML是討論項目的交流工具,您要想做一個軟件工程師,您至少要能看懂,您要想做高級工程師,您要能通過它來描述您對項目的理解,盡管這不是必須,但卻很重要。
八、站在高度分析問題:
這不是一個知識點,也不是通過書本就能學(xué)得到的。只所以提到這一點,是因為我比您還著急,我希望您更快的成為一個高級的軟件工程師,而不是一個一般的軟件工程師。希望您在工作中多向您的系統(tǒng)分析員、需求分析員、系統(tǒng)設(shè)計員學(xué)習(xí),多站在他們角度上去看您在開發(fā)的項目。在最好在項目之初先在您的腦海里對項目有個大致的分析、設(shè)計,然后和他們進行比較,找找差別,想想缺點。 九、工具。與在《如何成為java初級程序員》里提到的不同,您在這個階段可能接觸到不同的工具了,盡管您還需要使用JB或者IDEA,但能可能對ROSE,Together要多了解一些,因為您要畫UML了。不要再對Dreamweaver等HTML編輯器情有獨鐘了,那些JSP頁面讓初級程序員去寫吧
微觀方面
1. Core Java部分這是最基礎(chǔ)的,對于一個java高級開發(fā)/設(shè)計人員,你需要對這一部分達到精通的水平,重點內(nèi)容如下:
a. 面向?qū)ο缶幊趟枷?封裝繼承多態(tài)接口)
b. 字符串處理
c. java.lang包,java.util包等常用包
d. java異常處理
2. Java高級部分
a. Java I/O流
b. Java多線程技術(shù)
c. Java網(wǎng)絡(luò)編程
d. Java Swing后兩項可以了解即可,如果項目需要可以深入研究
3.前端基本技能
- HTML + CSS網(wǎng)頁開發(fā)
- JavaScript
- Jquery
- 瀏覽器兼容性 CSS hack(了解)
- 熟練使用JSP + Servlet進行開發(fā)
- MVC設(shè)計模式,原理,以及相關(guān)框架,如Struts
- SSH框架
- 緩存技術(shù) session & cookie
- 熟練使用一種以上Java開發(fā)工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
- 熟練使用XMLJDOM w3c.dom SAX
- Java設(shè)計模式工廠模式,單例模式
- Java反射機制反射的各種用法
- 了解或熟悉 C, C++, .NET
- 熟悉JDK的配置,環(huán)境變量
- 數(shù)據(jù)庫oracle必學(xué),其他最好了解一種以上(mysql,sql server,access==)oracle:視圖,索引,存儲過程,觸發(fā)器,游標(biāo),包,常用函數(shù)
- 數(shù)據(jù)庫原理事務(wù)的原理,鎖機制,表連接,復(fù)雜查詢語句(工作經(jīng)驗),性能調(diào)優(yōu),鎖表以及解決方案
- JDBC,連接池
- Ajax,反向Ajax
- HTTP協(xié)議,request 和 response的原理,HTTP status(了解常用的),Https原理
- 熟悉Linux基本命令,使用過Linux/Unix系統(tǒng),可以編寫shell腳本,可以在Linux上部署項目
- 了解windows系統(tǒng)批處理腳本bat
- 了解HTML5,最好學(xué)習(xí)過
- 熟悉一種JS框架,如Prototype
- J2EE原理 熟悉一種以上web容器如Tomcat,JBoss,websphere,weblogic
- 熟悉ant或maven
- 熟悉一門腳本語言,如python ,ruby
- 了解php/ asp
- 了解ftp協(xié)議及原理
- 熟練使用Junit測試,熟悉Mockito等測試工具
- 熟悉javac,javadoc,native,native2ascii等常用命令
- 熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究過一些的算法。
- 了解Flex(不學(xué)也沒關(guān)系)
- 了解敏捷開發(fā)模式
- 工作流workflow至少用過一種,如OSworkflow,了解原理
- 使用過VPN了解其原理
- 熟悉jstl表達式和el表達式
- 熟悉webservice,WSDL,SOAP
- 圖片處理,如圖片上傳,預(yù)覽,限制大小等
- 版本控制工具,CVS VSS SVN
- JSON技術(shù),JSON+AJAX
- 分頁技術(shù),最好自己實現(xiàn)過不僅僅是用過要知道原理
- Java Mail
- Java讀寫txt,excel,JXL技術(shù)
- JVM原理,JVM內(nèi)存管理,GC,Java堆棧池
- 熟練使用下面的工具:office辦公軟件,word,excel,ppt等plsql,sqldevelop 數(shù)據(jù)庫開發(fā)工具outlook大公司都用ue編輯器瀏覽器控制臺,調(diào)試SHH/PUTTY 遠程
- UML建模工具Rational Rose等
- 使用log4j
- 使用過開放Api如百度,騰訊街景,新浪微博等
- 頁面靜態(tài)化技術(shù)(偽靜態(tài)頁面)
- 報表技術(shù),使用過報表制作工具,如水晶易表。
- 定時任務(wù),如Spring batch ,學(xué)會自定義batch任務(wù)(不適用第三方工具)
- 了解uuid
- b/s 和 c/s架構(gòu)
- 正則表達式
- 了解jndi jms
- ERP
- UNICODE編碼,亂碼解決
- 開源網(wǎng)絡(luò)編輯器,如ckEditor
- 二進制原理
- 使用過,了解過開源論壇框架,如discuzz
- GWT,Closure框架
- 了解大數(shù)據(jù),云計算
- 搜索引擎搜索技術(shù)
- 軟件工程,項目管理