-
1 # 幣小孩
-
2 # 碼靈
C++與Java結合開發的情景是很多的,我簡單介紹下:
1、大資料處理
Hadoop採用java編寫,因而Hadoop天生支援java語言編寫作業,但在實際應用中,有時候,因要用到非java的第三方庫或者其他原因,要採用C/C++或者其他語言編寫MapReduce作業,如果用C/C++編寫MpaReduce作業,可使用的工具有Hadoop Streaming或者Hadoop Pipes。
Streaming 是利用程序之間的標準輸入輸出流來進行通訊,而 pipes 是利用 socket 來通訊。由於 hadoop 是用 java 開發的,所以需要做的就是將其他語言跟 java 程序通訊,即跨語言的通訊。主要的問題是資料型別的轉化問題,因為最低層都是走位元組陣列的方式。在 pipes 包裡面實現了 c/c++ 與 java 之間的通訊。通常會選用Hadoop Pipes方案。
2、伺服器+多客戶端
就如你所說的,傳統的桌面應用(cpp)加上web和多端支援(java),一般而言,使用C++作為後臺服務更為合適,加Android或Java Web。很少人會選擇使用C++來寫Web端的,開發效率太低,好的框架太少。
3、安卓上的SDK和NDK
最近因為Tensorflow的火熱,需要在手機上跑深度學習的模型。Tensorflow是用C++開發的,Android是Java。編譯Tensorflow 的Android app需要用到SDK與NDK,首先下載這兩個工具集。不過我推薦先下載Android Studio,使用Android Studio管理SDK與NDK,這樣下載,管理和升級比較方便,而且畢竟以後可能還要調整demo,要用到Android的開發IDE。下載過程就不詳細描述了,Android開發者網站有很詳細的步驟。有了SDK與NDK後,就可以著手利用我們重訓練的權重值檔案與標籤編譯app了。
-
3 # 狂牛f
C ++和java結合的場景其它人已經說得差不多了。我來說說以前參與過的用到C++和java一個專案(東直門交通樞紐綜合資訊平臺),專案的ui 是java web 開發,頁面上顯示平面圖及攝像頭的位置等,可以隨時調取攝像頭的影片,顯示各種監控資料,比如人流情況、汽車到站情況及各種報警等資訊,java 只做web 展示這塊,而各種監控資料的來源、控制基本都是C ++對接,對接方式有串列埠通迅、socket 通迅、opc 等。可以看到,C ++一般用於底層通迅等
-
4 # 井151276607
產生這樣的問題是由於技術水平提高過程出現了瓶頸,根源在基礎。java是跨平臺的,其許多特點和長處都源於此。使用c++程式碼很容易損壞java的誇平臺性。除非必要儘量不要引入c++程式碼。c++程式碼比java程式碼效率高是有前提的,你寫的程式碼很可能除了加大除錯和排錯工作量外就剩下平臺依賴性了。不考慮跨平臺性或提供整合解決方案的例子很多,許多大資料環境和工具都是java與c++混合開發的。
-
5 # Hearts-blood
結合開發的話可以透過JAVA的JNI介面實現與本地的程式或者程式碼進行互動,舉個例子,比如eclipse rcp開發中,要實現一個網路控制檯列印的外掛,這個外掛的框架可以用java寫,接收執行緒也可以用java寫,但考慮到如果來大量需要列印的包時候,這個java接收執行緒就會繁忙,也就是效率低下,造成需要列印的命令列印很長時間,或者直接丟包,這個時候可以採用jni介面,呼叫c或者c++程式碼實現底層的接收或者列印,java的殼,c的芯。
回覆列表
java底層不都是C++,C語言。java是高階語言,面向物件,可debug。程式碼比C++,C簡單,但是效率比不上C++,C。其次看應用場景,有C++做桌面程式比較合適,你用JavaSwing寫寫看。windows是微軟的,新系統會預設帶相關元件,只要C方面的程式是可直接執行的。Java寫的就不一樣,必須要整個jdk,為什麼要jdk百度就知道了,就是能讓java程式碼能在環境下執行,好處是各大系統都可以支援java程式。C方面就不一樣了。C#也可以做桌面程式,操作容易,控制元件拖拽,但是C++更有優勢,速度快。JavaWeb方向,一般要掌握java基礎+高階,然後就是JavaWeb相關框架,比如:spring springmvc mybatis strus hibernate 等... JavaWeb方向框架挺多的,光是一個spring就佔半邊江山...還有很多...希望問主自己查閱資料...
同樣實現個東西,以下說法出自於個人。
1、C要寫1000行程式碼才實現,而效能是最好的。
2、Java可能只需要100行,效能中等。
3、python可能只需要10行就完成了,效能最差。