-
1 # 趣語言
-
2 # 雲上猿人
首先不建議轉,原因如下:
1. Java 工程師供過於求,身價低,而 C++工程師相反;
2. Java 技術快被淘汰了,前段時間剛剛宣佈徹底淘汰瀏覽器端 Java 應用技術,目前 Java 的用武之地只在於 Android 和國企 WEB 系統,其中 Android 的技術棧正在被 HTML5 蠶食;
3. Java 技術體系相當龐大和成熟,學習時間成本相當高,特別是你對 C++的諸多概念已經根深蒂固,轉 Java 難以擺脫 C++的思維定勢;吃透語言半年,領會思想一年,每個框架半年融會貫通,想成為有一定經驗的 Java 工程師至少要 5 年的時間;
4. 雖然 Java 的抽象級別可以很高,做專案架構可以很清晰,但 Java 太重,執行效率太差,編譯和執行環境配置過於煩瑣和複雜( IDE 也幫不了你,因為這些配置都是業務的一部分),我之前給 ICNTV 做 BOSS 的時候由於用小型機堆硬體也無法讓 Java 承受住那樣的高併發,所以最後併發最大的部分還是用 C++寫的;
5. 你身邊會很難遇到優秀的 Java 工程師,大多數人都是可能連 HTTP 協議都沒有學過的培訓生出身,特別是往往編碼習慣很不好。
PS:如果你一定要轉,作為一個兩年都沒有碰 Java 的人也給不了什麼最新的好建議,僅供參考, Java 大牛看到也請放過我:
1. 初學不要去找 Java 與 C++的相似點,很容易被思維定勢帶進坑,總之鄙人不才,覺得用完 C 系再完全理解 Java 的思想挺困難的;
2. Java 完全可以達到讓開發者的精力集中在業務邏輯上,可以完全不用考慮記憶體、協議等等底層問題上,但後期因為效能問題肯定也會不得不研究 JVM 的機制細節;
3. 要研究好每個依賴庫的版本號的相容性,引入的包多了,相容性解決不好是無法編譯透過的;
4. 要了解正在使用的各個元件在當前版本所存在的問題,包括伺服器、容器等,我曾經因為一個問題糾結了 3 天,最後在 Tomcat 官方的 Changelog 中發現是 Tomcat 在特定版本存在的 BUG ,需要構造程式繞過這個 BUG ;
5. Java 有好多的框架,如果你所在的團隊是求穩的話,那麼恭喜你有可能要去學用得最廣泛的 SSH 框架,通常是 struts(或者 Springmvc 或者 Struts2)+spring+hibernate 這樣的組合,這些東西每一個拎出來都很抽象,很難理解,不過一旦你完全理解了就非常好用,畢竟抽象級別高了。Java 歷史悠久,極度成熟,想知道看什麼書比較好直接去網上搜一艘就可以,相信沉澱這麼多年一定是有很多精品的教材的。
-
3 # IT人劉俊明
C++程式設計師轉向Java開發領域還是相對比較容易的,一方面C++語言與Java語言都同屬於面向物件程式語言,所以在程式設計思想上還是比較統一的,都是基於封裝、繼承和多型來組織程式碼,另一方面Java語言在程式碼編寫方式上與C++語言也有很多類似的地方,Java語言和C++語言也都可以歸為C語言體系。
對於C++程式設計師來說,要想轉向Java開發領域,需要面對以下三方面障礙:
第一:Java的技術體系比較龐大。與C++語言相比,Java語言的技術體系比較龐大,由於Java語言自身的特點,在學習Java語言的過程中,還需要學習一系列開發框架,以及模組化程式設計的工具,這對於C++程式設計師來說具有一定的挑戰。
第二:Java的應用場景更多。與C++語言主要應用在各種容器開發領域不同,Java語言的應用場景非常多,也是目前最為流行的幾種全場景程式語言之一,可以用於Web開發、手機端開發和大資料開發等等,所以C++程式設計師應該選擇一個主攻領域,然後再製定相應的學習計劃。
第三:Java的開發方式更靈活。相對於C++的開發方式來說,Java語言更注重按角色開發,在當前雲計算平臺的支援下,Java語言基於PaaS相關服務能夠在很大程度上拓展自身的開發邊界。所以,C++程式設計師轉向Java開發領域,還需要重點關注一下雲計算相關知識,尤其是應該掌握基於雲計算平臺的各種開發方式。
-
4 # 生活桃
1.如果你c++功底比較深厚,在某些方面比較精通,那完全沒有必要轉語言,因為c++至今仍然發揮著它巨大的作用,而且在很長一段時間內亦是如此。比如在做遊戲伺服器方面,還有底層硬體方面,當然也有語音、影片等當今正火熱的主題。既然這樣,那又何必轉語言呢。任何一種語言,只要你專得深,比較精通,不會沒有用武之地的。
2.至於java語言,毫無疑問,最近很多年都是排在程式設計師開發語言榜首,也是因為這些年網際網路的快速發展,java在做web應用程式方面的確也有它的獨特優勢。而且也有很多開源庫。同時java也是跨平臺的開發語言,也就是說開發的程式既可以部署到linux平臺,也可以部署到windows平臺,這優勢就比較明顯了。
3.要轉語言的話那是不是一定要轉java呢,其實不然,java雖然會繼續佔據大部分市場,但是最近兩年也有心形起來的快速發展的語言,比如python,在大資料+人工智慧高速發展的今天,python也受到很多人的追捧。它必將也肯定會帶出一片天地。而且人工智慧也是國家未來5~10年的重點規劃專案。所以也可以考慮轉python,現在對這方面人才的需求也是相當大的,而人才缺口更大。相應的收入水平普遍偏高。
4.這是我個人的理解,雖然我這麼多年也親身經歷了很多開發員,但是還是建議不要盲目轉語言。把一門內容學精,也是可以發揮極大價值的。也會有閃光點的。
回覆列表
忙裡偷閒,到了這個時間終於得空寫一篇早想寫的文章。其實本文的標題有些不太準確,C++程式設計師寫Java程式碼不是說就非得轉行寫Java,拋棄C++,而只是多了一個選擇而已。兩種語言各有優勢,這裡我們且不談語言之爭,就假設有朋友需要這樣一種角色轉變,寫了多年的C++,一時間突然有專案需要用Java來寫。
Java語言較C++語言語法上有很多的相似之處,但是本質上是有區別的。一個合格的C++程式設計師在他寫下每一行程式碼的時候心中必然會有整個程式執行起來以後,程式碼中的每一個變數是如何儲存的,堆疊是什麼結構的,哪塊的記憶體如果處理不當會出大麻煩。但是Java程式設計師就有些不同,由於Java語言規範和Java虛擬機器規範是分開的,再加上自動GC,操控性有些差,但是這也不是什麼壞事,畢竟手動管理記憶體有其複雜性。
個人認為對於C++程式設計師來說,Java語法完全沒有問題,可以說超過80%的結構都是一樣的,所以這不是問題。但是學會了英語語法你就能過英語六級了麼?就能和老外開會聊天了麼?不一定吧。對了,我們還要學的是方言,慣用法和模式,所謂入鄉隨俗,進了Java的世界我們就要按照Java的規矩來玩。比如物件需要如何建立,兩個物件如何比較,列舉型別如何使用,泛型程式碼如何寫,併發程式碼在什麼情況下有哪一種上層建築來實現比較好,什麼時候在程式碼中丟擲什麼樣的異常,什麼時候使用反射。個人認為一個對技術比較執著的人可能也至少需要3個月的專案磨鍊才能出師,當然我說的前提是這個C++工程師已經有了相當的基礎,這樣才能站得一山而望另一山高。
所以個人認為的C++程式設計師轉Java的捷徑是:學習Java中的慣用法,模式再加上專案磨鍊。
另外需要說的對C++程式設計師的一個優勢,由於主流JVM都是C/C++程式碼寫成的,對於喜歡深度遊的朋友完全可以庖丁解牛,只要你的除錯技術夠,一切盡收眼底,此方法同樣適用於JavaScript,因為V8也是C++寫的..