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