怎么樣才能成為java工程師?
筆者工作于三星,騰訊,華為等多家互聯(lián)網(wǎng)公司,后續(xù)有一系列文章推出,請大家點(diǎn)擊 關(guān)注 ,瀏覽我的歷史文章和后續(xù)文章先上個薪資發(fā)展圖,大家看看這個行業(yè)的薪資怎樣我們要學(xué)習(xí)Java的 4大原因
1.Java母儀天下的霸道
10年發(fā)展歷史,80%以上的高端企業(yè)級應(yīng)用都使用JAVA平臺(電信、銀行等)。Amazon、Google、 eBay、淘寶、京東、阿里和其它的大型電子商務(wù)品牌都在使用Java來后臺處理。它受到了大約150個許可證頒發(fā)機(jī)構(gòu)、200所大學(xué)和50萬開發(fā)者的擁戴;1000多個應(yīng)用程序是用它編寫的...
這么說吧,如果Java在世界開發(fā)語言領(lǐng)域說自己排名第二的話,基本上沒人敢稱自己為第一。俗話說瘦死的駱駝比馬大,更何況Java仍處于巔峰時期,此刻加入Java陣營可讓你充分享受抱大腿的快感~
2.物聯(lián)網(wǎng)的“巔峰20年”然而嚴(yán)肅些,IT技術(shù)行業(yè)變化莫測,誰能保證此時如日中天的Java帝國明天就不會轟然倒塌。有這個擔(dān)心的小白,首先老司機(jī)對你眼光長遠(yuǎn)表示認(rèn)可。
然而你應(yīng)該了解到未來的20年應(yīng)是物聯(lián)網(wǎng)的世界,對于作為物聯(lián)網(wǎng)編程首選的Java,Eclipse Foundation執(zhí)行董事 Mike Milinkovich表示:如果Oracle和合作伙伴在物聯(lián)網(wǎng)方面能夠給出一個基于Java的端到端的存儲解決方案,那么未來20年,Java的地位都不會被動搖。
隨著物聯(lián)網(wǎng)的火熱,相信對于Java的推崇將會上一個新的層次,正如Mike所說的,再過20年,Java依然制霸整個編程語言江湖。
3.Java的鋪墊性
另一方面來說,即使編程領(lǐng)域發(fā)生巨大的變化,Java依然不會被淘汰,這是由其語言自身特性決定的:Java是一門非常好的鋪墊語言,相對簡單友好,很多人學(xué)過Java之后,再學(xué)習(xí)其他語言感覺非常輕松。
Java的生態(tài)圈決定了它在未來10年,甚至20年都會是最熱門的語言之一。而且退一萬步講,就算Java瀕臨淘汰,你在精通Java的情況下,學(xué)習(xí)其他語言也是觸類旁通的。
4.嚴(yán)重的人才缺口
老司機(jī)明白小白的另外一個擔(dān)心,Java這么火,自然會有大批量人才涌入,競爭壓力豈不是會很大?
然而你要明白的是在國內(nèi),現(xiàn)階段對Java的人才培養(yǎng)仍然屬于欠完善階段。互聯(lián)網(wǎng)產(chǎn)業(yè)的快速發(fā)展與人才培養(yǎng)之間脫節(jié)嚴(yán)重,我國仍然還存在很大的Java人才缺口,缺口可達(dá)42.5萬,并且以每年20%左右的速度增長。
怎樣才能成為Java工程師?想要成為一名Java工程師,這是一條漫長的路程,你需要從零開始學(xué)習(xí)Java技術(shù),這里給你分享一個Java系統(tǒng)學(xué)習(xí)路線:
入門篇
俗話說“師傅領(lǐng)進(jìn)門,修行在個人”,帶你入門,只是程序之路的開始,基礎(chǔ)越扎實(shí),后面學(xué)習(xí)起來相對容易,如果不扎實(shí),很快就會遇到學(xué)習(xí)的瓶頸,無法前進(jìn)。那么學(xué)習(xí)Java究竟應(yīng)該如何入門呢?
(1) 首先要深刻理解面向?qū)ο蟮母拍睿@個非常重要,它貫穿整個Java開發(fā)。
但也并不是說必須完全理解概念才可以去學(xué)Java。而是先接觸Java的基礎(chǔ)知識,如類、屬性、方法等。然后在學(xué)習(xí)的過程中去理解面向?qū)ο蟮母拍睢?/p>
(2) 在大概理解面向?qū)ο蟮母拍詈螅@時你應(yīng)該更深入的學(xué)一些Java的語法和一些API的使用。
同時要養(yǎng)成自己良好的編碼習(xí)慣,如Java語言有對包名、類名、方法名等的命名規(guī)范。這個時候要嘗試按照規(guī)范寫代碼,同時改掉以前寫代碼時養(yǎng)成的不良習(xí)慣。
(3) 在熟悉了常用的API及語法后,要去學(xué)習(xí)I/O和流(Stream)以及多線程編程和網(wǎng)絡(luò)編程。
I/O和輸入輸出流,要熟練掌握。而在這個階段暫時不需要深入了解多線程編程和網(wǎng)絡(luò)編程。
(4) 在系列基礎(chǔ)完成之后就需要去接觸下數(shù)據(jù)庫和JDBC,對于數(shù)據(jù)庫暫時不需要深入了解,能夠創(chuàng)建表、查詢表數(shù)據(jù)即可。然后嘗試使用JDBC連接數(shù)據(jù)庫,并對數(shù)據(jù)庫中的數(shù)據(jù)做CURD操作。
(5) 在學(xué)習(xí)Java初期,我建議大家使用文本編輯器來寫代碼,一是有助于記憶Java中的一些關(guān)鍵字和常用類及方法,二是可以熟悉Java的常用命令。在使用了一段時間的文本編輯器后就可以使用IDE來開發(fā)了,使用IDE將使你寫代碼寫得更快,也不容易出錯。
基礎(chǔ)是很重要的,雖然簡單,但不容忽視。
基礎(chǔ)階段只推薦一本《Thinking in Java》,
如果看到這里,恭喜你,你已經(jīng)打敗了50%的人。接下來我們將講述進(jìn)階需要學(xué)習(xí)的知識有哪些。
中級篇
入門后就可以選擇主攻方向了,有三個進(jìn)階方向可以選擇,分別是Web開發(fā)(以下簡稱Web)、Android移動端開發(fā)(以下簡稱Android)和服務(wù)器端開發(fā)。
這三個方向都需要有扎實(shí)的Java基礎(chǔ)。
(1)Web開發(fā)方向,主要有B/S應(yīng)用開發(fā)、微信開發(fā)、支付寶服務(wù)號等。
(2)Android開發(fā),主攻移動端應(yīng)用的開發(fā)。移動端包括搭載Android系統(tǒng)的手機(jī)、平板、電視盒子等設(shè)備。
(3)服務(wù)器端開發(fā),主要是通訊服務(wù)器的開發(fā),如游戲服務(wù)器、騰訊的QQ服務(wù)器等。Web和服務(wù)器端開發(fā),加起來也叫做企業(yè)級開發(fā),即JavaEE開發(fā)。
入門以后,就可以在服務(wù)器端開發(fā)方向發(fā)展,但是還是建議學(xué)習(xí)下Java中級的內(nèi)容,這些內(nèi)容也有助于你今后在通訊開發(fā)的路上走得相對輕松一些。
接下來我們主要討論Web方向,所以這里我們只討論Web方向。
在中級階段你接觸的知識面將更廣,下面是要繼續(xù)掌握的知識。
(1) 先需要學(xué)習(xí)HTML和CSS,然后再學(xué)習(xí)JS以及jQuery。
(2) 在有一定基礎(chǔ)之后就可以開始學(xué)習(xí)JSP和Servlet了,重點(diǎn)學(xué)習(xí)下JSP的內(nèi)置對象及EL表達(dá)式,并試著去做一些頁面。
(3) 然后學(xué)習(xí)下Ajax,要能夠熟練的使用JSON和XML來做數(shù)據(jù)交互。
以上內(nèi)容學(xué)習(xí)完之后Java的基礎(chǔ)部分就算是基本掌握了,下面就該學(xué)習(xí)一些框架了。
(1) 建議先從Spring學(xué)起,Spring將成為你今后開發(fā)項(xiàng)目的核心框架。
Spring也是現(xiàn)在項(xiàng)目中最常用的框架。可以深入的學(xué)習(xí),試著去理解Spring的一些實(shí)現(xiàn)原理,這將有助于你更好的使用Spring。
(2) 學(xué)完Spring之后可以學(xué)習(xí)下ORM框架,比如hibernate和MyBatis,這些相對于Spring來說要簡單的多。主要學(xué)習(xí)與Spring的整合和Spring中的事務(wù)管理。一定要深入的了解數(shù)據(jù)庫事務(wù),這將對你今后的項(xiàng)目開發(fā)非常有幫助。
(3) 最后我們來說控制層的學(xué)習(xí),這里我建議大家重點(diǎn)學(xué)習(xí)SpringMVC。因?yàn)镾pringMVC是目前使用最為廣泛的控制層,而且簡單易學(xué),已經(jīng)有了要替代Struts的趨勢了。但是Struts還是要學(xué)習(xí)下,畢竟還有一些公司在用,這將為你找工作增加一點(diǎn)籌碼。
在學(xué)習(xí)這些內(nèi)容的過程中一定要學(xué)習(xí)下代碼管理工具SVN和Git,目前SVN在企業(yè)中用的較多,而開源社區(qū)一般都是用的Git。
有了JSP基礎(chǔ)和掌握了框架的使用后就可以出去找工作了,在工作的實(shí)踐過程中你將對這些知識運(yùn)用,從而掌握的更加牢固。
也可能在工作過程中會遇到你沒有學(xué)過的技術(shù),不要怕,有了之前的基礎(chǔ)你將很快掌握這些新的技術(shù),加入工作的第一年將是你進(jìn)步最快的一年。
而加入工作之后你可能也不會有太多系統(tǒng)的時間來學(xué)習(xí),這時候一定要約束好自己。不能忘記學(xué)習(xí),學(xué)習(xí)是最好的進(jìn)步方式。
技術(shù)性的文章比較枯燥,如果你看到這里了恭喜你,你已經(jīng)打敗了70%的人。
接下來我們來講述高級篇的學(xué)習(xí)
高級篇
當(dāng)我們參加了工作之后,會逐漸接觸更多的技術(shù)。如果有機(jī)會的話,就多學(xué)習(xí)些技術(shù),不求精通,但求會用,并且知道這項(xiàng)技術(shù)能夠解決什么問題。
在項(xiàng)目中參與設(shè)計(jì)文檔的編寫,能夠?yàn)樽约旱捻?xiàng)目選擇合適的框架,并且能用自己學(xué)到的技術(shù)去解決項(xiàng)目中遇到的難題。這時候根據(jù)項(xiàng)目和公司的差異多應(yīng)用的技術(shù)也不盡相同,但是日志框架、項(xiàng)目構(gòu)建、單元測試、緩存、集群、負(fù)責(zé)均衡、SOAP等是一定要掌握的。這些是在大型項(xiàng)目中比較常用的技術(shù)。然后可以根據(jù)自己的興趣及業(yè)余時間去學(xué)習(xí)自己感興趣的技術(shù)。
架構(gòu)師之路
要成為一名優(yōu)秀的架構(gòu)師首先一定是一名卓越的程序員,架構(gòu)設(shè)計(jì)不僅僅是理論,它是在實(shí)踐中產(chǎn)生的經(jīng)驗(yàn)和結(jié)果。
架構(gòu)師要有靈敏的嗅覺,能夠看清未來技術(shù)的發(fā)展方向,應(yīng)當(dāng)避免在項(xiàng)目中使用已過時的技術(shù)或沒有社區(qū)支持的技術(shù)。
作為一名架構(gòu)師要掌握以下技能:
SOA:在微服務(wù)橫行的年代,這項(xiàng)本領(lǐng)是必不可少的。
設(shè)計(jì)模式:這將有助于你設(shè)計(jì)出更加優(yōu)雅的程序。
架構(gòu)模式:如果說設(shè)計(jì)模式是讓我們更優(yōu)雅的編碼,架構(gòu)模式就是讓我們更優(yōu)雅的組織模塊。
分布式架構(gòu):追求高并發(fā)、可擴(kuò)展、高可用的軟件平臺;
數(shù)據(jù)與傳輸安全:互聯(lián)網(wǎng)是邪惡的,請保護(hù)好你的數(shù)據(jù)和網(wǎng)絡(luò)平臺;
至此大概就是程序員的所要走的整條路,如果你是想成為優(yōu)秀程序員的人,看到了這里,那你已經(jīng)打敗了99%的人,剩下的就是實(shí)踐,馬上開始去找尋學(xué)習(xí)的資料一步一步開始從小白到架構(gòu)的成長之路。
推薦書目
作為補(bǔ)充,我們給出各個階段那些經(jīng)典的著作。
基礎(chǔ)階段:《Thinking in Java》,別說看不懂,難。如果這都看不懂,那就根本還沒算入行啊。
Java升級:《Effective Java》、《深入理解Java 虛擬機(jī)》、《Java性能優(yōu)化權(quán)威指南》
WEB階段:《http權(quán)威指南》、《Java Web 高級編程》
開發(fā)框架:《Spring揭秘》、其余框架的知識,直接看在線文檔或者API
數(shù)據(jù)庫:《MySQL 必知必會》
架構(gòu)設(shè)計(jì):《企業(yè)應(yīng)用架構(gòu)模式 》和《重構(gòu) 改善既有代碼的設(shè)計(jì)重構(gòu)》、《領(lǐng)域驅(qū)動設(shè)計(jì):軟件核心復(fù)雜性應(yīng)對之道》、
方法論:《單元測試之道》、《敏捷開發(fā)-敏捷軟件開發(fā):原則、模式與實(shí)踐》、《測試驅(qū)動開發(fā)的藝術(shù)》、《編程珠璣》
設(shè)計(jì)模式:《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》
WEB安全:《白帽子講Web安全》
WEB架構(gòu):《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》
以上部分是我的個人見解,歡迎大家留言,請點(diǎn)個贊哦