{eval=Array;=+count(Array);}
你好,我來(lái)回答這個(gè)問(wèn)題,我有9年多的IT從業(yè)經(jīng)驗(yàn),負(fù)責(zé)過(guò)一個(gè)大型App的前后端架構(gòu)設(shè)計(jì),以及多個(gè)小型App的架構(gòu)編碼工作。
大型App的開(kāi)發(fā),具體用什么編程語(yǔ)言,這個(gè)要分場(chǎng)景來(lái)說(shuō):
①追求用戶(hù)體驗(yàn)的C端App:
這類(lèi)面向普通大眾、追求良好體驗(yàn)的App,例如微信、支付寶、今日我們等,則建議使用原生代碼來(lái)開(kāi)發(fā)。即Android使用Java或Kotlin,iOS使用swift語(yǔ)言。
使用原生語(yǔ)言開(kāi)發(fā),可以充分發(fā)揮出App的所有優(yōu)勢(shì),你可以使用任何API提供的功能,而不像混合開(kāi)發(fā)那樣有著種種限制。此外,原生代碼開(kāi)發(fā)的App的運(yùn)行速度也是非常流暢的。對(duì)于考慮兼容性廣、適配所有機(jī)型的App來(lái)說(shuō),原生開(kāi)發(fā)幾乎是唯一的選擇。
這類(lèi)開(kāi)發(fā)的弊端是研發(fā)成本較高,因?yàn)橥瑯拥臉I(yè)務(wù)邏輯需要在Android和iOS上分別來(lái)實(shí)現(xiàn)。
②追求迭代效率的B端App:
一些公司內(nèi)部使用的大型App,由于使用范圍僅限于某一個(gè)組織內(nèi)部,不需要追求極致的用戶(hù)體驗(yàn)以及廣泛的機(jī)型適配,而追求的是系統(tǒng)版本的功能開(kāi)發(fā),問(wèn)題處理的便捷性,更重要是降低App的研發(fā)成本。
對(duì)于這類(lèi)App,適合采用混合開(kāi)發(fā)的模式來(lái)做,例如Flutter、Ionic、Cordova等,這類(lèi)開(kāi)發(fā)的優(yōu)勢(shì)是一次開(kāi)發(fā),處處運(yùn)行。無(wú)需再多帶帶為Android和iOS分別開(kāi)發(fā)代碼,可有效降低企業(yè)的研發(fā)成本,也提高了App的版本迭代速度。此外,之前需要高薪聘請(qǐng)Android和iOS工程師,現(xiàn)在只需要會(huì)Web開(kāi)發(fā)的人員即可。
這類(lèi)App的弊端是流暢性較低,兼容性弱,無(wú)法開(kāi)發(fā)大型游戲等對(duì)性能要求較高的場(chǎng)景。
以上就是目前App開(kāi)發(fā)的兩大分類(lèi),均占有一定的市場(chǎng)。所以你這個(gè)問(wèn)題不能一概而論,需要分上述兩個(gè)情況來(lái)決策,希望可以幫助到你!
哈嘍,我是七步的天,有著五年多的編程經(jīng)驗(yàn),很高興為你解答。
現(xiàn)在主流的開(kāi)發(fā)app的編程語(yǔ)言可以分為兩類(lèi)。下面分別對(duì)這兩類(lèi)分別介紹。
(1) 開(kāi)發(fā)Android的:Java和Kotlin
Kotlin 是一種在 Java 虛擬機(jī)上運(yùn)行的靜態(tài)類(lèi)型編程語(yǔ)言,被稱(chēng)之為 Android 世界的Swift。Kotlin 可以編譯成Java字節(jié)碼,也可以編譯成 JavaScript,方便在沒(méi)有 JVM 的設(shè)備上運(yùn)行。運(yùn)行效率提高很多,并且語(yǔ)法更加簡(jiǎn)潔好用。
如果是與系統(tǒng)底層進(jìn)行交互則需要使用JNI技術(shù),通過(guò)和C或者C++結(jié)合實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯,比如美顏或者直播類(lèi)型的app。直播類(lèi)型的app采用的ffmpeg技術(shù),其中ffmpeg就是用C語(yǔ)言實(shí)現(xiàn)的。
(2)開(kāi)發(fā)IOS的:Swift和Object-C
Swift 結(jié)合了 C 和 Objective-C 的優(yōu)點(diǎn)并且不受 C 兼容性的限制。
(1)第一種是Flutter技術(shù),基于Dart語(yǔ)言,比如現(xiàn)在閑魚(yú)app就是基于flutter開(kāi)發(fā)的。并且有著多年經(jīng)驗(yàn),而且閑魚(yú)免費(fèi)開(kāi)源了框架。
Flutter是谷歌的移動(dòng)UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶(hù)界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來(lái)越多的開(kāi)發(fā)者和組織使用,并且Flutter是完全免費(fèi)、開(kāi)源的。
Flutter的熱重載可幫助您快速地進(jìn)行測(cè)試、構(gòu)建UI、添加功能并更快地修復(fù)錯(cuò)誤。在iOS和Android模擬器或真機(jī)上可以在亞秒內(nèi)重載,并且不會(huì)丟失狀態(tài)。
尤其是在UI上使用Flutter的現(xiàn)代、響應(yīng)式框架,和一系列基礎(chǔ)widget,輕松構(gòu)建您的用戶(hù)界面。使用功能強(qiáng)大且靈活的API(針對(duì)2D、動(dòng)畫(huà)、手勢(shì)、效果等)解決艱難的UI挑戰(zhàn)。
(2)第二種是Uni-app框架,基于Vue.js。俗稱(chēng)一套代碼編到8個(gè)平臺(tái)上。
uni-app 是一個(gè)使用 Vue.js 開(kāi)發(fā)所有前端應(yīng)用的框架,開(kāi)發(fā)者編寫(xiě)一套代碼,可發(fā)布到iOS、Android、H5、以及各種小程序:微信/支付寶/百度/我們/QQ/釘釘?shù)榷鄠€(gè)平臺(tái)。
第二類(lèi)開(kāi)發(fā)起來(lái)更顯效率,節(jié)約很多時(shí)間成本。
我是七步的天,如果覺(jué)得對(duì)你有幫助,喜歡就關(guān)注我吧。
有其他問(wèn)題和見(jiàn)解的小伙伴,歡迎在評(píng)論區(qū)留言。辛苦留下你的寶貴意見(jiàn)。
歡迎點(diǎn)贊、關(guān)注、收藏。
Hi,我是科技互聯(lián)網(wǎng)大叔,有多年的開(kāi)發(fā)經(jīng)驗(yàn)和架構(gòu)經(jīng)驗(yàn),對(duì)題主你的問(wèn)題還是比較了解的,今天我來(lái)回答下這個(gè)問(wèn)題。
一個(gè)大型的App包含的內(nèi)容會(huì)很多,比如客戶(hù)端開(kāi)發(fā)、服務(wù)端開(kāi)發(fā)、前端頁(yè)面開(kāi)發(fā)等等,我會(huì)一一道來(lái)。
第一、客戶(hù)端開(kāi)發(fā)
客戶(hù)端開(kāi)發(fā),大家應(yīng)該是感知最明顯的,就是你手機(jī)里下載的各種App,都是屬于客戶(hù)端開(kāi)發(fā)。那么客戶(hù)端開(kāi)發(fā)主要用什么編程語(yǔ)言呢,這里又要區(qū)分Android和IOS。
Android的常見(jiàn)編程語(yǔ)言是Java,Java語(yǔ)言是一種使用特別廣泛的語(yǔ)言,可以用來(lái)做很多層面的開(kāi)發(fā),最早的Android體系大家直接用Java來(lái)去開(kāi)發(fā),Android系統(tǒng)的編譯器是可以編譯運(yùn)行的。當(dāng)然現(xiàn)在越來(lái)越流行Kotlin,其實(shí)Kotlin是Java語(yǔ)言的一個(gè)變種,比Java語(yǔ)法更簡(jiǎn)練,最終也是運(yùn)行在JVM上。
IOS常見(jiàn)編程語(yǔ)言是Objective-C,這是早期的編程語(yǔ)言,是基于C語(yǔ)言的一個(gè)變種,有很豐富的圖形界面開(kāi)發(fā)功能。不過(guò)后來(lái)蘋(píng)果公司2014年自己推出了Swift語(yǔ)言,漸漸成為主流。畢竟Swift語(yǔ)言是蘋(píng)果公司推出的,他們肯定更了解自己的IOS系統(tǒng)內(nèi)核,所推出的Swift語(yǔ)言對(duì)于基于IOS的開(kāi)發(fā)者來(lái)說(shuō)簡(jiǎn)單易用。
第二、服務(wù)端開(kāi)發(fā)
客戶(hù)端開(kāi)發(fā)主要是做展示,但其實(shí)App上有各種各樣的數(shù)據(jù)是從哪里來(lái)的呢?比如電商網(wǎng)站的商品介紹,我們App的文章內(nèi)容等等,這些都是需要服務(wù)端提供各種接口,客戶(hù)端的程序去調(diào)用服務(wù)端接口,拿到數(shù)據(jù)后再給用戶(hù)展示出來(lái),這個(gè)做服務(wù)接口的就是服務(wù)端開(kāi)發(fā)。
服務(wù)端開(kāi)發(fā)常見(jiàn)的編程語(yǔ)言也是Java,哈哈,Java確實(shí)使用面很廣,當(dāng)然,能用Java的地方就可以用Kotlin?,F(xiàn)在服務(wù)端開(kāi)發(fā)流行微服務(wù)架構(gòu),各種各樣的支持微服務(wù)的Java框架,比如Springboot,Dubbo等等,可以很方便的搭建高并發(fā)的服務(wù)體系。這些成熟的框架也使得Java進(jìn)一步的流行起來(lái)。
當(dāng)然現(xiàn)在有一個(gè)后起之秀,Go語(yǔ)言。Go語(yǔ)言是Google推出的一個(gè)新語(yǔ)言,可以很輕松的兼顧運(yùn)行性能、開(kāi)發(fā)效率及維護(hù)難度,以其獨(dú)特的設(shè)計(jì)風(fēng)格和優(yōu)勢(shì)在整個(gè)行業(yè)有了一席之地。
第三、前端開(kāi)發(fā)
App里面的很多頻繁變化的頁(yè)面不會(huì)做成原生頁(yè)面,而是做成Html5的頁(yè)面。這種頁(yè)面方便上下線和做一些修改,特別適合做各種活動(dòng)的場(chǎng)景。
做前端頁(yè)面的主要編程語(yǔ)言就是JS了,全稱(chēng)為JavaScript。這種語(yǔ)言是一種腳本語(yǔ)言,具有豐富的控制功能和組件交互功能,不過(guò)目前來(lái)說(shuō)用原生JS語(yǔ)言做開(kāi)發(fā)的很少,大部分還是會(huì)用比較主流的三大JS框架:VUE,React,Angular。
我是做安卓開(kāi)發(fā)的,就拿安卓來(lái)舉例吧?,F(xiàn)在的大型安卓app主要是已原生語(yǔ)言為主,以其他語(yǔ)言為輔,屬于混合開(kāi)發(fā)模式。
通常大型的APP都會(huì)先搭建框架,當(dāng)然框架并不是搭建好就不用動(dòng)了,它會(huì)隨著業(yè)務(wù)發(fā)展不斷重構(gòu)演進(jìn)。
我們看看微信APP架構(gòu),分別使用了組件化和模塊化技術(shù),懂APP開(kāi)發(fā)的應(yīng)該一看就知道。
組件化有什么好處?
組件主要分三層,業(yè)務(wù)組件,基礎(chǔ)業(yè)務(wù)組件以及基礎(chǔ)組件,組件之間只能通過(guò)接口耦合,也就是依賴(lài)倒置原則,每個(gè)組件都提供對(duì)外的接口文檔以描述該組件提供的功能。
其次,組件化有很多好處:解耦,平臺(tái)化,職責(zé)單一,復(fù)用性,編譯集成等。
由于技術(shù)性較強(qiáng),就不展開(kāi)說(shuō)明了,總之組件化會(huì)讓APP開(kāi)發(fā)非常靈活,比如將推送服務(wù)組件化,現(xiàn)在使用的小米推送,如果需要換成ucloud推送呢,很簡(jiǎn)單,寫(xiě)個(gè)ucloud推送組件,替換原來(lái)的就可以了,接口定義一致的話,調(diào)用方是不用改寫(xiě)任何代碼的。
模塊化有什么好處?
模塊化最大的好處就是多人協(xié)同開(kāi)發(fā),互不影響。
模塊化更多的是用在業(yè)務(wù)層面,分為基礎(chǔ)業(yè)務(wù)模塊和業(yè)務(wù)模塊。
基礎(chǔ)業(yè)務(wù)模塊就是指一些服務(wù)于業(yè)務(wù)代碼開(kāi)發(fā)的功能,抽成一個(gè)模塊,便于統(tǒng)一開(kāi)發(fā)。比如打log日志,相信很多開(kāi)發(fā)者的方式都不太一樣,那么可以將日志功能封裝成模塊,形成規(guī)范便于管理。
業(yè)務(wù)模塊就是每個(gè)人開(kāi)發(fā)的具體功能了,比如朋友圈功能開(kāi)發(fā)迭代,直接新建一個(gè)模塊,獨(dú)立開(kāi)發(fā)調(diào)試,不會(huì)與其他人員產(chǎn)生沖突,測(cè)試通過(guò)后引入到主工程即可。
搭建框架就得用原生語(yǔ)言了,目前安卓第一開(kāi)發(fā)語(yǔ)言是kotlin,而不是java,因?yàn)閖ava是甲骨文的,而甲骨文要向谷歌收取java使用費(fèi),kotlin的語(yǔ)法糖真的很甜,如果你上手kotlin了,相信你不太想再寫(xiě)java了。
安卓也支持C或C++語(yǔ)言,已SO庫(kù)的形式引入項(xiàng)目。
那C++到底能編寫(xiě)什么樣的功能呢?
比如音視頻編碼/解碼功能,C語(yǔ)言是可以直接操作硬件的,如果你用java層面封裝的功能,效率必然比不上C語(yǔ)言。
其實(shí)還要很多功能,比如圖片背景高斯模糊,掃碼解析等等,像這種大型的APP將使用體驗(yàn)優(yōu)化提升哪怕只是1秒,也是非常不容易的。
其次是JavaScript或者說(shuō)是類(lèi)似JavaScript的解析引擎,比如小程序,H5頁(yè)面,都是使用JavaScript引擎解析的,隨著技術(shù)和網(wǎng)絡(luò)的發(fā)展,現(xiàn)在小程序和H5頁(yè)面的體驗(yàn)快追上原生了。
現(xiàn)在業(yè)務(wù)發(fā)展飛快,作為大型APP,必然是需要兼容一些其他有利于業(yè)務(wù)發(fā)展的語(yǔ)言,所以不會(huì)只使用原生語(yǔ)言。以上我們拿安卓系統(tǒng)微信APP舉例,兼容了C/C++,JavaScript?,F(xiàn)在谷歌另一個(gè)UI框架flutter也很火,可以跨平臺(tái),目前咸魚(yú)團(tuán)隊(duì)是用的flutter,感興趣的可以去體驗(yàn)下咸魚(yú)APP(這里絕不是打廣告哈)。
我是非著名攻城獅,希望我的回答對(duì)您有用,感謝您的關(guān)注與支持!
后端老牌語(yǔ)言:Java,C,C++,C#,其中很明顯Java的地位無(wú)法撼動(dòng)。
腳本式語(yǔ)言:Python,Perl,PHP,Ruby,他們比較輕量級(jí),語(yǔ)法靈活,易讀性和維護(hù)性比較差。其中Python在大數(shù)據(jù)方面的應(yīng)用優(yōu)勢(shì)明顯,所以排名靠前,而PHP下滑嚴(yán)重。
后端新銳:Go,雖然現(xiàn)在受眾面比較小,但是以后前途是不錯(cuò)的。
前端語(yǔ)言:JavaScript。實(shí)際上js的影響力比排行榜上的位置要靠前,統(tǒng)治了前端的語(yǔ)言。
移動(dòng)端語(yǔ)言:Swift以及沒(méi)上榜的ObjectC。沒(méi)啥好說(shuō)的,iOS專(zhuān)用。
APP是Application software的縮寫(xiě),可以翻譯為應(yīng)用軟件,主要是給最終用戶(hù)使用的。例如,Office全家桶,PS,瀏覽器,播放器這些都是APP,甚至Linux下的一些沒(méi)有圖形界面的APP。
這些軟APP通常使用C#,C++,Java,Python,shell,Perl這些語(yǔ)言編寫(xiě)。當(dāng)然,最近也有使用Electron這樣的平臺(tái)開(kāi)發(fā)的軟件,如著名的VSCode,它使用的是Web語(yǔ)言,也就是HTML,CSS,JavaScript。
為移動(dòng)平臺(tái)創(chuàng)建的APP,被稱(chēng)為mobile APP(移動(dòng)APP)。我認(rèn)為是想問(wèn)的是這種類(lèi)型的APP。這種類(lèi)型現(xiàn)在的開(kāi)發(fā)類(lèi)型主要分為原生開(kāi)發(fā)和混合開(kāi)發(fā)。
原生開(kāi)發(fā)就是移動(dòng)平臺(tái)(iOS和Android)各自推薦的語(yǔ)言。
iOS平臺(tái)主要是Swift和Objective-C。
Android平臺(tái)主要是Java和Kotlin,當(dāng)然還有用C++寫(xiě)的。
很高興能夠看到和回答這個(gè)有趣的問(wèn)題!
大型的app都是用什么編程語(yǔ)言編寫(xiě)的,.這個(gè)問(wèn)題需要結(jié)合不同的app來(lái)進(jìn)行解釋?zhuān)话銇?lái)說(shuō),不同的app所用的編程語(yǔ)言也不盡相同。
Java是一種編程語(yǔ)言,安卓應(yīng)用用Java開(kāi)發(fā),C語(yǔ)言編程用另一種語(yǔ)言,也可以用安卓開(kāi)發(fā),但需要從Java提出請(qǐng)求。Angio應(yīng)用一般都是用Java語(yǔ)言開(kāi)發(fā)的,Java語(yǔ)言已經(jīng)流行了20多年,并且已經(jīng)做了很長(zhǎng)時(shí)間。如果你想在你的Android APP上工作,對(duì)Java語(yǔ)言的了解很重要。Java還將用于開(kāi)發(fā)Android平臺(tái)內(nèi)的應(yīng)用程序,用于消息、廣告和特殊的Messenger系統(tǒng)。開(kāi)發(fā)Andreas APP的主要編程語(yǔ)言也是Java,如果您在開(kāi)發(fā)過(guò)程中需要切換語(yǔ)言,可以通過(guò)JNI進(jìn)行切換。
Android是基于SDK平臺(tái)的Java。蘋(píng)果的操作系統(tǒng)是基于觸控的,也就是常說(shuō)的Object C,語(yǔ)言比Java優(yōu)越,所以同樣硬件的語(yǔ)言比Java快很多。Java最大的優(yōu)勢(shì)是兼容Linux平臺(tái)、Windows等。
無(wú)論你是使用Java進(jìn)行前端開(kāi)發(fā)、React、Angeular Vue.js應(yīng)用和框架開(kāi)發(fā),還是Lan.js桌面應(yīng)用開(kāi)發(fā)或Node.js模塊開(kāi)發(fā),Java都是關(guān)鍵! 你甚至可以使用TensorFlow.js來(lái)開(kāi)發(fā)一臺(tái)學(xué)習(xí)機(jī)。
中級(jí)的應(yīng)用市場(chǎng)是瑣碎的,由于其性能的原因,主要硬件是直接和低級(jí)的硬件API,翻譯器存在于多個(gè)平臺(tái)上。該網(wǎng)站仍然可以用以下語(yǔ)言訪問(wèn)。 C、C+、PythonC++,也是跨平臺(tái)APP應(yīng)用和微軟Windows Phone系列智能手機(jī)的主要APP開(kāi)發(fā)語(yǔ)言之一。腳本包括可編程腳本和其他腳本語(yǔ)言,所有的開(kāi)發(fā)者都需要時(shí)常編寫(xiě)腳本,這對(duì)于不熟悉語(yǔ)法的新APP軟件開(kāi)發(fā)者來(lái)說(shuō)是很方便和必要的。
開(kāi)發(fā)應(yīng)用行業(yè)生產(chǎn)的主要任務(wù)是開(kāi)發(fā)各行業(yè)的應(yīng)用領(lǐng)域,如PaaS,各行業(yè)的發(fā)展都是基于各種技術(shù)平臺(tái)的應(yīng)用。在工業(yè)互聯(lián)網(wǎng)時(shí)代,工業(yè)領(lǐng)域仍然面臨著大量的應(yīng)用開(kāi)發(fā)挑戰(zhàn),隨著云計(jì)算、人工智能等技術(shù)的發(fā)展,應(yīng)用范圍將不斷擴(kuò)大。開(kāi)發(fā)人員對(duì)應(yīng)用開(kāi)發(fā)的需求比開(kāi)發(fā)平臺(tái)的需求要小,大量的學(xué)生甚至專(zhuān)家都可以從事相關(guān)崗位的工作。
雖然現(xiàn)有的Rust和Type等語(yǔ)言吸引了越來(lái)越多的人,分散了Python的注意力,但Python仍然是最流行和最常用的編程語(yǔ)言之一。由于Python與數(shù)據(jù)采集工具箱關(guān)系密切,越來(lái)越多的編碼訓(xùn)練營(yíng)在培訓(xùn)Python,這將是未來(lái)幾年最受歡迎的開(kāi)發(fā)者語(yǔ)言。
自從機(jī)器人出現(xiàn)后,美國(guó)、日本等國(guó)家的機(jī)器人創(chuàng)始人都開(kāi)始學(xué)習(xí)機(jī)器人語(yǔ)言。1973年,世界上第一種機(jī)器人語(yǔ)言Wave在斯坦福大學(xué)被開(kāi)發(fā)出來(lái)。Wave是一種機(jī)器人動(dòng)作語(yǔ)言,其中語(yǔ)言功能主要是描述機(jī)器人的運(yùn)動(dòng)、受力和接觸,并通過(guò)視覺(jué)傳感器對(duì)機(jī)器人進(jìn)行手動(dòng)和視覺(jué)控制。
以上便是我的一些見(jiàn)解和回答,可能不能如您所愿,但我真心希望能夠?qū)δ兴鶐椭?!不清楚的地方您還可以關(guān)注我的我們“每日精彩科技”我將竭盡所知幫助您!
碼字不易,感覺(jué)寫(xiě)的還行的話,還請(qǐng)點(diǎn)個(gè)贊哦!
安卓 app 是java
蘋(píng)果 app是object C 或swift
當(dāng)然也有些能同時(shí)運(yùn)行在安卓和蘋(píng)果上的語(yǔ)言 比如flutter。
上面那些語(yǔ)言對(duì)app來(lái)說(shuō)都是前端,前端需要跟服務(wù)器交互,用到后端,后端語(yǔ)言有PHP java 等
app分為hybrid和native兩種,即混合式和原生app。Android原生app用Java開(kāi)發(fā),蘋(píng)果用Swift或者Objective C開(kāi)發(fā)。目前蘋(píng)果推出了更加強(qiáng)大的Swift UI,在view方面可以說(shuō)是極大提升了效率?;旌鲜絘pp在原生框架之下大量嵌入了HTML,前后端分離是最基本的標(biāo)準(zhǔn)。至于App的后臺(tái),完全取決于APP的用戶(hù)體量和定位。架構(gòu)上可以引入消息隊(duì)列來(lái)解耦,削峰,異構(gòu),基于業(yè)務(wù)需求選取數(shù)據(jù)庫(kù)如mysql,mongoDB,應(yīng)用服務(wù)器大到tomcat,小到node.js。反向代理服務(wù)器Nginx,第三方消息推送服務(wù)等
目前運(yùn)行在手機(jī)端的應(yīng)用(APP)主要有三個(gè)平臺(tái),安卓,iOS,WP。
安卓系統(tǒng)APP的開(kāi)發(fā)語(yǔ)言:JAVA php,jsp等;
IOS系統(tǒng)APP的開(kāi)發(fā)語(yǔ)言:使用Objective-C或Swift語(yǔ)言;
WP平臺(tái)APP的開(kāi)發(fā)語(yǔ)言:使用C#語(yǔ)言開(kāi)發(fā);
10
回答9
回答6
回答2
回答10
回答5
回答0
回答8
回答0
回答0
回答