技術(shù)不同,簡單的可以理解為:初級中級的只關(guān)注代碼,編程。高級的就要考慮系統(tǒng)的架構(gòu),整體框架。
具體區(qū)別如下:
一、初級工程師
1、首先要學(xué)習(xí)java的基礎(chǔ)知識。不要被新技術(shù)迷惑,所謂萬變不離其宗,新技術(shù)都是基于java的基礎(chǔ)之上,如果基礎(chǔ)不扎實(shí),對于這些新技術(shù)的理解也是一知半解,學(xué)不到根源。
2、做一個(gè)java項(xiàng)目在學(xué)習(xí)完java的基礎(chǔ)知識之后,做一個(gè)java項(xiàng)目來鞏固一下,在項(xiàng)目中會發(fā)現(xiàn)很多問題,通過解決問題,加深基礎(chǔ)知識的掌握。
3、學(xué)習(xí)數(shù)據(jù)庫的基礎(chǔ)知識和開發(fā)應(yīng)用軟件開發(fā)離不了數(shù)據(jù)庫,掌握幾種流行的數(shù)據(jù)庫:Oracle、SQL、server、MySQL等。
4、JEE基礎(chǔ)在這里首先要學(xué)習(xí)網(wǎng)站基礎(chǔ),包括HTML、DHTML、JavaScript;接著要學(xué)習(xí)XML,XML JAXP;然后學(xué)習(xí)JEE基礎(chǔ),包括JEE開發(fā)環(huán)境,RMI/IIOP、JNDI;最后學(xué)習(xí)JDBC數(shù)據(jù)庫的應(yīng)用開發(fā)。
5、web開發(fā)全面的JEE的web開發(fā)知識:Servlet JSP javaBean TagLib,到這里做一個(gè)完整的web應(yīng)用項(xiàng)目開發(fā)。
6、EJB開發(fā)包含全面的EJB知識:1)EJB入門和無狀態(tài)會話Bean;2)有狀態(tài)會話Bean;3)BMP和CMP是實(shí)體Bean;4)jms和MessageDrivenBean;5)事物和安全(JTA、JTS和JAAS);6)WebService的開發(fā)和應(yīng)用。
7、開源框架的學(xué)習(xí)學(xué)習(xí)幾種現(xiàn)在流行的開源框架:Struts、Spring、Hibernian、Webwork等。完整的學(xué)習(xí)這些框架的開發(fā)和應(yīng)用。如果有興趣還可以學(xué)習(xí)Ibati框架、AJAX技術(shù)和DWR框架的開發(fā)和應(yīng)用。
8、JEE項(xiàng)目綜合應(yīng)用JEE的知識來開發(fā)一個(gè)完整的應(yīng)用。
9、面向?qū)ο蠓治雠c設(shè)計(jì)java是一種面向?qū)ο蟮恼Z言,所以要深入學(xué)習(xí)面向?qū)ο蟮姆治雠c設(shè)計(jì),另外還要學(xué)習(xí)UML統(tǒng)一建模語言。
10、接下來就是系統(tǒng)設(shè)計(jì)與架構(gòu)這里要學(xué)習(xí)的是Java設(shè)計(jì)模式、EJB設(shè)計(jì)模式、JEE核心設(shè)計(jì)模式、JEE應(yīng)用程序框架設(shè)計(jì)。
11、軟件工程軟件工程基本理論知識的學(xué)習(xí),還有Rup和極限編程。
12、技術(shù)研究學(xué)習(xí)搜索引擎技術(shù):如Lucene等、工作流技術(shù):包含Shark、JBPM等、SOA架構(gòu)和應(yīng)用。
13、綜合項(xiàng)目實(shí)戰(zhàn)實(shí)現(xiàn)一個(gè)企業(yè)級的應(yīng)用。每個(gè)階段在做項(xiàng)目的基礎(chǔ)上牢固的掌握應(yīng)用到的知識,只有在實(shí)際的應(yīng)用中發(fā)現(xiàn)問題,加深所學(xué)的知識。
二、中級工程師
1、對于Java基礎(chǔ)技術(shù)體系(包括JVM、類裝載機(jī)制、多線程并發(fā)、IO、網(wǎng)絡(luò))有一定的掌握和應(yīng)用經(jīng)驗(yàn)。
掌握J(rèn)VM內(nèi)存分配、JVM垃圾回收;類裝載機(jī)制; 性能優(yōu)化; 反射機(jī)制;多線程;IO/NIO; 網(wǎng)絡(luò)編程;常用數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法。
2、對面向?qū)ο蟮能浖_發(fā)思想有清晰的認(rèn)識、熟悉掌握常用的設(shè)計(jì)模式;設(shè)計(jì)模式;單例模式;工廠模式;代理模式;模板方法模式;責(zé)任鏈模式等。
3、熟練掌握目前流行開源框架(spring/springmvc/ibatis),并且對其核心思想、實(shí)現(xiàn)原理有一定認(rèn)知;開源框架:spring;hibernate。
4、熟悉Oracle、MySQL等數(shù)據(jù)庫開發(fā)與設(shè)計(jì)以及緩存系統(tǒng)Redis或 Memcached的設(shè)計(jì)和研發(fā);關(guān)系數(shù)據(jù)庫:oracle;PostgreSQL 緩存系統(tǒng):Redis(Nosql)緩存系統(tǒng):Memcached。
5、熟悉底層中間件、分布式技術(shù)(包括緩存、消息系統(tǒng)、熱部署、JMX等)、底層中間件:應(yīng)用服務(wù)器:Jetty(Tomcat)、 消息中間件:ActiveMQ、RabbitMQ、事務(wù)處理中間件:數(shù)據(jù)訪問中間件:ODBC、工作流中間件:JBPM,分布式技術(shù):緩存系統(tǒng)、消息系統(tǒng)、Restful、熱部署、JMX。
6、至少一種Java 應(yīng)用服務(wù)器如tomcat、Jetty。
7、精通shell編程,熟練應(yīng)用awk、sed、grep、strace、tcudump、gdb等常用命令。
8、有大型分布式、高并發(fā)、高負(fù)載(大數(shù)據(jù)量)、高可用性系統(tǒng)設(shè)計(jì)開發(fā)經(jīng)驗(yàn),分布式:(多節(jié)點(diǎn)部署)、高并發(fā)、高負(fù)載(大數(shù)據(jù)量)、高穩(wěn)定、高可用。
9、對配置管理和敏捷研發(fā)模式有所了解,配置管理工具:SVN、Github。
10、業(yè)務(wù)能力:系統(tǒng)升級、雙機(jī)、部署、容災(zāi)、備份恢復(fù)、DFX。
11、加分技術(shù):腳本語言:Python,遠(yuǎn)程調(diào)用,精通Internet基本協(xié)議(如TCP/IP、HTTP等)內(nèi)容及相關(guān)應(yīng)用。有一定安全意識并了解常見的安全問題解決方案。熟悉常見的一些解決方案及其原理:單點(diǎn)登錄、分布式緩存、SOA、全文檢索、消息中間件,負(fù)載均衡、連接池、nosql、流計(jì)算等。
三、高級工程師
1、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)其實(shí)您想實(shí)現(xiàn)的很多功能,通過JAVA的API都可以實(shí)現(xiàn)了,就不必自己費(fèi)太多的腦經(jīng)了。
2、設(shè)計(jì)模式。其實(shí)寫代碼是很容易的事情,我相信您也有同感。但如何寫得好就比較難了。這個(gè)“好”字包括代碼可重用性,可維護(hù)性,可擴(kuò)展性等。如何寫出好的代碼往往要借助一些設(shè)計(jì)模式。當(dāng)然長期的代碼經(jīng)驗(yàn)積累,只要您用心,會使您形成自己代碼風(fēng)格。相信您的代碼也比較符合代碼的可重用性,可維護(hù)性,可擴(kuò)展性。但既然前人已經(jīng)給我們總結(jié)出了經(jīng)驗(yàn),我們何不踩著前人的肩膀前進(jìn)?3、XML。現(xiàn)在的系統(tǒng)中不使用XML幾乎是不可能的。XML的功能非常強(qiáng)大,它可以做數(shù)據(jù)轉(zhuǎn)換、做系統(tǒng)的配置、甚至可保存您的系統(tǒng)業(yè)務(wù)數(shù)據(jù)。因此您必須了解XML,包括它的語法,結(jié)構(gòu)。您還需要比較熟練的使用解析XML的一些API,比如JDOM,SAX等,因?yàn)樵谖覀円话愕捻?xiàng)目中,XML往往擔(dān)當(dāng)系統(tǒng)配置信息的作用,您需要用這些API解析這些配置信息,開發(fā)完美的項(xiàng)目。4、精通使用一種或兩種框架。“框架都會有許多可重用的代碼,良好的層次關(guān)系和業(yè)務(wù)控制邏輯,基于框架的開發(fā)使你可以省出很多的開發(fā)成本”。但我這里希望您能精通,更多的是希望您能通過框架的使用了解框架的思想。這樣您在開發(fā)一個(gè)項(xiàng)目時(shí)思路會開闊一些,比如您會想到把SQL語句與您的JAVA代碼分開,再比如您會考慮把您的業(yè)務(wù)邏輯配置到XML或者數(shù)據(jù)庫中,這樣整個(gè)項(xiàng)目就很容易擴(kuò)張了。
5、熟悉主流數(shù)據(jù)庫。其實(shí)真正比較大的項(xiàng)目都是有人專門做數(shù)據(jù)庫的,但往往很多項(xiàng)目要求作為(高級)工程師的您也參與數(shù)據(jù)庫的設(shè)計(jì)以及SQL的編寫。所以為了更好的為國家做貢獻(xiàn),建議您還是多了解一些主流數(shù)據(jù)庫,比如SQLSERVER,ORACLE,多連接SQL和存儲過程以及觸發(fā)器。如果您不是“科班”出身,您還需要補(bǔ)充一些數(shù)據(jù)庫原理方面的知識。
6、精通一種或兩種WEBServer。我還是要強(qiáng)調(diào)您要精通一種或兩種。因?yàn)樽鳛镴AVA工程師,特別時(shí)想成為高級JAVA工程師的您,您不可避免地要部署您的項(xiàng)目到WebServer上,而且只有當(dāng)您精通一種WebServer,您才可能最大限度地使用它的資源,這往往可以節(jié)省很多時(shí)間和精力。
7、UML。我知道您肯定想成為高級工程師,因此您有必要了解或熟練或精通UML,這取決于您有多大決心想成為高級工程師和項(xiàng)目經(jīng)理。在比較正規(guī)的開發(fā)團(tuán)隊(duì)中,UML是討論項(xiàng)目的交流工具,您要想做一個(gè)軟件工程師,您至少要能看懂,您要想做高級工程師,您要能通過它來描述您對項(xiàng)目的理解,盡管這不是必須,但卻很重要。
8、站在高度分析問題:這不是一個(gè)知識點(diǎn),也不是通過書本就能學(xué)得到的。只所以提到這一點(diǎn),是因?yàn)槲冶饶€著急,我希望您更快的成為一個(gè)高級的軟件工程師,而不是一個(gè)一般的軟件工程師。希望您在工作中多向您的系統(tǒng)分析員、需求分析員、系統(tǒng)設(shè)計(jì)員學(xué)習(xí),多站在他們角度上去看您在開發(fā)的項(xiàng)目。在最好在項(xiàng)目之初先在您的腦海里對項(xiàng)目有個(gè)大致的分析、設(shè)計(jì),然后和他們進(jìn)行比較,找找差別,想想缺點(diǎn)。
9、工具。您在這個(gè)階段可能接觸到不同的工具了,盡管您還需要使用JB或者IDEA,但能可能對ROSE,Together要多了解一些,因?yàn)槟婾ML了。不要再對Dreamweaver等HTML編輯器情有獨(dú)鐘了,那些JSP頁面讓初級程序員去寫吧。
-
JAVA
+關(guān)注
關(guān)注
19文章
2974瀏覽量
105033 -
開發(fā)工程師
+關(guān)注
關(guān)注
1文章
91瀏覽量
14947
發(fā)布評論請先 登錄
相關(guān)推薦
評論