Java程式設計師修煉之路
作者簡介:王成委,CSDN知識庫特邀編輯,Java高階工程師,熟悉Java程式語言和Oracle資料庫。專注於高併發架構設計和大資料儲存方向的研究。
我們為什麼選擇Java
大多數人選擇Java可能只是因為聽說Java前景好、Java比較好找工作、Java語言在TIOBE排行榜上一直位於前三等等之類的原因,但是Java具體好在哪裡,心裡卻是沒有什麼概念的。其實我選擇Java也是出於以上的原因,但是現在確實真正地愛上了Java。
那麼現在我們來分析下Java的好處究竟在哪裡。
簡單易學
首先Java是一個面向物件的程式語言,容易理解。而且略去了多重載入、指標等難以理解的概念。並且實現了自動垃圾回收,大大簡化了程式設計。
其次Java學習資料較多,從CSDN學院或其他線上學院中就可以找到很多Java學習視訊,另外也有一些培訓機構提供的有免費的Java視訊課程。有這些學習資料,入門足矣。
跨平臺
跨平臺是Java最大的優勢。Java執行在JVM(Java虛擬機器)上,在任何平臺只要安裝了JVM。Java就可以執行。它架構在作業系統之上,遮蔽了底層的差異。真正實現了“Write once,run anywhere”。
安全
Java中沒有指標,這樣就沒有辦法直接訪問記憶體了。另外Java也不容易出現記憶體洩露。
多執行緒
Java內建對多執行緒的支援,可以方便地在程式中實現多執行緒的功能。不像其他不支援多執行緒的語言,需要呼叫作業系統的多執行緒功能才能完成多執行緒的實現。
有豐富的類庫
Java從出道至今已有10多年的歷史,經過10多年的積累和沉澱,出現了很多優秀的開源社群,如Apache和Spring。這些優秀的社群提供了很多非常好的框架,藉助這些框架可以使我們不用去關注Java底層的開發,而只需關注業務的實現。
使用廣泛
不得不承認上面有一點是對的,Java確實有很多企業在用,而且都是用在大專案上。這就意味著Java方面的工作比較好找,另一點是在做Java開發時如果遇到問題,可以很容易從網上找到解決辦法。
職業篇
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將使你寫程式碼寫得更快,也不容易出錯。
基礎是很重要的,雖然簡單,但是也馬虎不得。這裡推薦幾本書《Thinking in Java》、《Java 8程式設計參考官方教程》等圖書(圖書資源推薦)。
中級篇
入門後就可以選擇主攻方向了,幾個方向在職業篇中已有介紹。通訊開發方向其實在這個時候就可以轉了,但是還是建議學習下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。
有了JSP基礎和掌握了框架的使用後就可以出去找工作了,在工作過程中這些知識你將掌握的更加牢固。也可能在工作過程中會遇到你沒有學過的技術,不要怕,有了之前的基礎你將很快掌握這些新的技術,加入工作的第一年將是你進步最快的一年。
而加入工作之後你可能也不會有太多的時間來學習,這時候要約束好自己。不要忘了學習,學習是最好的進步方式。
高階篇
當我們參加了工作之後,開始接觸更多的技術。如果有機會就多學習些技術,不求精通,但求會用,並且知道這項技術能夠解決什麼問題。開始在專案中參與設計文件的編寫。能夠為自己的專案選擇合適的框架,並且能用自己學到的技術去解決專案中遇到的難題。
這時候根據專案和公司的差異用的技術也不盡相同,但是日誌框架、專案構建、單元測試、快取、叢集、負載均衡、SOAP等是一定要掌握的。這些是在大型專案中比較常用的技術。然後可以根據自己的興趣及業餘時間去學習自己感興趣的技術。
架構師之路
成為一名架構師一直是我的目標。一名優秀的架構師首先一定是一名卓越的程式設計師,架構設計不應僅僅是理論,它應當是在實踐中產生的經驗和結果。架構師也要有靈敏的嗅覺,能夠看清未來技術的發展方向,應當避免在專案中使用已過時的技術或沒有社群支援的技術。
作為一名架構師要掌握以下技能:
- SOA:在微服務橫行的年代,這項本領是必不可少的。
- 設計模式:這將有助於你設計出更加優雅的程式。
程式設計師的區別
同樣是程式設計師,初級、中級與高階的區別在哪裡呢?
初級程式設計師就是傳說中的碼農,依靠複製貼上、比葫蘆畫瓢的方式完成程式碼的編寫,通常一個方法幾百行程式碼,恨不得一個類將所有的功能都實現,不考慮程式設計原則,也不考慮程式的執行效率,不考慮SQL注入的問題,更不去想如何能讓我的程式質量更好,他們的目的僅僅是我的程式能夠執行。很多程式設計師都會經歷這個階段,而這個階段是最容易養成毛病的階段。但是有的程式設計師很快就擺脫了這個階段,也有很多程式設計師停留在這個階段很長時間,哪怕是掌握了更多的技術,但是這個階段形成的思維模式卻沒有改變,養成的毛病也沒有改掉。
我們就能聽到這樣的聲音“這是哪個傻X寫的程式碼,寫的太亂了,還沒有註釋”、“我去!這程式碼完全不敢動啊,邏輯太混亂了,牽一髮而動全身啊”。這些基本上都是初級程式設計師寫的程式碼。中級程式設計師更喜歡優雅的程式碼,而自己寫出優雅的程式碼,封裝、繼承、抽象運用自如,能夠獨立完成系統中模組的開發。
高階程式設計師能夠完成系統的設計,能夠使用已掌握的技能解決問題。並且能夠考慮到系統的擴充套件性、安全性、穩定性等問題。
至於架構師嗎,首先要具備中大型專案的總體規劃和設計經驗,通常架構師考慮的要比高階程式設計師更多,有時需要考慮到專案的成本、工期、部署環境甚至一些商業因素等,不僅僅是技術上的問題。其次架構師同樣需要有很好的溝通能力,一是與客戶的溝通,二是與團隊內部純技術的溝通。
很多程式設計師都止步於中級級別,靠一手SSH技術行天下,而身處初級時養成的毛病仍然存在,有的甚至已經工作5年卻一直是這樣,可塑性極差,由於工作時間長也學會了一手掩蓋問題的好本事,這類人毫不客氣的說就是專案的禍害。也有一些人達到中級或高階級別後厭倦了編碼,從而轉做需求分析、產品經理或專案經理,在國內做技術確實也很難拿到高工資,這也是很多技術人員轉型的原因。而我依然堅持我的技術之路,既然選擇了就要堅定的走下去。
相關學習資源
更多內容請關注CSDN知識庫。目前,CSDN已釋出30多個技術領域知識庫,每個知識庫包含了專家精心繪製的知識圖譜,及由特邀編輯從海量資料中層層篩選出的精華內容和資源(學習視訊、實踐Demo、圖書)。
掃描以下二維碼,檢視CSDN知識庫全部內容。
相關推薦
Java程式設計師修煉之路
作者簡介:王成委,CSDN知識庫特邀編輯,Java高階工程師,熟悉Java程式語言和Oracle資料庫。專注於高併發架構設計和大資料儲存方向的研究。 我們為什麼選擇Java大多數人選擇Java可能只是因為聽說Java前景好、Java比較好找工作、Java語
#一個JAVA程式設計師成長之路分享
我搞JAVA也有些日子了, 因為我比較貪玩,上進心不那麼強, 總是逼不得已為了高薪跳槽才去學習, 所以也沒混成什麼大牛, 但好在現在也已經成家立業, 小日子過的還算滋潤, 起碼頂得住一月近萬元的吃喝拉撒玩各種貸款信用卡 不為金錢過於發愁了。 我特別感謝當初貼吧遇見的那位大神, 雖然每個月也就聊那麼幾
程式設計師修煉之路(三)一個清華大學畢業生做獵頭的感受(轉)
從來沒有想過自己會加入這一行,從開始自己喜歡的專業通訊,到後來喜歡的管理,幻想過是專業高手,幻想過管理專家,卻從來沒有想過進入這一行,但真的在我剛剛離開校園的時候發生了,短短几天,對這個行業有了一個感性認識,其實最讓自己傷感的不是自己沒有幹這一行的經驗,而是代理的人,要找的人
【免費贈書】前端程式設計師修煉之路:積土而為山,積水而為海
首先插播一條好訊息,新書《》已於9月在各大平臺上架,現免費送出4本(看到大家熱情這麼高漲,幸運人數已提升至4人),具體參與規則如下所列: (1)在文章後面的評論中寫出想要獲取此書的理由,隨便什麼都可以,不限制字數,並且一個使用者的多次評論只算作一次。 (2)活動截止日期為北京時間 2018 年 10
一個JAVA程式設計師成長之路分享
部落格看到這麼一篇文章,感覺自己已經從事這個行業將近三年的時間了,感覺什麼都沒學會,在公司裡就是做一些分析一下小需求,在service層做一下邏輯處理,用hibernate做個增刪改查,也沒什麼東西了。但是前臺需要自己寫,因為我們公司沒有前臺。。。,前臺用的dojo框架,估計聽說過的人應該挺少吧。在網上找個a
java程式設計師修煉之道
(顧客就是上帝這個口號我們已經喊了N年了,程式設計師的勞動成果最終也需要轉換為服務提供給客戶,使用者體驗至關重要,常常看到的場景是功能實現了,軟體很難使用,程式設計師有個很充足的理由我不是美工,其實注重使用者體驗跟美工八杆子也打不到一起,FoxMail的成功在很大程度是使用者體驗的成功,友好,清晰的使用者提示
Java程式設計師談一談-----java程式設計師成長之路
引言 其實本來真的沒打算寫這篇文章,主要是LZ得記憶力不是很好,不像一些記憶力強的人,面試完以後,幾乎能把自己和麵試官的對話都給記下來。LZ自己當初面試完以後,除了記住一些聊過的知識點以外,具體的內容基本上忘得一乾二淨,所以寫這篇文章其實是很有難度的。 但是,最近問LZ的人實在是太多了,為了避免重複回
Java程式設計師修煉之道—併發程式設計
Java執行緒模型: 共享的、預設可見的可變狀態 搶佔式執行緒排程 所有執行緒可以很容易地共享同一程序中的物件。 能夠引用這些物件的任何執行緒都可以修改這些物件。 執行緒排程程式差不多任何時候都能在核心上調入或調出執行緒。 必須能調出執行時的方法,否則無限迴圈
程式設計師修煉之路(十)程式設計師必讀經典書籍和成長路線
1、C++ / Java 和麵向物件 我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文“C++學習信心圖” 和“21天學好C++” 學習(麻省理工免費課程)C++面向物件程式設計 讀我的 “如何學
Java程式設計師修煉之道理解1
1、Java是程式語言,也是平臺(平臺是提供執行時環境的軟體)。 2、JVM把類檔案連線起來並執行,JVM不能直接解釋Java原始檔,需要把原始檔變成位元組碼的類檔案。 3、連線Java語言和平臺的紐帶是統一的類檔案格式定義。 4、Java位元組碼首先被JVM解釋,然後被
程式設計師修煉之路(十四)IT外企那點兒事--也說跳槽
最近一個月一直在忙專案,幾乎沒什麼時間寫部落格,今天中午才有時間看看csdn,在論壇上看到一篇很好的文章,分享給大家。也給自己留作備用。 原文地址:http://www.cnblogs.com/forfuture1978/archive/2012/11/26/2788610
分享下多年積累的對JAVA程式設計師成長之路的總結
我也搞了幾年JAVA了,由於一向懶惰,沒有成為大牛,只是一普通程式猿,不愛玩社交網站,不愛玩微博,唯獨喜歡百度貼吧,潛水很久了,手癢來給新人分享下從新手成長為老鳥的已見,也刷刷存在感,應該不比曝照差吧。首先初識語法的階段,必須要學會怎麼操作物件,操作if和for,操作lis
程式設計師修煉之路(八)再次寫給我們這些浮躁的程式設計師
本篇文章是程式設計師修煉之路的第八篇。 程式設計師修煉之路系列我決定將他定位於提升程式設計師素養的專欄,我會分享更多好的文章。 感謝原作者,因為你讓我思考 原文出處:http://blog.csdn.net/yzsind/article/details/6168854
java初級程式設計師成長之路
立一個flag在三個月內,畢業之前成為一名合格的初級程式設計師經歷的這些日子找工作的心塞經歷,發現現在對於java程式設計師要求太高,應聘實習生感覺要求跟中高階java程式設計師一樣什麼前端後端要求至少都到懂,精通java基礎,spring \springmvc\spring
原創電子書《菜鳥程式設計師成長之路:從技術小白到阿里巴巴Java工程師》
《菜鳥程式設計師成長之路:從技術小白到阿里巴巴Java工程師》 國慶節快樂!一年一度長度排第二的假期終於來了。 難得有十一長假,作者也想要休息幾天啦。 不管你是選擇出門玩,還是在公司加班,在學校複習,都希望你過好這個長假。 沒有出去玩的也不用羨慕別人,利用這段時間充充電,不比去旅遊看人頭要好的多嗎? 最近終於
我的程式設計師成長之路
JAVA這個行業,我也搞了幾年,由於一向懶惰,沒有成為大牛,只是一普通的不能夠在普通的程式設計師,在做JAVA行業以前,我是一名徹徹底底的網路運營人員,那個時候的自己也是溜逛在各大論壇、SNS。做的工作是SEO與網站建設。或許是工作壓力、也或許是薪資待遇吧,總而言之,我已經記不清為什麼轉到了JA
程式設計師入門之路
本人是大連某三本學校的學生,大一大二的時候沒怎麼學過習,就在第一學期的C語言課程上認真聽了課,聽到指標的時候就理解不上去了,然後整個大一大二就這樣過去了,非常重要的資料結構一次課都沒聽過,汗顏,到了大三在房地產公司兼職,由於乾的時間長,工作比較努力,由發傳單到管別人發傳單,當時感覺還好,根本
centos7下定時提醒(兩步走,程式設計師健康之路一小步)
眾所周知,程式設計師經常要在電腦前連續奮戰,但是就坐傷身,最明顯的不過就是對於頸椎,腰肌的勞損,眼睛看久了,也都花了。其實這些也都不是問題,就是長時間維持一個狀態才使得身體吃不消。只要有一個定時提醒的功能,就可以大大減輕這種傷害。 現在改用centos系統,很多軟體用不了,也不理想,所以就想
程式設計師成長之路之程式設計師必會單詞
###################################################### January [ˈdʒænjueri] 一月 &nb
程式設計師修煉之道——從小工到專家
網站 更多書籍點選進入>> CiCi島 下載 電子版僅供預覽及學習交流使用,下載後請24小時內刪除,支援正版,喜歡的請購買正版書籍 電子書下載(皮皮雲盤-點選“普通下載”) 購買正版 封頁 編輯推薦 “如果我有一個超級重要的軟