首頁>Club>
4
回覆列表
  • 1 # 非著名攻城獅

    我是做安卓開發的,就拿安卓來舉例吧。現在的大型安卓app主要是已原生語言為主,以其他語言為輔,屬於混合開發模式。

    元件化有什麼好處?

    元件主要分三層,業務元件,基礎業務元件以及基礎元件,元件之間只能通過介面耦合,也就是依賴倒置原則,每個元件都提供對外的介面文件以描述該元件提供的功能。

    其次,元件化有很多好處:解耦,平臺化,職責單一,複用性,編譯整合等

    由於技術性較強,就不展開說明了,總之元件化會讓APP開發非常靈活,比如將推送服務元件化,現在使用的小米推送,如果需要換成華為推送呢,很簡單,寫個華為推送元件,替換原來的就可以了,介面定義一致的話,呼叫方是不用改寫任何程式碼的。

    模組化有什麼好處?

    模組化最大的好處就是多人協同開發,互不影響。

    模組化更多的是用在業務層面,分為基礎業務模組和業務模組。

    基礎業務模組就是指一些服務於業務程式碼開發的功能,抽成一個模組,便於統一開發。比如打log日誌,相信很多開發者的方式都不太一樣,那麼可以將日誌功能封裝成模組,形成規範便於管理。

    業務模組就是每個人開發的具體功能了,比如朋友圈功能開發迭代,直接新建一個模組,獨立開發除錯,不會與其他人員產生衝突,測試通過後引入到主工程即可。

    搭建框架就得用原生語言了,目前安卓第一開發語言是kotlin,而不是java,因為java是甲骨文的,而甲骨文要向谷歌收取java使用費,kotlin的語法糖真的很甜,如果你上手kotlin了,相信你不太想再寫java了。

    那C++到底能編寫什麼樣的功能呢?

    比如音視訊編碼/解碼功能,C語言是可以直接操作硬體的,如果你用java層面封裝的功能,效率必然比不上C語言。

    其實還要很多功能,比如圖片背景高斯模糊,掃碼解析等等,像這種大型的APP將使用體驗優化提升哪怕只是1秒,也是非常不容易的。

    其次是JavaScript或者說是類似JavaScript的解析引擎,比如小程式,H5頁面,都是使用JavaScript引擎解析的,隨著技術和網路的發展,現在小程式和H5頁面的體驗快追上原生了。

    總結

    現在業務發展飛快,作為大型APP,必然是需要相容一些其他有利於業務發展的語言,所以不會只使用原生語言。以上我們拿安卓系統微信APP舉例,相容了C/C++,JavaScript。現在谷歌另一個UI框架flutter也很火,可以跨平臺,目前鹹魚團隊是用的flutter,感興趣的可以去體驗下鹹魚APP(這裡絕不是打廣告哈)。

  • 2 # 全棧之旅

    原生開發:

    android:java 或 kotlin,也可能是 java + kotlin

    ios:oc 或 swift,也可能是 oc + swift

    另外,還有混合應用,混合應用一般是 javascript + 原生。

  • 3 # 極客阿霖

    安卓APP開發主流的一般是:原生開發;混合開發;主流使用JAVA和Kotlin語言。

    原生開發:一般都是使用JAVA語言或谷歌官方Kotlin語言的基礎開發APP的。

    混合開發:使用HTML5作為前端頁面展示給使用者看,比如uniapp框架就很適合進行混合開發,後端使用JAVA、PHP開發與前端進行互動。

    iOS平臺開發語言為Objective-C。

  • 4 # IT拾荒老人

    如果你的問題加上大型這個限定條件的話,我覺得就不能用單一的某一種程式語言來說了,一般情況下大型app必然會用到的程式語言有三種

    第一種:平臺原生推薦語言,如:android平臺的Java和Kotlin,ios平臺的object-c和Swift(swift版本之間的差異比較大,要學習的話還是要注意版本選擇)。這部分一般用於處理核心業務、許可權請求以及高效能要求頁面。

    第二種:web語言,這裡主要指的是h5相關的技術棧。這部分主要處理非核心業務邏輯,以及需要動態更新的頁面。

    第三種:NDK相關,這裡一般用到的就是c、c++。大部分寫業務邏輯的同學用的比較少,不過大型app一般還是會用到一些。主要應用於安全性要求高,高效能演算法以及跨平臺演算法實現

  • 5 # 全國一級抬槓運動員

    蘋果 app是object C 或swift

    當然也有些能同時執行在安卓和蘋果上的語言 比如flutter。

    上面那些語言對app來說都是前端,前端需要跟伺服器互動,用到後端,後端語言有PHP java 等

  • 6 # sofa哥

    如果是Android系統APP一般使用的程式語言是JAVA和C/C++。蘋果手機IOS系統APP程式設計使用object-c和swift

  • 7 # 墨初0

    你好,我從事開發也已經有10多年的經驗了,從最開始android開發,到後面的iOS開發,後端開發架構部署都有非常多的經驗,對於一款app 的開發沒有絕對的語言限制。

    也就是說需要根據公司的業務需求來決定使用哪套方案合適,目的就是為了給公司節省成本創造更多的效益。無外乎以下幾種情況:

    跨平臺開發,需要同時開發多個平臺,比如 h5, android, iOS, 各種平臺小程式等,並且是初創公司或者是外包專案。uniapp

    uni-app官網

    這種開發模式優點和缺點都非常突出。

    優點: 極大節省開發成本,只需要 1 ~ 2 名前端就能開發一個比較大型專案,尤其跟一些ui庫的結合比如 uviewUI(使用之前需要調研下,ui庫是否能同時支援原生和小程式等,有些ui庫無法進行原生渲染), 而且官網還有各種模板,對於學習和開發能提高很大的效率。

    一般情況下只要對體驗不是非常高那種,就算要一點體驗或者uniapp 沒有實現的功能也可以使用原生開發作為sdk 嵌入進uniapp中,對於外包專案可以節約非常可觀的支出,小公司也能快速開發投放市場用來試錯,就算市場對這種app不感興趣也能有調整的機會,畢竟成本比原生開發少的太多了。

    缺點:同樣缺點也極為明顯,那就是說一千道一萬的體驗,使用也許沒問題,但要是對體驗非常挑剔的話還是算了,畢竟是js 渲染,跟原生還是沒有可比性。最重要一點就是iOS的稽核比較嚴格,原生程式碼必須佔有一定比例才能透過稽核,機審還是比較牛逼的,目前來說uniapp 仍然可以上架,但蘋果要是認為js程式碼過高,或者有熱更新嫌疑的話會不會禁用這種框架的app就不好說了。

    React Native 也是一種跨平臺的方案。

    這種方案其實跟uniapp 差不多,但只能編寫android和iOS兩個平臺,優缺點又差不多,國外專案用到的挺多,但國內專案怎麼說呢感覺不太適合,國內畢竟平臺非常多,如果在現在或者未來一段時間內確認只有android和iOS 版本,那麼這也是一個不錯的選擇,而且在蘋果稽核的時候也會少一些顧慮。

    flutter

    是google 開源的一套跨平臺方案,這個方案個人推薦還是不要使用了,現在大廠基本都沒在用這個,就算以前用過也改回去了,目前也就閒魚 app 在某些場景下使用,我以前也推廣過 但收效甚微,學習成本比較高,同樣只有android和iOS平臺,感覺跟國內市場水土不服

    原生開發,這種比較適合業務比較穩定,能投入一定成本,就算是外包也是那種比較穩定合作的專案,也是現在比較主流的選擇方式,純原生的很少見,基本就是混合開發。

    這種優缺點同樣的突出。

    優點:可以使用原生的所有api, 能夠將體驗做得最好。蘋果稽核也不會出現任何問題。

    缺點:缺點就是需要投入很高的開發成本,一個大型專案光是原生android,iOS各最少投入兩個人,還要加上h5相關的開發,不是大公司還真沒辦法承受這種支出,幾乎是跨平臺的 3 ~ 4倍的前端投入,這僅是金錢還需要時間的投入,其開發週期會大於跨平臺開發。

    如今社會發展的極快,技術也是不斷的進步,現在講究大前端的世界,這就要求我們不能侷限自己眼下的技術,如果只知道android,iOS不懂js,html 或者反過來都是不能成為一個優秀的前端的,因為無論採用什麼樣的技術 自己都無法獨立完成開發,吾輩加油吧~

    技術方式千千萬,只有一個才是最優解,根據公司的實際情況採取最優的方案。

  • 8 # 幫螞蟻搬家

    受邀回答:

    大型APP按機分類:安卓手機端和蘋果手機端

    手機上的APP都是用什麼程式語言寫的?

    今天想和大家分享的內容是和我們手機上APP相關的,它們都是用什麼程式語言寫的呢?

    主要針對兩大移動端:Android和IOS,我們就不多說了,下面我們從另一個角度進行分類。

    01

    第一類:針對單一APP開發的語言,即開發一套程式碼只能執行在一個平臺上。

    1、開發Android的:Java和Kotlin

    Kotlin是一種在Java虛擬機器上執行的靜態型別程式語言,被稱之為Android世界的Swift。Kotlin可以編譯成Java位元組碼,也可以編譯成JavaScript,方便在沒有 JVM 的裝置上執行。執行效率提高很多,並且語法更加簡潔好用。

    如果是與系統底層進行互動則需要使用JNI技術,透過和C或者C++結合實現相應的業務邏輯,比如美顏或者直播型別的APP。直播型別的APP採用的ffmpeg技術,其中ffmpeg就是用C語言實現的。

    2、開發IOS的:Swift和Object-C

    Swift 結合了 C 和 Objective-C 的優點並且不受 C 相容性的限制。

    02

    (二)第二類:可以針對多個APP端的程式語言,即只需開發出一套程式碼,就可在多個平臺上執行。

    1、第一種是Flutter技術

    基於Dart語言,比如現在閒魚APP就是基於flutter開發的。並且有著多年經驗,而且閒魚免費開源了框架。

    Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構建高質量的原生使用者介面。Flutter可以與現有的程式碼一起工作。在全世界,Flutter正在被越來越多的開發者和組織使用,並且Flutter是完全免費、開源的。

    Flutter的熱過載可幫助您快速地進行測試、構建UI、新增功能並更快地修復錯誤。在iOS和Android模擬器或真機上可以在亞秒內過載,並且不會丟失狀態。

    尤其是在UI上使用Flutter的現代、響應式框架,和一系列基礎widget,輕鬆構建您的使用者介面。使用功能強大且靈活的API(針對2D、動畫、手勢、效果等)解決艱難的UI挑戰。

    2、第二種是Uni-app框架基於Vue.js。俗稱一套程式碼編到8個平臺上。

    第二類開發起來更顯效率,節約很多時間成本。當然,如果加上大型APP這個限定條件的話,就不能用單一的某一種程式語言來說了,一般情況下大型APP必然會用到的程式語言有三種:

    第一種:平臺原生推薦語言,如:Android平臺的Java和Kotlin,ios平臺的object-c和Swift(swift版本之間的差異比較大,要學習的話還是要注意版本選擇)。這部分一般用於處理核心業務、許可權請求以及高效能要求頁面。

    第二種:web語言,這裡主要指的是h5相關的技術棧。這部分主要處理非核心業務邏輯,以及需要動態更新的頁面。

    第三種:NDK相關,這裡一般用到的就是C、C++。大部分寫業務邏輯的同學用的比較少,不過大型APP一般還是會用到一些。主要應用於安全性要求高,高效能演算法以及跨平臺演算法實現。

  • 9 # 程式設計師顏軍

    APP的開發語言,還是跳不出Android和iOS兩個主流平臺,前者主要使用Java和kotlin,後者主要是Swift。基於混合模式的,h5+css也是需要的。這主要是客戶端的,主要的功能邏輯在伺服器端,開發語言的選擇就更多了,包括Python,PHP,Java,nodejs等等。

  • 中秋節和大豐收的關聯?
  • 為什麼現在電腦基本沒有病毒了?