03.03 如果讓你選擇,你會選擇學Java還是web?

地球旋轉的原因


Java目前在web開發領域有大量的應用,問題中提到的web應該指的是web前端的內容。其實這兩個方向都不錯,作為程序員應該都系統的學習一下。至於選擇哪個方向深入學習,應該結合自身的基礎條件進行判斷。如果有較好的數學基礎,或者是理工科專業出身那麼建議深入學習一下Java,可以為以後確定一個主攻研究方向做準備。

下面就以Java為例來簡單探討一下方向的問題,目前使用Java進行開發的領域大致集中在以下幾個方向:Web方向、移動互聯方向、大數據方向、雲計算方向、機器學習方向。這些領域都可以使用Java作為開發語言來實現具體功能,作為目前最流行的開發語言之一,Java的適用範圍還是比較廣泛的。


Web方向、移動互聯方向


Web開發可以說是Java的看家本領。Java以Applet起家,中間經歷了多次重大的調整,之所以能成為目前使用最廣泛的語言之一,一個重要的原因就是它在Web開發領域優異的性能表現。

Web開發的選擇目前集中在三個開發語言上,分別是:Java、PHP、Python,其他語言佔的份額較小。這三個語言中Java是性能的代表,PHP是方便的代表,Python是簡單的代表,可以說各有千秋。注重性能的電商平臺和大併發的移動互聯平臺目前大都選擇性能更為優異的Java作為開發語言,這也是為什麼Java幾乎是程序員必須學習的開發語言。

Java還是Android平臺的開發語言,所以做Android app開發的程序員必須掌握Java語言。目前做Android開發的程序員有不少都是從Web開發轉過來的,Java程序員用很短的時間就可以轉換到Android開發中。我本人就是自學了一週左右的Android,然後就開始做Android項目開發了,所以Java程序員做移動互聯方向也有很多優勢,前後端都能搞定。


雲計算方向、大數據方向


雲計算與大數據雖然是兩個大的方向,但是其實它們並不分家,可以說大數據就是雲計算發展到一定階段的必然產物。雲計算涉及到諸多技術,總的來說提供三種服務:IaaS、PaaS、SaaS,也就是基礎設施即服務、平臺即服務以及軟件即服務。

雲計算和大數據平臺組件大量採用了Java語言進行開發,其中大名鼎鼎的Hadoop就是採用Java語言編寫的,還有Zookeeper、Hbase、Hive、CloudStack等開源框架都是採用Java語言編寫的。其中亞馬遜雲計算平臺以及Oracle雲計算平臺解決方案中也有大量Java開發的身影,所以做雲計算和大數據方向學習Java還是很有必要的。

當然,在雲計算和大數據方向還有一些語言比較突出,也是最近幾年發展比較迅速的語言,比如編寫Spark的Scala語言,開發Docker的Go語言,以及開發OpenStack的Python語言等等,作為程序員來說掌握這些語言對進行大數據以及雲計算方向的開發會有一定的幫助。


機器學習方向


機器學習方向作為人工智能的分支之一,在最近幾年得到了快速的發展。Java以其高效的運行速度在機器學習領域也有廣泛的應用,我在做機器學習研究中就使用Java完成了很多算法的具體實現。


說到機器學習一定要提一下Python,雖然很多機器學習項目最終使用Java實現的,但是在最初做研發的時候,大部分程序員會選擇使用Python。得益於Numpy等庫的強大,在機器學習領域使用Python是一個聰明的選擇。

所以作為程序員來說沒有最好的選擇,只有最適合的選擇,多學一些開發語言並不是壞事。

我在頭條上陸續寫了關於大數據、雲計算、java編程、Python編程的系列文章,關注我就能看到,如果這篇文章讓你對Java、大數據、機器學習有一個新的瞭解,那麼留下你的關注吧,我在頭條等著你。


IT人劉俊明


為什麼我會選擇走 Java 這條路?
作者:黃小斜
文章來源:微信公眾號【程序員江湖】
最近有一些小夥伴問我,為什麼當初選擇走Java這條路,為什麼不做C++、前端之類的方向呢,另外還有一些聲音:研究生不是應該去做算法方向麼,本科生不就可以做開發了嗎,為什麼還要讀研呢。其實吧,這個問題擱在不同人身上,回答可能也是完全不一樣的。我可能還是主要以我的角度出發,結合一些讀者的問題,來說一說為什麼要選擇Java這條路。
談談我的技術方向選擇
我最早接觸的語言應該是c,再後來又接觸了前端、php、C#等語言,對這些語言的瞭解也僅限於懂得基本語法,寫過一些小demo而已,那時候覺得掌握一門語言就是掌握它的語法就行了,於是會在簡歷上寫,瞭解各種語言,現在想想實在是太可笑了。
不過真的很多初學者都會這麼認為,覺得自己不管選哪個方向都可以,這是因為他們不知道自己的技術方向到底是什麼,因為他們不管哪個方向都不精。
後來慢慢接觸了Android開發,能自己寫一些app,覺得這個方向還挺有趣的,於是想著以後乾脆做這個吧。不過我那時候也明白自己離進大廠還有很遠的距離,於是打算考研。巧的是,讀研前的那個假期,去了一家公司實習,做的是Java Web,那時候才覺得Android比Java Web簡單多了呀,完全不需要學那麼多框架、技術啊,於是更堅定了做Android的決心,只不過那時候也同樣發現了,Java web是更加熱門的方向,崗位需求量也更大。
讀研的時候,一開始也是打算做Android方向的,買了各類Android書籍開始啃,那時候剛好遇到了個實踐課程,讓我們選方向,有Java、Android、C++等等。當時妹子做前端,為了帶上妹子一起做項目,乾脆就選了Java Web這個方向,想著應該不影響我做Android啊,於是接下來的時間裡就開始學Java Web了。
時間一長,發現這個方向也沒有想象的那麼難,相反還挺有意思的,畢竟能用到各種各樣的框架,技術棧的內容也很豐富,看起來好像比Android的技術含量高很多,加上自己之前學過Java,也有Java Web的學習經歷,簡歷上也能寫的好看一點,於是一不做二不休,就開始做Java方向了。就這樣,我找到了第一份Java實習,看了一遍Java後端書單,慢慢地在這條路上越走越遠,後來我才發現,Java Web遠沒有想象中那麼簡單,Java後端技術棧也遠不止Java Web這點內容,特別是對於大廠來說,要掌握的東西實在太多了,比如分佈式、網絡編程、中間件等等。
所以,選擇方向這件事,有時候就是看興趣,看機遇,看你能堅持多久,如果你對一個方向感興趣,並且願意持續學習,不斷深挖,這個方向可能就適合你,當你在這個方向投入了一定時間之後,有了一定積累和經驗,就不太容易再改變方向了。
談談各個技術方向的前景
之前也有很多讀者問過這個問題,做哪個方向更有前景,更有錢景。雖然我只做過一個方向,但是對其他方向也有一些瞭解和涉獵,不敢說了解得非常多,但是結合自己身邊的同學、朋友的情況,還是可以給出一些比較中肯的建議。
其實我最早打算做的是遊戲開發的,所以我們先聊聊遊戲開發這個方向。
網易遊戲在前幾年對遊戲開發的招聘要求是985碩士以上學歷,當時我就是衝著這個要求考了研,後來卻沒有去做遊戲開發,主要原因是遊戲開發主要用的是C++,並且主要的崗位要求是客戶端方向的技術,比如圖形學、引擎技術,以及對C++的掌握程度。
當時自認為有一些Java基礎,不願意轉C++,同時也感覺遊戲行業大廠太少了,除了騰訊網易就沒有什麼大公司了,職業發展的空間可能也不大。自己雖然愛玩遊戲,但是做開發和玩遊戲畢竟是兩碼事。當然,近兩年遊戲開發的崗位需求其實還是很大的,因為現在做遊戲開發的人太少了,導致網易遊戲放寬了研發工程師的標準,只要求211以上即可,所以,想要從事遊戲開發的朋友,其實現在進大廠的機會可能比之前更多了。
說完遊戲開發,說一說C++,C++方向和Java一樣主要是做後端的,雖然遊戲開發大部分也用的是C++,但是C++服務端的需求量確實沒有Java大,加上C++的學習難度稍微搞一點,所以我沒有選擇這個方向。
當然,現在做CV等算法方向的同學都會用到C++,所以相對Java來說,C++方向選擇崗位的範圍可能也更多一些。不過,正如Java也能做大數據開發一樣,選擇方向並不是選擇語言,比如你做遊戲開發或者算法方向,要學的遠不止C++,做大數據方向,Java也只是很小的一部分而已。
除此之外,前端、測試、移動端等方向也有很多機會,這些方向的學習難度可能要稍微簡單那麼一點,所以有很多女生會選擇這些方向,如果你想進大廠卻對自己不是很有信心,那麼這些方向也是很不錯的選擇。
研究生就應該做算法麼?
再聊聊現在很火的人工智能、機器學習方向,這個方向說實話最難的地方在於理論知識,也就是機器學習理論、算法模型、統計學知識等內容。很多人對這個方向趨之若鶩的原因,很大程度上是因為這個方向的薪資高,並且相對工程方向來說,工作強度要低一些。
但是,這麼熱門的方向,競爭有多激烈就不用多說了,大廠的算法崗簡歷多到數不勝數,你沒有論文、實習經歷或者比賽為你背書,基本上連簡歷篩選都過不去,就算你的簡歷很漂亮,但是很多時候由於崗位需求量不多,只要你不是特別優秀,就可能被安排到研發崗位,這也是我身邊很多同學親身經歷的。再有一點,就是有很多算法方向的博士畢業生也會和你競爭,這就有點嚇人了,總之,算法方向還是比研發方向更加有難度的,不管是學習難度、面試難度,還競爭激烈程度,都更加明顯。
很多人覺得讀研就應該做算法,本科生才做研發,我對此不敢苟同,因為主要還是還看個人實際情況,如果你想進大廠,那麼至少本科的時候就要有很紮實的基礎實力,這對大部分同學來說都是比較困難的,如果你不是名校出身,我覺得進大廠的難度還是比較大的。
很多名校背景的本科生確實可以拿到大廠的研發offer,於是他們會覺得沒必要讀研,但是對於我這種跨專業的人來說,研究生才是我開始的第一步,跟他們沒有什麼可比性,所以對於從零開始的我來說,做研發比算法要靠譜的多,對於很多要轉行做程序員的人來說,也是一樣的道理,應該選擇更加符合自己實力的崗位方向,不要好高騖遠。
以上內容純屬個人觀點!
文能碼字,武能coding,是我黃小斜,不是黃老邪噢。

黃小斜


現在大廠都是前後端分離開發,分工越來越細。前端技術發展很快,要不停的學習,收入不差,天花板相對較低。java技術棧比較穩定,但是深度很深,要學習的東西很多,天花板較高,容易深入接觸業務,也很容易後期轉管理,前端轉管理幾乎不可能。


分享到:


相關文章: