回覆列表
  • 1 # 胡矣

    你好,軟體開發分前後端,而且node也可以寫後端。如果題主想往後端發展,我的建議是選擇java。原因如下:

    1.java常年霸榜開發語言排行榜。

    2.java相比php更適合大型應用。

    3.java開源社群非常活躍,資料非常多。4.java開源類庫非常多,可以快速搭建應用。

    5.阿里巴巴重度使用java,學好了可以進阿里系公司。

    好了,題主快速學習java吧。

  • 2 # 李東bbsky

    建議你選擇一個學習方向,既然你已經熟悉了Node,其實去做前端開發會更好一些。不要把知識學得過於寬泛,還是要專精某個技術。

    當然前端開發也需要你掌握後端知識,你可以學PHP或者Java都差不多,如果你是學生,時間比較充足,可以學Java;如果時間不多,建議學PHP、Go來充實自己的後端知識。

    如果你選擇的是後端開發方向,那無疑更推薦學習Java了,如果是轉型的話推薦學習Golang。

  • 3 # java攻城獅

    我朋友組是完全拿 node 做後端用的,這跟一般的node專案組有很大不同。很多公司其實用node做中間層的,銜接前端和更後端,但是我們不是,我們是直接執行在最後端。

    但是目前做類似操作的公司,少之又少,縱觀整個後端市場,肯定是java 的份額最大,這個毋庸置疑。首先是歷史原因,Java從網際網路伊始面世,其設計初衷就是就是面向網際網路的,它的各種理念放到今天也是完全不過時的。其次,是它嚴謹的語法結構,面向物件的思想,在漫長的發展歷程中,它已早然作為工業化標準語言被各大公司接受。正是由於它的標準,才會讓其在高校教學之中佔據一席之地,才會培養出千千萬萬的Java開發者,才能長期佔據程式語言榜前兩名的成績。推動一門語言進步的,永遠是開發者,開發者多了,企業就更會選擇這麼語言作為自己的技術選型,原因很簡單,好招聘。

    不過Java也是有其缺點的,首先是標準化帶來的冗餘工作。作為一門面向物件的語言,其優勢在於處理多型問題,但是很多時候,我們的網路請求(確切的說以http為代表的網路請求)是一個線性問題:前端發起請求,後端接受請求,校驗引數,操作資料庫,返回處理結果。顯然函數語言程式設計能夠讓這種線性問題的處理變得更簡單。所以才有 php node.js 這些指令碼語言才有了大展身手的地方。

    我們這裡單講 node.js ,我們知道 JavaScript 這門語言語法簡單,屬於弱型別,變數定義不用受型別的約束。但是這屬於一柄雙刃劍,沒有型別的約束,就從語言層面上少了一層防禦性設計,繼而會產生隱藏在業務邏輯中bug,而且這種 bug 在平時還不易發現。同時,由於沒有型別宣告,在程式碼可讀性上,天然也會比 Java 這些靜態語言要差一些。於是乎,微軟的 typescript 就橫空出世了,它從語法上仿照 c# Java ,將型別、面向物件等特性引入到自身語法中。不過 ts 僅僅是 JavaScript 的超集,如果想在 Node 上執行,還是得編譯成純 js,然後再執行,無形中增加維護的成本。類似於阿里之類的大公司確實是使用 typescript,小公司不是很清楚。

    前面講了很多內容,大都是以 http 舉例,具體到 長連線 層面。兩者各種代表性的庫,node 有 http://socket.io,Java 有 netty (其實Java的庫還有好多,這裡僅僅舉一個例子)。socket.io 基於 websocket,netty 是一個更底層的 TCP 庫,可以在上面插入各種應用層協議,普通 TCP 、websocket ,甚至 http。這裡不得不提的是,node 的單執行緒機制,所有的使用者程式碼都在一個執行緒中處理,如果你的程式碼從傳輸層開始寫起,那麼資料包接收、資料包解析、資料包邏輯處理,都在一個執行緒上,這樣就略顯尷尬了。Java 本身的處理粒度就是執行緒級別的,所以可以選擇講不同性質的任務分配到不同的執行緒池中,降低各種任務相互擠佔的可能性。

    當然,最後還有一個老生常談問題,關於 node 中計算密集型操作導致的主執行緒堵塞問題,也許你會想到使用 c++ 擴充套件,但是如果你的 c++ 程式碼不是執行在 libuv 的執行緒池中的話,即使寫 c++ ,依然是堵在主執行緒,只是時間長短而已。

    囉嗦了這麼多,總結一下:

    node 和 java 各有優劣應用層的邏輯,node 開發更快速些,如果到了傳輸層,node 的開發反而不是很順手。由於 node 基於 V8,所以線上程模型方面還是比較受限的,起碼目前如此,雖然有 webworker,但是目前沒有看到有成熟的使用案例。

    其實,我還想順便聊幾句 go 語言的,感覺自己不是很專業,而且有些跑題,算了,就說這些了。

  • 中秋節和大豐收的關聯?
  • 滷豬踢怎樣做發好吃?