這種技術能夠替代 Android 原生開發?
今天在瀏覽知乎的時候,看到這么一個問題,感覺很有意思,有點分享價值,如下:
APICloud 能都替代 Android 原生開發嗎?
APICloud 現在好像蠻火,但是能替代比如在 Eclipse,AndroidStudio 來做的 App 開發嗎?本來在 Eclipse 上做 App 開發的程序員有必要轉到 APICloud 上開發嗎,畢竟還是簡單,快速些。
說實話,這個問題本身就問的就有問題,沒有說一種技術可以完全替代另外一種技術,每種技術的側重點和優勢都不一樣,不同的需求和場景,不同的體驗可以選擇不同的技術,技術之間其實沒有什么完全替代之說。這是我們面臨產品,項目,和整個團隊技術能力時,需要做的一種技術選型罷了。
我之所以說,很有分享價值,是因為我看到了知乎大神「欲三更」寫的回答,很全面,他從原生開發、hybrid 開發、RN/Weex 為代表的 “偽 hybrid 開發”,以及 APICloud 這些技術選型中做了不同的優勢和劣勢,以及技術特點的分析,而這些回答,可以讓大家更深入,更清晰的了解這些技術。為以后的開發,技術選型能夠有一定的參考和學習價值。
知乎大神「欲三更」的回答
APICloud 和原生應用開發,不是互相替代的關系。
不同的場景不同的需求,自然采用不同的技術,我們需要認清的是我們處于什么場景,選用了不同的技術會有什么優勢,什么痛點。
嚴格的講,這個問題應該是個四方比較的技術選型問題:原生開發、hybrid 開發、RN/Weex 為代表的 “偽 hybrid 開發”,以及 APICloud。
為什么將 hybrid 開發和 APICloud 分開?因為 APICloud 是一個包含跨平臺 APP 開發引擎、開發工具、云服務、模塊市場等服務的完整 APP 開發生態。目前 APICloud 已經推出面向 Web 開發者的 Deep 引擎、面向已有 native 應用的 SuperWebView、模塊市場,以及數據云、運營云等云服務快速開發環境。不能僅僅作為一種 “工具” 或者單一技術看待。
下面我們簡單列舉一下四種技術選型的優勢和劣勢:
原生開發
優勢:
-
廠商原生技術,自由度***。
-
社區和文檔化都非常完善,各種技術資料和解決方案相當豐富。
-
歷史比較久,具備一定資歷的開發人員比較好招(并不意味著便宜)。
劣勢:
-
開發成本高,技術難度高。
-
項目無法跨平臺,需要兩支團隊。
-
需要投入的開發、測試力量以及周期都比較長,這會導致迭代節奏偏慢(要想快就得加人),不一定更得上產品的迭代節奏。
hybrid 開發
優勢:
-
網頁迭代速度快,這個是公認的。
-
跨平臺性突出,有利于節省人力,1 到 1.5 人可以維護兩大平臺的應用。
-
前端社區的技術演進非常快,社區活躍。
-
當下而言,前端工程師人力資源比較豐富。
劣勢:
-
性能劣于原生開發,容易出現性能問題。
-
嚴格的說 hybrid 只是一種技術理念,而并不是具體的技術解決方案。應用開發商常常需要自行構建維護技術棧。
-
雖然有封裝了 native 接口的 hybrid 框架(比如 ionic)可選擇,但是對于相對復雜的應用,現有的 hybrid 框架并不能滿足需要,所以使用 hybrid 方式開發的應用,常常需要原生補充,這種情況下不同模塊的用戶體驗難以統一。
RN/Weex
優勢:
-
使用系統原生 UI 組件,性能和體驗相比 hybrid 更接近于原生。
-
由于 RN 和 Weex 都是一線互聯網廠商的產品,除了組件和 api 封裝之外,還會對熱更新一類的工程需求給出明確解決方案。
劣勢:
-
不使用 html5 自然有好處,但是也會帶來壞處。比如,需要分別搭建 Android 和 IOS 開發環境,分別 Release。RN 的核心理念是 “learn once write anywhere” 而非 “write once run anywhere”。
-
再比如針對 RN/Weex 的設計并不像 hybrid 那么靈活,并且會一定程度上產生平臺分化。
-
學習曲線可能不像大家想像中那么平滑,不管是前端還是移動開發工程師,進入 RN/Weex 領域還是需要一個學習期的。
-
RN/Weex 的可調式性比純瀏覽器還是要差上一截,開發體驗并不那么好,這也一定程度上增加了開發成本。
APICloud
說優勢劣勢之前,我們先來解釋一下 APICloud 和原始 hybrid 的區別。hybrid 技術是 APICloud“端” 開發的核心技術手段,但是 APICloud 基于 hybrid 做了很多事。從項目開發過程來看,使用現有開源的 hybrid 技術或者自建 hybrid 框架,更像是自己買菜做飯,建立和維護技術棧,以及針對各種問題積累 know how 的成本是比較高的,而使用 APICloud 開發,其體驗更像是使用. net、java 這樣的企業級開發技術棧,或者說去飯店點餐,你拿到手的東西已經相當完整,可以直接聚焦于應用。
優勢:
-
傳統 hybrid 開發的優勢,APICloud 基本是具備的。
-
相比傳統 hybrid,APICloud 提供的是整體解決方案以及標準化的技術平臺,不需要自行搭建熱更新等外圍技術。
-
技術支持體系,開發者社區,有全面的產品、技術文檔、視頻教程等,技術論壇中有活躍的開發者,也有官方一線產品人員提供技術支持,這在國內的社區中,維護度算認真的了。
-
模塊市場。模塊是 APICloud 的核心優勢之一,編碼時拿來即用,無需重復造輪子,目前有五六百個模塊,涵蓋了 APP 開發過程中 90% 以上的功能,同時聚合了國內主流第三方服務,比如 IM,推送,人工智能,物聯網,直播等等。原生開發者還可通過 APICloud 的模塊擴展機制,開發模塊在模塊 Store 上進行售賣。
-
APICloud 利用高效的 “混合渲染” 和模塊化機制,為 APP 提供與原生一致的性能,同時還繼承 Html5 開發簡單的優勢,二者對開發人員來說基本上是透明的。
劣勢:
-
由于 APICloud 是基于標準 html5 擴展的技術,API 比較新,開發人員需要一定的時間熟悉、學習其擴展的 API(個人認為相對 RN/Weex 來說要容易一點)。
-
在 APICloud 中開發 APP,原則上不提倡使用 JQuery 等傳統 Web 開發常用的庫和框架。習慣使用框架的前端開發人員使用 APICloud 開發 APP 時,可能還需要花時間去適應。
-
APICloud 的技術引擎和大部分的模塊沒有開源,這其實算是一把雙刃劍,但從開發者角度講,開源平臺,會降低項目開發中的一定風險,尤其是可調試性。
就技術而言,目前 APICloud 的客戶端技術,很像是桌面端的混合開發方案 electron,立足于 html5,通過統一標準的 API 消除不同平臺、不同操作系統之間的差異,達到 APP 跨平臺的目的。但是相比純技術方案,APICloud 是一個 “有產品有生態有運營” 的商業級開發平臺。今天我們看到的特色,也主要是因此誕生的。
回到開始的觀點,APICloud 并不是原生開發的代替技術,APICloud 實質上是一個為移動端 app 開發提效和賦能的平臺體系。基于 APICloud 做應用,還是在原生應用中內嵌 APICloud,其實是針對不同場景的不同技術選擇,背后的核心理念就是 “因地制宜”,什么樣的場景,我采用什么樣的技術能達到提效和附能的目的,是技術選擇的唯一標準。
多說一句,國內大型互聯網公司普遍采用了 “大中臺” 戰略,期望建設強大的中臺去支撐業務。同樣的,作為中小型團隊,選擇一種技術,并不是說靜態地去看當下這個技術有哪些好處壞處,而是要放在 “外置中臺” 的角度,動態的去審視。一個技術棧長遠的看能決定你的研發模式和團隊構成,所以這不是那個工具最省事。