版權聲明:本文爲北京尚學堂原創文章,未經容許不得轉載。html
大多數人選擇Java可能只是由於據說Java前景好、Java比較好找工做、Java語言在TIOBE排行榜上一直位於前三等等之類的緣由,可是Java具體好在哪裏,內心倒是沒有什麼概念的。其實我選擇Java也是出於以上的緣由,可是如今確實真正地愛上了Java。程序員
那麼如今咱們來分析下Java的好處究竟在哪裏,咱們爲何選擇Java?數據庫
簡單易學編程
首先Java是一個面向對象的編程語言,容易理解。並且略去了多重加載、指針等難以理解的概念。而且實現了自動垃圾回收,大大簡化了程序設計。設計模式
其次Java學習資料較多,在官網上能夠找到不少Java的學習視頻,另外也有一些培訓機構提供的有免費的Java視頻課程。有這些學習資料,相似高淇300集等入門足矣。緩存
跨平臺安全
跨平臺是Java最大的優點。Java運行在JVM(Java虛擬機)上,在任何平臺只要安裝了JVM。Java就能夠運行。它架構在操做系統之上,屏蔽了底層的差別。真正實現了「Write once,run anywhere」。服務器
安全微信
Java中沒有指針,這樣就沒有辦法直接訪問內存了。另外Java也不容易出現內存泄露。網絡
多線程
Java內置對多線程的支持,能夠方便地在程序中實現多線程的功能。不像其餘不支持多線程的語言,須要調用操做系統的多線程功能才能完成多線程的實現。
有豐富的類庫
通過10多年的積累和沉澱,出現了不少優秀的開源社區,如Apache和Spring。這些優秀的社區提供了不少很是好的框架,藉助這些框架可使咱們不用去關注Java底層的開發,而只需關注業務的實現。
使用普遍
不得不認可上面有一點是對的,Java確實有不少企業在用,並且都是用在大項目上。這就意味着Java方面的工做比較好找,另外一點是在作Java開發時若是遇到問題,能夠很容易從網上找到解決辦法。
職業篇簡單易學
Java從出道至今已有10多年的歷史,Java初級程序員是最底層的,只須要掌握Java的基礎知識就可以成爲一名初級程序員。
Java程序員能夠有三個進階方向,分別是Android移動端開發(如下簡稱Android)、Web開發(如下簡稱Web)和通信開發。這時目前主流的三大方向。其中最多的是Android和Web。下面分別介紹這三個方向。如下三個方向都須要有紮實的Java基礎。
Android開發,主攻移動端應用的開發。移動端包括搭載Android系統的手機、平板、電視盒子等設備。
Web開發方向,主要有HTML5開發、B/S應用開發、微信開發。這裏的HTML5開發是指移動端的HTML5開發。
通信方向,主要是通信服務器的開發,如遊戲服務器、騰訊的QQ服務器等。
因爲我從事Web開發方向,僅僅對其餘方向略有了解,因此這裏主要介紹Web方向。要進行Web開發須要達到中級程序員的水平,可以熟練使用SSH等框架。
而Java高級程序員則須要瞭解更多的框架和一些經常使用的應用服務器,如工做流、搜索引擎、緩存、JTA、JBoss、WebLogic等。
達到高級程序員水平後,不少人在這個階段選擇了不一樣的方向。有的人厭倦了編碼和設計而轉向了需求分析和產品經理,而有的人繼續執着於技術這條路,成爲了系統架構師。
工具篇簡單易學
子曰「工欲善其事,必先利其器」,有一把順手的「兵器」,能讓咱們的學習和工做達到事半功倍的效果,那麼下面咱們來看看有哪些好用的工具能夠助咱們開發。
文本編輯器(適合初學者)
這裏咱們只說Windows平臺下的文本編輯器。
有人可能說Windows下的記事本不就能夠用嗎,咱們爲何還要用其餘的文本編輯器呢?緣由嗎,首先記事本確實很差用,修改代碼極爲不便,並且有些換行標識不識別;其次效率低,使用記事本打開一個幾K的文件可能沒有什麼感覺,可是打開一個超過10M的文件的時候就能明顯的感受到卡了,好比咱們的日誌文件;最後容易出現問題,用記事本編輯過UTF-8格式的文件後,會給文件加上BOM頭,這有時致使程序出現莫名的錯誤,因此做爲程序員,最好不要使用記事本。
比較好用的文本編輯器有Editplus、UltraEdit、Notepad。其中Notepad是開源免費的,其餘兩個都是收費的。
IDE(適合入門後和項目研發)
IDE是集成開發環境的簡稱,使用IDE的目的是爲了能讓咱們更快地構建項目、更方便地寫代碼,同時屏蔽了代碼編譯的動做。IDE都有代碼高亮、代碼提示以及錯誤提示等功能,同時咱們能夠藉助IDE的插件實現代碼管理、代碼審查和其餘一些好用的功能。
經常使用的IDE有Eclipse、NetBeans和IntelliJ IDEA。前二者都是免費的,後者提供有社區版本,也是免費的,可是企業版是收費的。其中Eclipse是用的最多的IDE。
在Eclipse上擴展的有兩款優秀的IDE,Spring Tool Suite(STS)和大名鼎鼎的MyEclipse。前者免費後者收費,後者集成了前者的全部功能。這裏我建議你們使用STS,由於STS添加了不少對Spring的相關支持,若是項目中用到了Spring,使用起來會很是方便。也能夠在Eclipse上安裝STS插件,可以達到一樣的效果,Spring官網上有插件的安裝方法,這裏再也不贅述。
技術圖譜簡單易學
Java職業圖譜
以上圖譜詳細描繪了每一個級別都須要掌握哪些知識,此圖僅供參考。在實際工做期間,通常是根據公司須要或項目須要來學習不一樣的技術。但仍是建議多去學習些知識,我以爲有句話說的很對,「不少東西不是你以爲有用纔去學,而是學了才知道它有用」,我一直信奉這句話,由於我就是這句話真正的受益者。
入門篇簡單易學
俗話說「師傅領進門,修行靠我的」,因此說只要入門了,後面學習起來是很快的,並且比較容易。那麼學習Java應該如何入門呢?
首先要理解面向對象的概念,這個很重要。但也不是說必須徹底理解概念才能去學Java。而是先接觸Java的基礎知識,如類、屬性、方法等。而後在學習的過程當中理解面向對象的概念。
在大概理解了面向對象的概念後,這時你應該學會了一些Java的語法和一些API的使用。這時須要繼續深刻地去學習這些。同時要養成本身良好的編碼習慣,Java有本身對包名、類名、方法名等的命名規範。這個時候要嘗試按照規範寫代碼,同時甩掉之前寫代碼時養成的不良習慣。
在熟悉了經常使用的API及語法後要去學習I/O和流(Stream)以及多線程編程和網絡編程。I/O和輸入輸出流,要熟練掌握。而在這個階段暫時不須要深刻了解多線程編程和網絡編程。
在系列基礎完成以後就須要去接觸下數據庫和JDBC,對於數據庫不須要深刻了解,可以建立表、查詢表數據便可。而後嘗試使用JDBC鏈接數據庫,並對數據庫中的數據作CURD操做。
在學習Java初期,我建議你們使用文本編輯器來寫代碼,一是有助於記憶Java中的一些關鍵字和經常使用類及方法,二是能夠熟悉Java的經常使用命令。在使用了一段時間的文本編輯器後就可使用IDE來開發了,使用IDE將使你寫代碼寫得更快,也不容易出錯。
中級篇簡單易學
入門後就能夠選擇主攻方向了,幾個方向在職業篇中已有介紹。通信開發方向其實在這個時候就能夠轉了,可是仍是建議學習下Java中級的內容,這些內容也有助於你從此在通信開發的路上走得更容易。由於我是主攻Web方向,因此這裏咱們只討論Web方向。
在這個階段你接觸的知識面將更廣,在學習Web開發以前首先須要學習HTML和CSS,而後再學習JS以及jQuery。在有必定基礎以後就能夠開始學習JSP和Servlet了,重點學習下JSP的內置對象及EL表達式,並試着去作一些頁面。而後學習下Ajax,要可以熟練的使用JSON和XML來作數據交互。
以上內容學習完以後Java的基礎部分就算是基本掌握了,下面就該學習一些框架了。建議先從Spring學起,Spring將成爲你從此開發項目的核心框架。Spring也是如今項目中最經常使用的框架。能夠深刻的學習,試着去理解Spring的一些實現原理,這將有助於你更好的使用Spring。
學完Spring以後能夠學習下ORM框架,好比Hibernate和MyBatis,這些相對於Spring來講要簡單的多。主要學習與Spring的整合和Spring中的事務管理。必定要深刻的瞭解數據庫事務,這將對你從此的項目開發很是有幫助。
最後咱們來講控制層的學習,這裏我建議你們重點學習SpringMVC。由於SpringMVC是目前使用最爲普遍的控制層,並且簡單易學,已經有了要替代Struts的趨勢了。可是Struts仍是要學習下,畢竟還有一些公司在用,這將爲你找工做加大一點籌碼。
在學習這些內容的過程當中必定要學習下代碼管理工具SVN和Git,目前SVN在企業中用的較多,而開源社區通常都是用的Git。
這部分的學習建議你們經過視頻教程來學習,同時多去技術論壇和博客平臺看看,好比國內的CSDN、cnblogs等網站。
有了JSP基礎和掌握了框架的使用後就能夠出去找工做了,在工做過程當中這些知識你將掌握的更加牢固。也可能在工做過程當中會遇到你沒有學過的技術,不要怕,有了以前的基礎你將很快掌握這些新的技術,加入工做的第一年將是你進步最快的一年。
而加入工做以後你可能也不會有太多的時間來學習,這時候要約束好本身。不要忘了學習,學習是最好的進步方式。
高級篇簡單易學
當咱們參加了工做以後,開始接觸更多的技術。若是有機會就多學習些技術,不求精通,但求會用,而且知道這項技術可以解決什麼問題。開始在項目中參與設計文檔的編寫。可以爲本身的項目選擇合適的框架,而且能用本身學到的技術去解決項目中遇到的難題。
這時候根據項目和公司的差別用的技術也不盡相同,可是日誌框架、項目構建、單元測試、緩存、集羣、負責均衡、SOAP等是必定要掌握的。這些是在大型項目中比較經常使用的技術。而後能夠根據本身的興趣及業餘時間去學習本身感興趣的技術。
架構師之路簡單易學
成爲一名架構師一直是個人目標。一名優秀的架構師首先必定是一名卓越的程序員,架構設計不該僅僅是理論,它應當是在實踐中產生的經驗和結果。架構師也要有靈敏的嗅覺,可以看清將來技術的發展方向,應當避免在項目中使用已過期的技術或沒有社區支持的技術。
做爲一名架構師要掌握如下技能:
SOA:在微服務橫行的年代,這項本領是必不可少的。
設計模式:這將有助於你設計出更加優雅的程序。
程序員的區別簡單易學
一樣是程序員,初級、中級與高級的區別在哪裏呢?
初級程序員就是傳說中的碼農,依靠複製粘貼、比葫蘆畫瓢的方式完成代碼的編寫,一般一個方法幾百行代碼,巴不得一個類將全部的功能都實現,不考慮程序設計原則,也不考慮程序的執行效率,不考慮SQL注入的問題,更不去想如何能讓個人程序質量更好,他們的目的僅僅是個人程序可以運行。不少程序員都會經歷這個階段,而這個階段是最容易養成毛病的階段。可是有的程序員很快就擺脫了這個階段,也有不少程序員停留在這個階段很長時間,哪怕是掌握了更多的技術,可是這個階段造成的思惟模式卻沒有改變,養成的毛病也沒有改掉。
咱們就能聽到這樣的聲音「這是哪一個寫的代碼,寫的太亂了,尚未註釋」、「我去!這代碼徹底不敢動啊,邏輯太混亂了,牽一髮而動全身啊」。這些基本上都是初級程序員寫的代碼。中級程序員更喜歡優雅的代碼,而本身寫出優雅的代碼,封裝、繼承、抽象運用自如,可以獨立完成系統中模塊的開發。
高級程序員可以完成系統的設計,可以使用已掌握的技能解決問題。而且可以考慮到系統的擴展性、安全性、穩定性等問題。
至於架構師嗎,首先要具有中大型項目的整體規劃和設計經驗,一般架構師考慮的要比高級程序員更多,有時須要考慮到項目的成本、工期、部署環境甚至一些商業因素等,不只僅是技術上的問題。其次架構師一樣須要有很好的溝通能力,一是與客戶的溝通,二是與團隊內部純技術的溝通。
不少程序員都止步於中級級別,靠一手SSH技術行天下,而身處初級時養成的毛病仍然存在,有的甚至已經工做5年卻一直是這樣,可塑性極差,因爲工做時間長也學會了一手掩蓋問題的好本事,這類人絕不客氣的說就是項目的禍害。也有一些人達到中級或高級級別後厭倦了編碼,從而轉作需求分析、產品經理或項目經理,在國內作技術確實也很難拿到高工資,這也是不少技術人員轉型的緣由。而我依然堅持個人技術之路,既然選擇了就要堅決的走下去。
更多Java培訓,Java視頻,Java教程盡在北京尚學堂Java培訓,關注北京尚學堂官方微信,得到一手Java最新知識。
本文做者北京尚學堂原創。如需轉載請聯繫做者受權,未經受權,轉載必究。
更多猛料!歡迎掃描上方二維碼關注北京尚學堂官方微信公衆號(資料領取驗證消息:156)