客戶端產品一般是用什麼編程語言寫的?

你知道的客戶端產品是用什麼開發的,包括互聯網和移動互聯網產品,請舉例具體分析


語言:

電腦:c#、c++

手機:obj-c、java、swift

框架:

微信電腦版:duilib

slack:electron

微軟系的MFC

輪子哥的gaclib@vczh

可是你究竟想知道什麼應用的框架呢?


我們現在的方案是這樣的,用Rust來寫業務邏輯,用Neon來做中間連接,用Electron來做UI層。

用Rust來寫邏輯雖然一開始入門的門檻高了一點點,但是上手之後比Cpp還是有優勢的。用neon來連接rust和node真的是完美。就是要寫一層轉換在裡面。

Electron已經滿足了PC端的大部分系統,如果是必須支持手機Pad之類的移動端的話,就換用QT的QML來做UI層。

至少到目前為止我們還沒有太高的顯示性能要求(遊戲客戶端那種性能要求)。

Electron的優勢是可以用HTML/CSS來寫界面,前面方案做完了業務邏輯寫好了,就可以請UI姐姐來幫我們美美的設計一下了。還可以請我們的前端小妹妹來輕鬆的幫忙寫界面。

Electron 1.7 的chrome版本是58,已經默認開啟WebAssembly,這個還是比較有想像力的。

構建、打包啥的都是現成的套路。

最後package直接用electron-forge 。

至於兼容老舊操作系統的事情,我們現在不是太考慮的。

講起來都容易,背後其實都是血淚。。。

electron-userland/electron-forge

neon-bindings/neon

electron/electron

rust-lang/rust

WebAssembly

-----------------

交代一下背景和需求。

我們之前的客戶端都是Windows版的,N年之前寫的,沒有跨平台編譯能力那種。

現在幾乎是從零開始,要做一個Windows和Mac要保證能用,Linux主流版本要能用的客戶端。

所以我們選方案可以選比較新的,沒有歷史負擔的東西。而且我們是小團隊,除了錢和時間,可以沒有太多其他顧慮的去做方案。這也是不選C/Cpp的原因。

我們大多數公司有Web開發的能力,但是不一定有native UI開發的能力;我們很多程序員哥哥會寫webservice那樣的業務邏輯,但是不一定能很快上手nativeUI那樣的開發模式。

所以Electron的一個優勢是利用上了原有的Web能力,重點是做了一下資源整合,仍然可以套用原來的Web開發模式,只是把原來的數據交互由HTTP通道替換成JavaScript和native對象交換(這一部分稍微有點坑,不過直接用JSON做數據交換就好了,損失一丁丁點的性能)。

為什麼不做純粹的Web項目呢?

需求使然,要從客戶端去做一些事情。

由於正常瀏覽器安全策略的限制,瀏覽器是不能方便的訪問文件系統,底層介面等。而且讓客戶更新瀏覽器到最新版本或者指定客戶用某個版本的瀏覽器?還是想辦法讓他們裝個RePackage的Electron吧!

為什麼不用Nodejs寫業務邏輯,而要選擇Rust?

選Rust除了是因為不想寫C/Cpp之外。

因為Rust是編譯型的語言,編譯之後一般人是看不到代碼指令的。而Nodejs始終是個腳本,混淆了還是個腳本,用個文本編輯器就可以猜代碼來了。

Nodejs也像Python一樣可以編譯成二進位的東西發布,想想算了吧,我還是寫Rust去吧 。

不直接用Nodejs的另一個原因,node_modules是個天坑,會把應用體積變得巨大。

QT做為備選方案,在要支持Electron不支持的地方用。現在看樣子是暫時用不上了。

遊戲客戶端那樣性能要求嚴苛,還有很多直接gpu操作的,需要一個大型團隊來完成的。幾乎是沒辦法這樣來選型和研究的了。

-----

Mac下打包的目錄截圖


Windows/Windows Phone: C++ C# (WPF / UWP)

Ios: C# (Xamarin) 或 oBJc (配合C++)

aNDROID: C# (Xamarin) 或 jAVA (配合C++)

遊戲(任何平台):C++ 或 C# (Unity)


Electron Qt WPF


QT:有什麼很好的軟體是用 Qt 編寫的?

WPF:WPF的開源項目有哪些?


能開發界面的編程語言基本上都能開發客戶端

手機端就分原生程序,和網站套殼程序,當然僅是針對一般APP

遊戲是特殊APP

原生安卓就是Java,C#

IOS object-c swift

網站套殼程序,界面實際上就是個網站,HTML和css外面套一層瀏覽器,典型的比如新浪微博部分界面就是套殼程序(曾經打開新浪微博出現404 not found)

電腦端同樣可以套殼,當然電腦端大多數客戶端都是原生,可用語言可以說比手機端豐富,能寫UI的都能做電腦的客戶端


移動互聯網產品,ios上的應用是用objective-c.安卓是用java。遊戲開發考慮到跨平台問題,基本都用c++


PC遊戲基本是C++壟斷。

其他客戶端的話,看什麼平台了。微軟的平台用C#,水果的平台用objc,google的平台用java。Linux的平台一般愛用啥用啥(因為基本上你能想到的語言全支持)。


QQ C++


html+css+js+殼(逃


Android客戶端用Java,通過JNI調用C/C++的底層庫,如果有必要的話。


作為一個c++程序員 當然是qt 這種了 不過在這個弱客戶端的情況下 html5之類的在將來一段時間內會成為主流 至於以後再怎麼發展 鬼知道


Delphi


客戶端都是C++開發的哦,QQ,迅雷,各種瀏覽器,office,播放器,圖形軟體


加個沒人提的 macOS(OS X):Objective-C / Swift + C/C++


Android---->java(xml)

iOS->objective-c/swift

Windows->c ++

網頁->html+JavaScript+css


推薦閱讀:

應該把C語言學習到什麼程度?
學習 C 語言需要數學基礎嗎?
怎樣提高自己代碼可讀性?
大學裡教的C語言,與知乎上說的入門編程要學的C語言是同一個東西嗎?
sizeof(list) 如何區分list是變數還是類型?

TAG:移動互聯網 | 程序員 | 編程 | 客戶端 | 信息技術IT | Java | C編程語言 | C |