桌面應(yīng)用軟件開發(fā)語言調(diào)查

版權(quán)所有普碎,轉(zhuǎn)載注明吼肥。

桌面應(yīng)用軟件,在操作系統(tǒng)中麻车,通過操作系統(tǒng)桌面窗體展現(xiàn)應(yīng)用內(nèi)容缀皱,并實(shí)現(xiàn)用戶交互操作。編程語言有很多種动猬,但并不是每一種語言都具有支持UI開發(fā)的能力啤斗,很多語言支持UI開發(fā)能力,是有人專門為之實(shí)現(xiàn)的UI開發(fā)支持平臺(tái)赁咙。簡單地說钮莲,需要有專門的語言UI庫支持,如C++中的Qt庫彼水、MFC庫崔拥,Java的Swing、AWT相關(guān)依賴庫凤覆,否則語言是沒辦法進(jìn)行快速UI開發(fā)的(可以通過編程語言調(diào)用系統(tǒng)函數(shù)链瓦,但很復(fù)雜)。

本文僅討論常用的編程開發(fā)語言進(jìn)行桌面應(yīng)用軟件開發(fā)的相關(guān)內(nèi)容盯桦,對(duì)于諸如Matlab的m語言慈俯、Labview以及其他的類似語言,并不適合廣泛的桌面應(yīng)用軟件開發(fā)的情況俺附,將不涉及肥卡。

1. 有哪些語言支持桌面應(yīng)用開發(fā)

桌面應(yīng)用開發(fā)的方式有很多種,一般分成三大類:
一是原生編譯運(yùn)行的開發(fā)技術(shù)事镣,這一類技術(shù)步鉴,通過編譯->可執(zhí)行文件方式揪胃,可執(zhí)行文件直接調(diào)用系統(tǒng)API,完成UI繪制等氛琢。這類開發(fā)技術(shù)喊递,有著較高的運(yùn)行效率,但一般來說阳似,開發(fā)速度較慢骚勘,技術(shù)要求較高。
二是二次編譯或解釋運(yùn)行方式撮奏,這一類技術(shù)和將要說的第三類技術(shù)類似俏讹,但又稍有一些不同,這一類語言是一開始就有本地開發(fā)和UI開發(fā)的畜吊。一次編譯后泽疆,得到中間文件,通過平臺(tái)或虛機(jī)完成二次加載編譯或解釋運(yùn)行玲献。運(yùn)行效率低于原生編譯殉疼,但平臺(tái)優(yōu)化后,其效率也是比較可觀的捌年。就開發(fā)速度方面瓢娜,比原生編譯技術(shù)要快一些。
三是機(jī)箱模式礼预,總是需要一個(gè)運(yùn)行外盒眠砾,才能夠運(yùn)行。這一類雖然類似于基于平臺(tái)或虛機(jī)逆瑞,但是這一類一開始的目標(biāo)不是桌面應(yīng)用荠藤,而是Web應(yīng)用開發(fā)伙单,包括了常見的RIA開發(fā)技術(shù)和主流Web前端開發(fā)技術(shù)获高。這一類技術(shù)桌面應(yīng)用開發(fā)中,不外乎兩種方式吻育,一種是單獨(dú)開發(fā)了基于桌面的機(jī)箱念秧,來提供運(yùn)行平臺(tái)。另一種就是對(duì)機(jī)箱打包嵌套布疼,給機(jī)箱再加個(gè)外殼摊趾,讓機(jī)箱運(yùn)行在外殼上。運(yùn)行效率上游两,經(jīng)過不斷地革新和優(yōu)化砾层,F(xiàn)lash引擎進(jìn)化、V8引擎的出世贱案,總體上能夠滿足要求肛炮。開發(fā)效率上,速度較快,畢竟平臺(tái)支持比較高級(jí)侨糟,很多東西直接拿來用碍扔。
目前比較流行的:

  • 原生編譯:
    C++/MFC(Win)
    Objective-C(Mac)

  • 托管平臺(tái):
    C#/.NET Framework(Win)
    Java/Swing、AWT \*

  • 富客戶端:
    Java/JavaFX \(Sun出的秕重,富客戶端)
    ActionScript/Flex不同、Flash(Adobe Air、Adobe Flash) \
    (Adobe出的溶耘,富客戶端)
    SilverLight(微軟出的二拐,富客戶端)(Win)
    Open Laszlo(挺渣的,我用過凳兵,效率低的不得了)

  • Web式:
    HTML5/H5 + WebKit 卓鹿、Node.Js(NW.JS)、Electron\*

  • 其他:
    Python/PyQT留荔、GTK+ \*
    Ruby TK\*
    Go \* (部分方言支持吟孙,入手要慎重)

  • ** 有年頭的,但也有一些使用量的:**
    VB聚蝶、Delphi

2. 選擇語言的評(píng)判標(biāo)準(zhǔn)

  • 運(yùn)行效率
  • 開發(fā)效率
    貌似杰妓,運(yùn)行效率和開發(fā)效率是一對(duì)矛盾的值,但隨著各類渲染技術(shù)碘勉、引擎巷挥、優(yōu)化的加深,這兩個(gè)值也開始同步提高验靡。實(shí)際上倍宾,下述的評(píng)判內(nèi)容,基本包含在了開發(fā)效率中胜嗓,只有各種依賴高职、支持良好,才能快速開發(fā)辞州,除此怔锌,還有語言的易用性。
  • UI庫支持变过、渲染美化效果程度
  • 網(wǎng)絡(luò)庫支持程度(是否支持網(wǎng)絡(luò)埃元,網(wǎng)絡(luò)庫支持協(xié)議(TCP/IP?HTTP? SMTP媚狰?POP3岛杀?RTMP?))
  • I/O支持
  • 數(shù)據(jù)庫操作支持
  • 算法庫支持程度
  • 其他第三方庫支持程度崭孤,如JSON类嗤、XML支持衫生,加密支持,壓縮文件支持等等
  • 跨平臺(tái)能力(跨Windows土浸、Linux罪针、Macintosh OS X等操作系統(tǒng))
  • 新開發(fā)技術(shù)學(xué)習(xí)成本
  • 開發(fā)平臺(tái)成本

3. 具體分析

以下將分析各種UI開發(fā)技術(shù)的一些內(nèi)容黄伊。但主體趨勢(shì)無外乎以下方向:

  • 運(yùn)行效率:原生 > 托管平臺(tái) > 富客戶端、Web

  • 開發(fā)效率:原生 < 托管平臺(tái) < 富客戶端墓阀、Web

就學(xué)習(xí)成本來說,很難說出誰高誰低斯撮,但是總體來說扶叉,富客戶端和Web學(xué)習(xí)成本比較低,原生的學(xué)習(xí)成本比較高枣氧,因?yàn)樵乃嫦蜷_發(fā)應(yīng)用場(chǎng)景比較固定溢十,局限性大,所以考慮到技術(shù)人員的發(fā)展达吞,成本算高的张弛。

C++

基于C++語言進(jìn)行桌面應(yīng)用軟件開發(fā)的框架和平臺(tái)較多,包括了Windows平臺(tái)流行的MFC酪劫、支持多平臺(tái)的Qt吞鸭、GTK+等,都提供了GUI交互支持覆糟。

  • 運(yùn)行效率

C++開發(fā)的應(yīng)用軟件刻剥,需要針對(duì)運(yùn)行目標(biāo)平臺(tái)進(jìn)行單獨(dú)編譯、生成可執(zhí)行文件搪桂,運(yùn)行效率極高透敌,具有較好的性能盯滚。

  • 開發(fā)效率

C++開發(fā)要求開發(fā)人員具有較好的C++基礎(chǔ)和應(yīng)用能力踢械,否則將會(huì)極大的降低開發(fā)效率。C++對(duì)內(nèi)存管理要求較高魄藕,需要耗費(fèi)較多精力處理内列。

  • UI效果

UI效果與具體的GUI交互支持方式有關(guān)。
MFC采用貼圖方式美化外觀背率,且交互界面運(yùn)行效率高话瞧,在Windows平臺(tái)中嫩与,UI渲染有多種先進(jìn)的圖形庫和渲染引擎支持,能夠獲得極佳的UI性能和效果交排。

  • 網(wǎng)絡(luò)支持

C++語言對(duì)網(wǎng)絡(luò)的支持較好划滋,具有多種成熟的開源網(wǎng)絡(luò)庫可使用,如重量級(jí)的ACE埃篓,Boost的ASIO处坪、陳碩的Muduo,僅支持Linux的libev架专、主要支持Linux的libevent部脚。

  • I/O支持

C++語言作為編譯型原生運(yùn)行程序開發(fā)語言丧没,本身就具有對(duì)I/O的天然良好支持骂铁,通過I/O流能夠快速完成本地文件操作等等一系列I/O操作拉庵。

  • 數(shù)據(jù)庫支持

C++語言對(duì)于數(shù)據(jù)庫支持钞支,主要依賴于數(shù)據(jù)庫驅(qū)動(dòng)程序提供的接口支持程度烁挟,目前對(duì)絕大對(duì)數(shù)主流數(shù)據(jù)庫都有著良好的支持撼嗓。

  • 其他第三方庫支持

C++作為目前使用量較大的開發(fā)語言且警,其各個(gè)方面均有較好的支持

  • 跨平臺(tái)能力

C++開發(fā)的程序跨平臺(tái)能力較差斑芜,需要針對(duì)目標(biāo)平臺(tái)進(jìn)行單獨(dú)編譯盈包。當(dāng)所使用的框架呢燥、類庫不支持目標(biāo)平臺(tái)時(shí)疮茄,將導(dǎo)致失敗的跨平臺(tái)開發(fā)力试。
MFC目前不支持跨平臺(tái)畸裳,僅支持Windows平臺(tái)怖糊。
Qt和GTK+對(duì)較多平臺(tái)均支持伍伤,包括Windows扰魂、Linux劝评、Mac OS X蒋畜。

  • 成本考慮

C++語言開發(fā),一直是成本居然不下愿棋,前期開發(fā)架構(gòu)搭建辛润、業(yè)務(wù)邏輯堆砌成本高砂竖,后期測(cè)試乎澄、維護(hù)置济,每一項(xiàng)環(huán)節(jié)都占據(jù)了較高的成本使用浙于。C++的開發(fā)羞酗、維護(hù)檀轨,都要求參與者有著較高的開發(fā)素養(yǎng)参萄,因此人工成本也是一個(gè)大項(xiàng)讹挎。
基于成本考慮淤袜,C++項(xiàng)目適合于運(yùn)行效率要求高

C#語言

C#語言是Windows中的當(dāng)紅語言铡羡,在Web烦周、系統(tǒng)服務(wù)读慎、桌面應(yīng)用夭委、富客戶端等多有涉及株灸。C#基于.NET Framewrok開發(fā)的桌面應(yīng)用軟件慌烧,也是Win系中的主流方式屹蚊。
此外汹粤,隨著微軟的努力嘱兼,感謝Visual Studio Core和.NET Code遭京,實(shí)現(xiàn)了跨平臺(tái)開發(fā)和運(yùn)行船殉。

  • 運(yùn)行效率

C#桌面應(yīng)用基于托管式運(yùn)行斯嚎,效率相比于C++較低糠惫。

  • 開發(fā)效率

C#開發(fā)效率較高較快钉疫,入門快固阁、上手快备燃,但后期優(yōu)化困難并齐,需要較為深入的研究撕贞。

  • UI效果

C#的UI效果通過皮膚控制窝剖。由于C#消耗資源較多赐纱,在低配機(jī)器上疙描,UI流暢度較低起胰。

  • 網(wǎng)絡(luò)支持

C#網(wǎng)絡(luò)支持良好效五。

  • I/O支持

C#本地化支持良好畏妖,面向?qū)ο蟛僮鞯姆庋b,使得各種I/O操作都很便捷婆廊。

  • 數(shù)據(jù)庫支持

C#對(duì)SQL Server數(shù)據(jù)庫支持良好茵典。對(duì)其他數(shù)據(jù)庫统阿,需要特殊的支持砂吞。

  • 其他第三方庫支持

C#本身做了較為完整的工具類封裝,不僅在基本的JSON之類的支持良好,在加密呼巷、編碼等方面也有著良好支持。

  • 跨平臺(tái)能力

不太好压储,但是微軟正在致力于跨平臺(tái)集惋。但微軟不應(yīng)該如此好心刮刑,他們從來不會(huì)讓客戶和用戶離開win系平臺(tái)的雷绢,這也許只是他們放出的一個(gè)糖衣。

  • 成本考慮

Windows平臺(tái)采用C#開發(fā)簡單的桌面應(yīng)用成本較低傻工。大中型鸯匹、復(fù)雜應(yīng)用需要慎重考慮泄伪。

Java

Java是目前服務(wù)器端的主流語言之一染厅。Java語言用于桌面應(yīng)用開發(fā)的產(chǎn)品較多肖粮,但更多的體現(xiàn)在Sun公司涩馆、Oracle公司自主研發(fā)產(chǎn)品行施,如Eclipse。一些對(duì)性能有較高要求的應(yīng)用魂那,并不適合用Java開發(fā)蛾号,而更適合用C/C++。但Java最為突出的有點(diǎn)是Write once涯雅, Run anywhere鲜结,跨平臺(tái)性無與倫比。

  • 運(yùn)行效率

基于JVM的運(yùn)行方式活逆,使得Java遜于C++精刷。

  • 開發(fā)效率

有著Java基礎(chǔ)的開發(fā)人員琴庵,能夠快速開發(fā)庆寺。

  • UI效果

依賴皮膚效果陵霉⌒Т玻控件豐富度沪猴,需要第三方支持,原生控件種類較少,頗簡陋。

  • 網(wǎng)絡(luò)支持

支持良好蚌本,同時(shí)擁有眾多第三方庫支持嵌莉。

  • I/O支持

支持良好可婶。

  • 數(shù)據(jù)庫支持

支持良好曙旭。

  • 其他第三方庫支持

Java的第三方庫支持眾多蛮位。

  • 跨平臺(tái)能力

Java有著良好的跨平臺(tái)能力控轿。

  • 成本考慮

Java開發(fā)成本較低,但其UI性能較弱廊鸥,需要考慮后期項(xiàng)目膨脹后的應(yīng)對(duì)辦法。

Objective-C

與C++同宗,但又有著很多不同的一門語言,隨著蘋果系列產(chǎn)品的暢銷诚啃,OC開發(fā)也逐漸主流化和橙。Objective-C由蘋果公司推出俄周,主要面向Mac系列系統(tǒng)使用拴曲,跨平臺(tái)能力較差。

  • 運(yùn)行效率

運(yùn)行效率較高删铃,屬于原生編譯運(yùn)行。

  • 開發(fā)效率

熟悉OC語言眼刃,能夠快速開發(fā)框舔。

  • UI效果

UI效果借助貼圖,控件樣式較多绢馍。

  • 網(wǎng)絡(luò)支持

支持網(wǎng)絡(luò)朱躺,隨著OC火爆源请,很多第三方庫紛紛支持。

  • I/O支持

支持本地化操作。

  • 數(shù)據(jù)庫支持

支持Mac上的數(shù)據(jù)庫,如SQLite瓦阐、MySQL等。

  • 其他第三方庫支持

OC越來越流行,越來越多的第三方庫出現(xiàn)隔缀,支持越來越好袱吆。

  • 跨平臺(tái)能力

不具有跨平臺(tái)能力。

  • 成本考慮

僅支持Mac OS X。

富客戶端

富客戶端一度是瀏覽器的霸主夷蚊,但隨著H5的興起,更多更絢爛的效果由H5實(shí)現(xiàn)翘簇,甚至H5頁肩負(fù)起了RIA的任務(wù)撬码,老牌富客戶端開發(fā)技術(shù)主鍵平淡,但不可否認(rèn)的是版保,以Flash為主的富客戶端依然對(duì)Web RIA擁有著不可撼動(dòng)的主流地位呜笑。本文主要討論桌面應(yīng)用,富客戶端中彻犁,很大一部分是可以實(shí)現(xiàn)桌面應(yīng)用開發(fā)叫胁,當(dāng)前最流行的Flex/Flesh,是典型的代表汞幢。富客戶端技術(shù)開發(fā)語言根據(jù)平臺(tái)不同而不同驼鹅,包括了Flash/Flex的ActionScript/OpenLaszlo、JavaFX的Java森篷、SliverLight的C#等等输钩。富客戶端技術(shù)并不是一個(gè)單純技術(shù),而是以其他開發(fā)語言和技術(shù)支撐起來的復(fù)合型開發(fā)技術(shù)仲智。

  • 運(yùn)行效率

富客戶端運(yùn)行基于其特定的環(huán)境和運(yùn)行平臺(tái)买乃,如Flash播放平臺(tái)、JVM钓辆、.NET Framework插件等剪验,從而導(dǎo)致了相比于原生編譯程序,其效率較為低下前联,從而不適合進(jìn)行復(fù)雜功能和高強(qiáng)度運(yùn)算處理應(yīng)用的開發(fā)功戚。
隨著技術(shù)不斷的革新,富客戶端在運(yùn)行效率上也有著較大的提升似嗤,但綜合來看效率普遍偏低啸臀,因此注重高效率的程序開發(fā)可以繞過這一塊另擇通路。

  • 開發(fā)效率

富客戶端開發(fā)技術(shù)烁落,往往是基于其他技術(shù)而形成的綜合技術(shù)壳咕。
Flash/Flex的ActionScript是一類面型對(duì)象的腳本開發(fā)語言,該語言語法與一般面向?qū)ο箝_發(fā)語言類似顽馋,在語法格式上,其變量聲明格式與傳統(tǒng)的編程語言略有不同(類型后置寫法)幌羞,但一旦熟悉之后寸谜,基本無礙。除此属桦,F(xiàn)lash/Flex的UI界面開發(fā)熊痴,通過特殊的皮膚機(jī)制實(shí)現(xiàn)他爸,需要投入一定的精力研究。
JavaFX目前支持Java語言開發(fā)果善,對(duì)于一般Java開發(fā)者來說诊笤,需要熟悉JavaFX帶來的新內(nèi)容,能夠較快上手巾陕。
SliverLight基于C#語言讨跟,C#入門極易,但優(yōu)化困難鄙煤,所以入門級(jí)開發(fā)較快晾匠,后期優(yōu)化比較扎手。

  • UI效果

富客戶端的UI效果梯刚,一般靠皮膚支撐凉馆。JavaFX在3D圖形支持上稍弱,有待加強(qiáng)亡资。

  • 網(wǎng)絡(luò)支持

富客戶端天然具有網(wǎng)絡(luò)支持能力澜共,通常具有較強(qiáng)的多媒體支持能力。Flash/Flex支持更多的多媒體網(wǎng)絡(luò)協(xié)議锥腻,如RTMP流媒體傳輸協(xié)議等嗦董,很多在線直播平臺(tái)均采用該網(wǎng)絡(luò)技術(shù)。

  • I/O支持

富客戶端桌面應(yīng)用開發(fā)中旷太,借助本地化操作支持展懈,能夠較好實(shí)現(xiàn)I/O操作。

  • 數(shù)據(jù)庫支持

富客戶端開發(fā)中供璧,不同類型對(duì)數(shù)據(jù)庫連接和操作的支持不一致存崖。ActionScript對(duì)這一類支持較差,并且缺乏第三方庫支持睡毒。JavaFX天然使用Java語言来惧,在各類數(shù)據(jù)庫支持方面較好。SilverLight采用C#語言演顾,對(duì)SQL Server數(shù)據(jù)庫支持良好供搀。

  • 其他第三方庫支持

由于Adobe開發(fā)的Flash/Flex ActionScript開發(fā)平臺(tái),尚處于閉源狀態(tài)钠至,因此第三方拓展較少葛虐,但其本身已經(jīng)具有較多的支持,如JSON支持等棉钧。
JavaFX能夠使用Java開發(fā)中的各類第三方庫屿脐,支持絕對(duì)良好。

  • 跨平臺(tái)能力

富客戶端都具有較好的跨平臺(tái)能力。

  • 成本考慮

富客戶端開發(fā)成本的诵,需要根據(jù)不同類型RIA區(qū)別對(duì)待万栅。
綜合考慮,JavaFX開發(fā)成本較低西疤。Flash/Flex開發(fā)成本稍高烦粒。

Web

Web語言實(shí)現(xiàn)桌面應(yīng)用開發(fā),實(shí)際上和RIA類似代赁,主要的套路是利用瀏覽器引擎完成UI渲染扰她,目前比較主流的是IE瀏覽器引擎和WebKit引擎。隨著H5前端技術(shù)管跺、NODE.JS等的大肆興起义黎,桌面應(yīng)用逐漸冷淡。但基于瀏覽器引擎開發(fā)桌面應(yīng)用的技術(shù)豁跑,卻因此而得到發(fā)展廉涕,如基于node.js的NW.js、基于io.js的Electron等等艇拍,以及國內(nèi)很多公司自主研發(fā)的開發(fā)平臺(tái)狐蜕。

  • 運(yùn)行效率

隨著V8引擎的發(fā)布,Node.js借助其實(shí)現(xiàn)了服務(wù)器端JS編程的可能卸夕,作為桌面應(yīng)用层释,其性能也有大幅度提升,可以與其他桌面應(yīng)用開發(fā)技術(shù)相提并論快集。

  • 開發(fā)效率

使用前端技術(shù)開發(fā)贡羔,對(duì)于有前端開發(fā)經(jīng)驗(yàn)的人來說,在克服了開發(fā)環(huán)境和運(yùn)行環(huán)境搭建后个初,稍微摸索下開發(fā)技巧乖寒,之后的路將會(huì)比較坦蕩。

  • UI效果

參考H5的效果院溺,不難想象楣嘁,UI效果將會(huì)達(dá)到比較炫酷的級(jí)別。

  • 網(wǎng)絡(luò)支持

NW.js使用了WebKit支持UI渲染珍逸,同時(shí)使用node.js完成本地化操作逐虚,網(wǎng)絡(luò)支持通過node.js,支持良好谆膳。

  • I/O支持

本地操作極為良好叭爱,通過JS提供的多種API,能夠輕松完成各種本地操作漱病,因此對(duì)I/O支持良好涤伐。

  • 數(shù)據(jù)庫支持

目前馒胆,有很多的JS數(shù)據(jù)庫操作庫,這方面支持較為良好凝果。

  • 其他第三方庫支持

隨著WebKit桌面應(yīng)用開發(fā)的高速發(fā)展,同時(shí)以node.js等為主的JS后端編程實(shí)現(xiàn)睦尽,其他支持都已經(jīng)逐步跟進(jìn)器净,達(dá)到較好的支持。

  • 跨平臺(tái)能力

不言而喻当凡,擁有良好的跨平臺(tái)能力山害。

  • 成本考慮

開發(fā)成本主要在環(huán)境搭建和開發(fā)入門方面,一旦入門后沿量,有著豐富前端開發(fā)經(jīng)驗(yàn)的人員浪慌,能夠快速進(jìn)行開發(fā)。同時(shí)朴则,隨著相應(yīng)技術(shù)的發(fā)展权纤,文檔、資料乌妒、開源代碼等逐漸豐富汹想,開發(fā)成本逐步降低。
維護(hù)成本方面撤蚊,并非涉及到全新的開發(fā)語言古掏,成本因此能夠控制在較低的程度。

Python

一種膠水語言侦啸,目前也支持了UI開發(fā)槽唾。

  • 運(yùn)行效率

一般。

  • 開發(fā)效率

快光涂。

  • UI效果

局限性較大庞萍,控件庫豐富度較弱。

  • 網(wǎng)絡(luò)支持

支持顶捷。

  • I/O支持

支持挂绰。

  • 數(shù)據(jù)庫支持

支持。

  • 其他支持

支持良好

  • 跨平臺(tái)能力

良好服赎。

  • 成本考慮

成本較低葵蒂,但不適合大型應(yīng)用開發(fā)。

Ruby

Ruby on Rails是當(dāng)前炒作的比較火爆的一個(gè)概念重虑,在Web開發(fā)中也有著一席之地践付。Ruby用于桌面應(yīng)用開發(fā),基于TK平臺(tái)實(shí)現(xiàn)缺厉。Ruby永高,作為一個(gè)簡單面向?qū)ο蟮哪_本語言隧土,其優(yōu)點(diǎn)是使用簡單,開發(fā)快速命爬。

  • 運(yùn)行效率

一般曹傀,腳本語言的效率都不會(huì)太高。

  • 開發(fā)效率

快饲宛,Ruby比較簡潔皆愉,開發(fā)速度較快。

  • UI效果

作為腳本語言艇抠,由TK決定幕庐,控件庫豐富度較弱。

  • 網(wǎng)絡(luò)支持

支持家淤。

  • I/O支持

基本支持异剥。

  • 數(shù)據(jù)庫支持

良好支持。

  • 其他支持

良好支持

  • 跨平臺(tái)能力

采用虛擬機(jī)運(yùn)行絮重,跨平臺(tái)能力良好冤寿。

  • 成本考慮

成本較低,但不適合大型應(yīng)用開發(fā)绿鸣。

Go

Go語言的一些方言疚沐,目前支持UI開發(fā)。但即便是神一樣的方言設(shè)計(jì)者潮模,也有力不從心的時(shí)候亮蛔,也無法與大型公司為靠山的開發(fā)平臺(tái)豐富和穩(wěn)定。但Go語言的開發(fā)速度擎厢,絕不是蓋的究流。

  • 運(yùn)行效率

視情況而定,由方言的特性決定动遭。

  • 開發(fā)效率

快芬探。

  • UI效果

絕大多數(shù)個(gè)人貢獻(xiàn),所以厘惦,控件庫豐富度較弱偷仿。

  • 網(wǎng)絡(luò)支持

視情況而定,由方言的特性決定宵蕉,一般是支持的酝静。

  • I/O支持

視情況而定,由方言的特性決定羡玛,一般是支持的别智。

  • 數(shù)據(jù)庫支持

視情況而定,由方言的特性決定稼稿。

  • 其他支持

視情況而定薄榛,由方言的特性決定讳窟。

  • 跨平臺(tái)能力

視情況而定,由方言的特性決定敞恋。

  • 成本考慮

成本較低丽啡,關(guān)鍵是快速開發(fā)效率高。

小結(jié)

  1. 以C++語言為基礎(chǔ)的桌面應(yīng)用開發(fā)技術(shù)耳舅,具有較高效率碌上,但跨平臺(tái)實(shí)現(xiàn)比較困難,需要具體平臺(tái)庫支撐浦徊,但Qt和GTK+基本上達(dá)到了跨平臺(tái)的能力。
  2. OC專門針對(duì)Macintosh OS X天梧,雖然具有較高的效率和較強(qiáng)的UI效果盔性,但是跨平臺(tái)能力限制了其廣泛發(fā)展的可能性(除非蘋果稱霸天下……)。
  3. C#是目前Windows系統(tǒng)上桌面應(yīng)用開發(fā)使用最多的開發(fā)技術(shù)之一(好像把之一去掉呢岗,不過還有MFC鎮(zhèn)壓著冕香,不可造次),C#雖然在效率上低于C++后豫,但是在開發(fā)效率上甩C/C++幾條街啊悉尾。
  4. Java在UI、用戶交互開發(fā)方面挫酿,一直是不溫不火的狀態(tài)构眯,Swing、AWT已經(jīng)是過去式了早龟,但做一些小工具還是可以考慮的惫霸,畢竟Java語言會(huì)的人多。
  5. 富客戶端開發(fā)技術(shù)葱弟,在桌面應(yīng)用開發(fā)市場(chǎng)中也占有一席之地壹店,尤其是網(wǎng)絡(luò)多媒體應(yīng)用,我鵝的某寵就是這種模式芝加。Flash/Flex是富客戶端的大哥大硅卢,SliverLight也曾紅火一時(shí)。JavaFX最近新軍崛起藏杖,是否能夠占據(jù)導(dǎo)一份市場(chǎng)将塑,也要拭目以待。
  6. WebKit為基礎(chǔ)的Web式桌面應(yīng)用開發(fā)制市,以Web引擎作為UI渲染工具抬旺,是一個(gè)高明的設(shè)計(jì)和思路。隨著H5祥楣、Node.js的興起开财,Web式桌面應(yīng)用也在逐漸火爆汉柒,某道翻譯軟件目前應(yīng)該是在借鑒NW.JS的基礎(chǔ)上使用自主研發(fā)的heX完成UI開發(fā)。
  7. 至于其他的語種责鳍,如Python碾褂、Ruby,腳本開發(fā)語言历葛,效率不高正塌,UI有限,但能夠?qū)崿F(xiàn)快速開發(fā)恤溶,小型軟件方面也有一定優(yōu)勢(shì)乓诽。Go語言作為程序節(jié)的高冷語言,部分方言有對(duì)UI的支持咒程,開發(fā)速度絕對(duì)快鸠天,但是要求對(duì)函數(shù)式編程有一定掌握,稍有些門檻帐姻。

那么該如何選擇

1稠集、 首先判斷項(xiàng)目類型,對(duì)運(yùn)行效率需求如何饥瓷、對(duì)一些特殊的技術(shù)指標(biāo)要求剥纷。如果有著較高的運(yùn)行效率要求,那么選擇范圍也就較低了呢铆,多在原生編譯和高度優(yōu)化的平臺(tái)上選擇晦鞋。如果對(duì)UI靈活性、自主性要求較高刺洒,也要重點(diǎn)考慮原生編譯鳖宾,因?yàn)樵幾g更接近底層,自由度更大逆航。
2鼎文、 開發(fā)速度要求:如果有快速開發(fā)要求,盡量避免原生開發(fā)因俐,一個(gè)是跨平臺(tái)比較麻煩拇惋,另一個(gè)是原生開發(fā),即便是提供了較多的UI支持庫抹剩,也不可能像基于平臺(tái)的技術(shù)有著良好的封裝撑帖。
3、 考慮技術(shù)人員的底蘊(yùn):如果具有特殊的技術(shù)人員澳眷,精通某一方面胡嘿,那么必須要把這個(gè)考慮進(jìn)去,這不但是技術(shù)方面的保證钳踊,也是開發(fā)成本的保證衷敌。
4勿侯、 后期考慮:從長遠(yuǎn)考慮項(xiàng)目的要求,有沒有什么特殊的考慮缴罗,如以后往Web上靠助琐,那么就考慮NW.JS或者Electron等。往流媒體富客戶端面氓,那么要考慮Flex技術(shù)兵钮。等等。

結(jié)尾

支持桌面應(yīng)用軟件開發(fā)的技術(shù)舌界,只要具有相應(yīng)的UI支持基礎(chǔ)就能夠?qū)崿F(xiàn)掘譬,因此相關(guān)技術(shù)并不止上述幾類,但上述幾大類是目前桌面應(yīng)用開發(fā)的主流開發(fā)技術(shù)呻拌,占據(jù)了絕大部分的市場(chǎng)屁药。其他較小眾的桌面開發(fā)技術(shù)由于其小眾化、文檔匱乏柏锄,較難流行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末复亏,一起剝皮案震驚了整個(gè)濱河市趾娃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缔御,老刑警劉巖抬闷,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耕突,居然都是意外死亡笤成,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門眷茁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炕泳,“玉大人,你說我怎么就攤上這事上祈∨嘧瘢” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵登刺,是天一觀的道長籽腕。 經(jīng)常有香客問我,道長纸俭,這世上最難降的妖魔是什么皇耗? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮揍很,結(jié)果婚禮上郎楼,老公的妹妹穿的比我還像新娘万伤。我一直安慰自己,他們只是感情好箭启,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布壕翩。 她就那樣靜靜地躺著,像睡著了一般傅寡。 火紅的嫁衣襯著肌膚如雪放妈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天荐操,我揣著相機(jī)與錄音芜抒,去河邊找鬼。 笑死托启,一個(gè)胖子當(dāng)著我的面吹牛宅倒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屯耸,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼拐迁,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了疗绣?” 一聲冷哼從身側(cè)響起线召,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎多矮,沒想到半個(gè)月后缓淹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塔逃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年讯壶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湾盗。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伏蚊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淹仑,到底是詐尸還是另有隱情丙挽,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布匀借,位于F島的核電站颜阐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吓肋。R本人自食惡果不足惜凳怨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肤舞,春花似錦紫新、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至篙顺,卻和暖如春偶芍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背德玫。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工匪蟀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宰僧。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓材彪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親琴儿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子段化,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,757評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件造成、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • 最大限度的經(jīng)歷生活穗泵,是關(guān)于戰(zhàn)地?cái)z影師羅伯特?卡帕我記得最深,也是我最喜歡的一句話谜疤,雖然這句話并非出自卡帕之口,而是...
    萌飛拉_文藝廠牌閱讀 356評(píng)論 0 2
  • 我一向身體健康现诀,很少生病夷磕。小的時(shí)候很想生病,可以不上學(xué)待在家里仔沿,雖然要打針坐桩,還要喝中藥。如果是打針封锉,通常是打吊瓶绵跷,...
    七里香的夏天和海閱讀 217評(píng)論 2 0
  • 一群群飛騰的禿鷲爭先恐后的沖向天葬臺(tái),來之前對(duì)天葬一直持一種觀望態(tài)度成福,沒有特別想去看碾局,只是覺得來了不去看,將來一定...
    sarlinna閱讀 483評(píng)論 0 0