這種技術能夠替代 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,其實是針對不同場景的不同技術選擇,背後的核心理念就是 “因地制宜”,什麼樣的場景,我採用什麼樣的技術能達到提效和附能的目的,是技術選擇的唯一標準。

多說一句,國內大型互聯網公司普遍採用了 “大中臺” 戰略,期望建設強大的中臺去支撐業務。同樣的,作爲中小型團隊,選擇一種技術,並不是說靜態地去看當下這個技術有哪些好處壞處,而是要放在 “外置中臺” 的角度,動態的去審視。一個技術棧長遠的看能決定你的研發模式和團隊構成,所以這不是那個工具最省事。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章