大多數(shù)人選擇Java可能只是因為聽說Java前景好、Java比較好找工作、Java語言在TIOBE排行榜上一直位于前三等等之類的原因,但是Java具體好在哪里,心里卻是沒有什么概念的。其實我選擇Java也是出于以上的原因,但是現(xiàn)在確實真正地愛上了Java。我們?yōu)槭裁催x擇Java!
那么現(xiàn)在我們來分析下Java的好處究竟在哪里。
簡單易學
首先Java是一個面向對象的編程語言,容易理解。而且略去了多重加載、指針等難以理解的概念。并且實現(xiàn)了自動垃圾回收,大大簡化了程序設計。
其次Java學習資料較多,網(wǎng)上很多在線學習平臺就可以找到很多Java學習視頻,另外也有一些培訓機構提供的有免費的Java視頻課程。有這些學習資料,入門足矣。
跨平臺
跨平臺是Java最大的優(yōu)勢。Java運行在JVM(Java虛擬機)上,在任何平臺只要安裝了JVM。Java就可以運行。它架構在操作系統(tǒng)之上,屏蔽了底層的差異。真正實現(xiàn)了“Write
once,run anywhere”。
安全
Java中沒有指針,這樣就沒有辦法直接訪問內(nèi)存了。另外Java也不容易出現(xiàn)內(nèi)存泄露。
多線程
Java內(nèi)置對多線程的支持,可以方便地在程序中實現(xiàn)多線程的功能。不像其他不支持多線程的語言,需要調(diào)用操作系統(tǒng)的多線程功能才能完成多線程的實現(xiàn)。
有豐富的類庫
Java從出道至今已有20多年的歷史,經(jīng)過20多年的積累和沉淀,出現(xiàn)了很多優(yōu)秀的開源社區(qū),如Apache和Spring。這些優(yōu)秀的社區(qū)提供了很多非常好的框架,借助這些框架可以使我們不用去關注Java底層的開發(fā),而只需關注業(yè)務的實現(xiàn)。
使用廣泛
不得不承認上面有一點是對的,Java確實有很多企業(yè)在用,而且都是用在大項目上。這就意味著Java方面的工作比較好找,另一點是在做Java開發(fā)時如果遇到問題,可以很容易從網(wǎng)上找到解決辦法。
職業(yè)篇
Java初級程序員是最底層的,只需要掌握Java的基礎知識就能夠成為一名初級程序員。
Java程序員可以有三個進階方向,分別是Android移動端開發(fā)(以下簡稱Android)、Web開發(fā)(以下簡稱Web)和通訊開發(fā)。這時目前主流的三大方向。其中最多的是Android和Web。下面分別介紹這三個方向。以下三個方向都需要有扎實的Java基礎。
Android開發(fā),主攻移動端應用的開發(fā)。移動端包括搭載Android系統(tǒng)的手機、平板、電視盒子等設備。
Web開發(fā)方向,主要有HTML5開發(fā)、B/S應用開發(fā)、微信開發(fā)。這里的HTML5開發(fā)是指移動端的HTML5開發(fā)。
通訊方向,主要是通訊服務器的開發(fā),如游戲服務器、騰訊的QQ服務器等。
由于我從事Web開發(fā)方向,僅僅對其他方向略有了解,所以這里主要介紹Web方向。要進行Web開發(fā)需要達到中級程序員的水平,能夠熟練使用SSH等框架。
而Java高級程序員則需要了解更多的框架和一些常用的應用服務器,如工作流、搜索引擎、緩存、JTA、JBoss、WebLogic等。
達到高級程序員水平后,很多人在這個階段選擇了不同的方向。有的人厭倦了編碼和設計而轉向了需求分析和產(chǎn)品經(jīng)理,而有的人繼續(xù)執(zhí)著于技術這條路,成為了系統(tǒng)架構師。
工具篇
子曰“工欲善其事,必先利其器”,有一把順手的“兵器”,能讓我們的學習和工作達到事半功倍的效果,那么下面我們來看看有哪些好用的工具可以助我們開發(fā)。
文本編輯器(適合初學者)
這里我們只說Windows平臺下的文本編輯器。
有人可能說Windows下的記事本不就可以用嗎,我們?yōu)槭裁催€要用其他的文本編輯器呢?原因嗎,首先記事本確實不好用,修改代碼極為不便,而且有些換行標識不識別;其次效率低,使用記事本打開一個幾K的文件可能沒有什么感受,但是打開一個超過10M的文件的時候就能明顯的感覺到卡了,比如我們的日志文件;最后容易出現(xiàn)問題,用記事本編輯過UTF-8格式的文件后,會給文件加上BOM頭,這有時導致程序出現(xiàn)莫名的錯誤,所以作為程序員,最好不要使用記事本。
比較好用的文本編輯器有Editplus、UltraEdit、Notepad。其中Notepad是開源免費的,其他兩個都是收費的。
IDE(適合入門后和項目研發(fā))
IDE是集成開發(fā)環(huán)境的簡稱,使用IDE的目的是為了能讓我們更快地構建項目、更方便地寫代碼,同時屏蔽了代碼編譯的動作。IDE都有代碼高亮、代碼提示以及錯誤提示等功能,同時我們可以借助IDE的插件實現(xiàn)代碼管理、代碼審查和其他一些好用的功能。
常用的IDE有Eclipse、NetBeans和IntelliJ
IDEA。前兩者都是免費的,后者提供有社區(qū)版本,也是免費的,但是企業(yè)版是收費的。其中Eclipse是用的最多的IDE。
在Eclipse上擴展的有兩款優(yōu)秀的IDE,Spring Tool
Suite(STS)和大名鼎鼎的MyEclipse。前者免費后者收費,后者集成了前者的所有功能。這里我建議大家使用STS,因為STS添加了很多對Spring的相關支持,如果項目中用到了Spring,使用起來會非常方便。也可以在Eclipse上安裝STS插件,能夠達到同樣的效果,Spring官網(wǎng)上有插件的安裝方法,這里不再贅述。
技術圖譜
以上圖譜詳細描繪了每個級別都需要掌握哪些知識,此圖僅供參考。在實際工作期間,一般是根據(jù)公司需要或項目需要來學習不同的技術。但還是建議多去學習些知識,我覺得有句話說的很對,“很多東西不是你覺得有用才去學,而是學了才知道它有用”,我一直信奉這句話,因為我就是這句話真正的受益者。
入門篇
俗話說“師傅領進門,修行靠個人”,所以說只要入門了,后面學習起來是很快的,而且比較容易。那么學習Java應該如何入門呢?
首先要理解面向對象的概念,這個很重要。但也不是說必須完全理解概念才能去學Java。而是先接觸Java的基礎知識,如類、屬性、方法等。然后在學習的過程中理解面向對象的概念。
在大概理解了面向對象的概念后,這時你應該學會了一些Java的語法和一些API的使用。這時需要繼續(xù)深入地去學習這些。同時要養(yǎng)成自己良好的編碼習慣,Java有自己對包名、類名、方法名等的命名規(guī)范。這個時候要嘗試按照規(guī)范寫代碼,同時甩掉以前寫代碼時養(yǎng)成的不良習慣。
在熟悉了常用的API及語法后要去學習I/O和流(Stream)以及多線程編程和網(wǎng)絡編程。I/O和輸入輸出流,要熟練掌握。而在這個階段暫時不需要深入了解多線程編程和網(wǎng)絡編程。
在系列基礎完成之后就需要去接觸下數(shù)據(jù)庫和JDBC,對于數(shù)據(jù)庫不需要深入了解,能夠創(chuàng)建表、查詢表數(shù)據(jù)即可。然后嘗試使用JDBC連接數(shù)據(jù)庫,并對數(shù)據(jù)庫中的數(shù)據(jù)做CURD操作。
在學習Java初期,我建議大家使用文本編輯器來寫代碼,一是有助于記憶Java中的一些關鍵字和常用類及方法,二是可以熟悉Java的常用命令。在使用了一段時間的文本編輯器后就可以使用IDE來開發(fā)了,使用IDE將使你寫代碼寫得更快,也不容易出錯。
基礎是很重要的,雖然簡單,但是也馬虎不得。這里推薦幾本書《Thinking in Java》、《Java 8編程參考官方教程》等圖書。
中級篇
入門后就可以選擇主攻方向了,幾個方向在職業(yè)篇中已有介紹。通訊開發(fā)方向其實在這個時候就可以轉了,但是還是建議學習下Java中級的內(nèi)容,這些內(nèi)容也有助于你今后在通訊開發(fā)的路上走得更容易。因為我是主攻Web方向,所以這里我們只討論Web方向。
在這個階段你接觸的知識面將更廣,在學習Web開發(fā)之前首先需要學習HTML和CSS,然后再學習JS以及jQuery。在有一定基礎之后就可以開始學習JSP和Servlet了,重點學習下JSP的內(nèi)置對象及EL表達式,并試著去做一些頁面。然后學習下Ajax,要能夠熟練的使用JSON和XML來做數(shù)據(jù)交互。
以上內(nèi)容學習完之后Java的基礎部分就算是基本掌握了,下面就該學習一些框架了。建議先從Spring學起,Spring將成為你今后開發(fā)項目的核心框架。Spring也是現(xiàn)在項目中最常用的框架??梢陨钊氲膶W習,試著去理解Spring的一些實現(xiàn)原理,這將有助于你更好的使用Spring。
學完Spring之后可以學習下ORM框架,比如Hibernate和MyBatis,這些相對于Spring來說要簡單的多。主要學習與Spring的整合和Spring中的事務管理。一定要深入的了解數(shù)據(jù)庫事務,這將對你今后的項目開發(fā)非常有幫助。
最后我們來說控制層的學習,這里我建議大家重點學習SpringMVC。因為SpringMVC是目前使用最為廣泛的控制層,而且簡單易學,已經(jīng)有了要替代Struts的趨勢了。但是Struts還是要學習下,畢竟還有一些公司在用,這將為你找工作加大一點籌碼。
在學習這些內(nèi)容的過程中一定要學習下代碼管理工具SVN和Git,目前SVN在企業(yè)中用的較多,而開源社區(qū)一般都是用的Git。
有了JSP基礎和掌握了框架的使用后就可以出去找工作了,在工作過程中這些知識你將掌握的更加牢固。也可能在工作過程中會遇到你沒有學過的技術,不要怕,有了之前的基礎你將很快掌握這些新的技術,加入工作的第一年將是你進步最快的一年。
而加入工作之后你可能也不會有太多的時間來學習,這時候要約束好自己。不要忘了學習,學習是最好的進步方式。
高級篇
當我們參加了工作之后,開始接觸更多的技術。如果有機會就多學習些技術,不求精通,但求會用,并且知道這項技術能夠解決什么問題。開始在項目中參與設計文檔的編寫。能夠為自己的項目選擇合適的框架,并且能用自己學到的技術去解決項目中遇到的難題。
這時候根據(jù)項目和公司的差異用的技術也不盡相同,但是日志框架、項目構建、單元測試、緩存、集群、負載均衡、SOAP等是一定要掌握的。這些是在大型項目中比較常用的技術。然后可以根據(jù)自己的興趣及業(yè)余時間去學習自己感興趣的技術。
架構師之路
成為一名架構師一直是我的目標。一名優(yōu)秀的架構師首先一定是一名卓越的程序員,架構設計不應僅僅是理論,它應當是在實踐中產(chǎn)生的經(jīng)驗和結果。架構師也要有靈敏的嗅覺,能夠看清未來技術的發(fā)展方向,應當避免在項目中使用已過時的技術或沒有社區(qū)支持的技術。
作為一名架構師要掌握以下技能:
SOA:在微服務橫行的年代,這項本領是必不可少的。
設計模式:這將有助于你設計出更加優(yōu)雅的程序。
程序員的區(qū)別
同樣是程序員,初級、中級與高級的區(qū)別在哪里呢?
初級程序員就是傳說中的碼農(nóng),依靠復制粘貼、比葫蘆畫瓢的方式完成代碼的編寫,通常一個方法幾百行代碼,恨不得一個類將所有的功能都實現(xiàn),不考慮程序設計原則,也不考慮程序的執(zhí)行效率,不考慮SQL注入的問題,更不去想如何能讓我的程序質(zhì)量更好,他們的目的僅僅是我的程序能夠運行。
很多程序員都會經(jīng)歷這個階段,而這個階段是最容易養(yǎng)成毛病的階段。但是有的程序員很快就擺脫了這個階段,也有很多程序員停留在這個階段很長時間,哪怕是掌握了更多的技術,但是這個階段形成的思維模式卻沒有改變,養(yǎng)成的毛病也沒有改掉。
我們就能聽到這樣的聲音“這是哪個傻X寫的代碼,寫的太亂了,還沒有注釋”、“我去!這代碼完全不敢動啊,邏輯太混亂了,牽一發(fā)而動全身啊”。這些基本上都是初級程序員寫的代碼。中級程序員更喜歡優(yōu)雅的代碼,而自己寫出優(yōu)雅的代碼,封裝、繼承、抽象運用自如,能夠獨立完成系統(tǒng)中模塊的開發(fā)。
高級程序員能夠完成系統(tǒng)的設計,能夠使用已掌握的技能解決問題。并且能夠考慮到系統(tǒng)的擴展性、安全性、穩(wěn)定性等問題。
至于架構師嗎,首先要具備中大型項目的總體規(guī)劃和設計經(jīng)驗,通常架構師考慮的要比高級程序員更多,有時需要考慮到項目的成本、工期、部署環(huán)境甚至一些商業(yè)因素等,不僅僅是技術上的問題。其次架構師同樣需要有很好的溝通能力,一是與客戶的溝通,二是與團隊內(nèi)部純技術的溝通。
很多程序員都止步于中級級別,靠一手SSH技術行天下,而身處初級時養(yǎng)成的毛病仍然存在,有的甚至已經(jīng)工作5年卻一直是這樣,可塑性極差,由于工作時間長也學會了一手掩蓋問題的好本事,這類人毫不客氣的說就是項目的禍害。也有一些人達到中級或高級級別后厭倦了編碼,從而轉做需求分析、產(chǎn)品經(jīng)理或項目經(jīng)理,在國內(nèi)做技術確實也很難拿到高工資,這也是很多技術人員轉型的原因。而我依然堅持我的技術之路,既然選擇了就要堅定的走下去。
總結:通過上面的介紹相信你對于Java有了一個更清晰的認識和了解,如果你對于Java很感興趣,但是不知道從何學起,達內(nèi)Java培訓機構節(jié)前送福利了,Java免費體驗課開始報名了,大牛老師為你規(guī)劃Java學習路線圖,你還擔心學不會嗎?