做web前端開發有前途還是寫Java后臺開發有前途?
關于這個問題,我之前有寫過一篇文章《還在為學java還是web前端而糾結嗎?看看我怎么說》,文章鏈接:https://www.toutiao.com/i6388797985173537281/
這里我將文章中的內容再復述一遍。
最近總是有人會問我類似于這樣的問題。我是一個大一大二的學生,以后想從事編碼的工作,我是該學習java還是web前端啊?或者是我非計算機科班出身,想從事程序員的工作,是該學習java還是web前端啊?
對于這樣的問題我該怎么回答呢,我只想說聽天由命吧,抓鬮抓到哪個學哪個。哈哈,當然這只是開玩笑的,對于我們未來的方向選擇必須要慎重,在我講解自己的看法之前,我們先來看下一個程序員界的段子。
C程序員看不起C++程序員,C++程序員看不起Java程序員,Java程序員看不起C#程序員,C#程序員看不起美工,周末了,美工帶著妹子出去約會了...剩這群程序員在加班。
沒想到,最后美工成了人生贏家,這樣一來大家是不是都想說我還是去做美工吧。如果真是這樣,那就too young too simple啦,周末美工約到妹子高興了,程序員哭了,而等到發工資的時候就該美工哭了,程序員笑了,結果還是程序員笑到了最后。
這里可能就有很多人要說了,都說PHP是世界上最好的語言,你為什么都不提一下PHP呢?關于這個問題,我只想說,沒有最好的語言,只有最適合的語言,當然如果你有什么想說的歡迎在評論區討論。
切回正題,該如何選擇Java或者Web前端呢?下面分幾點述說
看興趣,看興趣,看興趣
無論做什么開發,永遠要以興趣來驅動自己學習。先大致的說一下,Java學習是一個需要耗費長周期的過程,考驗一個人的邏輯能力,如果你現在還在學校,時間比較充裕,建議從學習Java開始。相比較而言,Web前端門檻較低,入門稍快,可以在短時間內看到收益,但是由于前端變化特別快,需要永遠保持積極學習的態度,如果你急需找工作,沒太多時間,可以選擇Web前端開發。不管你選擇哪個方向,到最后都會有一個好的發展。
從上面這張圖片可以看出,不管是哪個方向,需要學習的東西都很多,那么我們該如何確定自己的學習路線呢?
Java學習路線(1)首先你必須得學習JavaSE,JavaSE是你做java web開發的基礎,不管書籍還是網上視頻,在講解JavaSE的時候都會講解的很透徹,可以跟著進度一點點的學下去。不過如果遇到swing,jFrame,AWT的章節可以直接跳過,現在已經用的特別少了,而且不影響后續學習。在這里小編推薦幾本書,《Thingking in Java》、《Java核心技術》、《Java從入門到精通》,書籍不需要太多,能看完一本并跟著教程多敲demo就足夠了。不過我還是推薦看視頻學習,看視頻會讓你的大腦更加集中。
JavaSE部分的內容在筆試面試的時候特別容易會遇到,而且都是涉及jdk源碼級別的,需要了解底層數據結構設計,像ArrayList和LinkedList,HashTable和HashMap等經典的問題。不過如果只是作為初學者可不必要注意這些,按照書籍或者視頻的節奏來就可以。
(2)XML學習,在使用的很多框架中都是通過XML文件進行配置的,這個也必須掌握。
(3)JavaEE部分,JavaEE的生態特別龐大,我們無法學習完所有的知識點,我就按照重要程度來說明學習的先后順序。首先是Servlet,這是必須要學的,像Struts2和SpringMVC都是基于Servlet的封裝,推薦書籍《深入體驗Java Web開發內幕-核心基礎》和《深入體驗Java Web開發內幕-核心基礎》。然后是JSP部分,因為目前基于純HTML的開發已經越來越多,所以JSP部分可以不必深究。
(4)Spring和SpringMVC,Spring作為目前Web項目必須集成的框架也是一定要掌握的,推薦書籍《spring實戰》。有人經常拿Struts2MVC和SpringMVC來作比較,但由于Struts2存在的漏洞( 前段時間爆出的京東數據泄露事件就是因為Struts2漏洞造成的),讓很多公司都放棄使用Struts2,轉而使用SpringMVC。
(5)數據庫相關知識,首先要懂得數據庫相關理論,推薦書籍《數據庫系統概念》了解重點概念,然后就主要是SQL語句的學習了,可以在w3school上按照教程學習,具體能掌握一到兩種數據庫就行
(6)數據庫連接JDBC,原生的JDBC語句要會編寫
(7)持久化層MyBatis或者Hibernate,兩者在使用方式上稍有差別,Hibernate更加面向對象化一些,而MyBatis在處理起SQL時更加靈活,目前好像MyBatis更加火熱一點。
(8)Ajax,目前Ajax技術運用越來越廣泛,Ajax技術也是一定要掌握的
(9)Maven,作為java中十分有用的包管理工具,學習它是十分有必要的
(10)版本控制工具SVN或者GIT,個人推薦使用GIT
前端學習路線如果你選擇了前端,首先歡迎你入坑O(∩_∩)O,你將會在一片汪洋大海里越陷越深
(1)前端最先讓我們想到的就是頁面了,那么最基本的HTML+CSS是一定要學習的,推薦學習書籍《CSS權威指南》
(2)頁面上還包括DOM處理與一些數據邏輯,所以JavaScript也是一定要學習的,推薦書籍《Javascript權威指南》,進階書籍《Javascript高級程序設計》
(3)當我們學習完基本的頁面知識后,便可以使用類庫來簡化我們的代碼,提高效率。CSS方面可以進階到Less或者Sass;如果是針對DOM處理,javascript方向可進階到jQuery,推薦書籍《jQuery 實戰》、《鋒利的jQuery》
(4)當我們真正會了以上一些內容后才能說自己前端入門了,而且好戲才剛剛開始,ES6作為未來各種前端框架支持的主語言是一定要會的。前端再細化的話會分為PC端和移動端,如果重點在PC端,應該學習AngularJS,推薦書籍《AngularJS權威指南》,不過由于AngularJS的版本更新速度很快,尤其是1.0到2.0版本的升級,簡直是面目全非,相當于要重新學習一遍。AngularJS2.0版本是用的Typescript語言編寫的,這就要去學習Typescript,而Typescript又是基于ES6的,這些內容都可以根據官方文檔進行學習。
(5)如果重點是在移動端,則可以學習Vue.js和React Native,Vue.js是由國內尤大神寫的,是一個前端輕便的MVVM框架,而且目前Vue生態也已經漸漸豐富了起來。React Native用于移動端十分便利,可以參考官方文檔進行學習,不過它存在的虛擬DOM概念需要我們去理解,而且所有代碼都是Javascipt對象的編碼方式也有一定特殊性,需要多加練習才能慢慢理解。
(6)不管是哪種框架,在編碼后都需要代碼編譯,壓縮,打包等操作,這個時候構建工具就出現了。目前的構建工具層出不窮,大概有十幾種,我們無法學完全部的構建工具,但是可以選擇其中比較重要的進行學習,典型的就是gulp+webpack了。
(7)當我們學完以上一些東西后,總想著朝全棧的方向走去,這個時候就體現出NodeJS的意義了。NodeJS基于javascript編寫,卻能夠處理服務器端邏輯,實則為一大突破,推薦書籍《NodeJS開發 指南》、《NodeJS深入淺出》。NodeJS作為服務器端開發語言,可以學習Express框架和KOA框架,順便比較一下與傳統的服務端Java語言處理起來有什么不同。
(8)版本控制工具GIT
總結還是那句話,不管選擇哪個方向學習,都要是自己最感興趣的。而且不管是哪個方向都需要通過不斷的練習來積累經驗,請記住“一萬小時定律”。
學習Java就需要時間來沉淀,目前Java生態已經這么龐大且穩定,我們只需要慢慢地深入就會有成果。
學習前端就要抱著大浪淘沙的心態,由于前端發展極為迅速,可能自己學習的東西沒過多久就已經過時了,但是也要抱著平和的心態去面對,并積極學習更加新穎的知識。
目前已經在頭條上發表過一百多篇關于前端開發的文章了,得到的反響也比較好,后面會持續更新,喜歡的可以關注下噢~