Native, Hybrid, Web App, Cross App哪一個是開發App最佳方案呢 ?

Milk Midi
5 min readOct 14, 2019

--

大家好,我是奶綠茶
今天來分享關於App開發
Native(原生)
Hybrid(混搭 Native + Web)
WebApp(網頁)
CrossApp(單一程式語言,即可佈屬多平台)

1 Native(原生語言)

一般來說指的是該裝置平台官方使用的程式語言
Android 使用的是 Java(現已換成kotlin)
iOS 使用的者 ObjectC(現在主打 Swift 語言)
Windows Phone(嗯,就讓他成為回憶吧)
優:
執行速度最快,效能最佳,使用者體驗也會是最好的
資源多,遇到問題時很好找到解答或是問人
開發人員時間投資下去,一般來說是不會虧的,除非該平台收掉(WindowsPhone 表示)

缺:
一個裝置平台就要請一位工程師(老闆不開心)
各平台 UI 表現不一樣(UI,UX人員不開心)
各平台操作行為不一樣(UI,UX人員不開心)
Android 超難 Debug (開發人員不開心)

2 Hybrid( Native + Web )

在 Native App 裡,開一個 Web 容器(一般通稱 Webview),然後把網頁載進來。

像在 Line , Facebook 裡,點擊連結時,會在該應用程式打開網頁
就統稱 Webview

早期 Facebook App 曾經採用過這樣的方式開發,但後還是因為效能問題放棄了。

優:可以保有 Native 功能,而部份單元採用 Web 開發,達到省人力

缺:在 App 裡放進 Web 的程式,其實效能是不好的
因為要啟動的元件太多(不過隨著手機硬體的進步,會慢慢改善)
使用者體驗沒有很好

3 WebApp

簡單來說就是一般的網頁應用程式。

優:不受限任何平台,只要有Browser 就可以開啟,不需要下載

缺:Web 的效能總是慢 Native 很多
無法存取或呼叫裝置硬體功能(電量、藍芽等)
無法有推播功能(Android Chrome 已經有了,但 iOS 目前還未開放)
因為不需要下載,自然也不會有 App icon (可以做到類似的)
當有功能做不到時,就真的都做不到,因為無法和 Native 互動

補充:現在Html5 有個 PWA, 能夠讓你做到離線版的 WebApp
或許將來 WebApp 可以接近 Native App.

4 CrossApp

這分類奶綠我覺得單獨拿出來介紹更適合
一般來說指的是單一程式語言,即可佈屬到多平台(老闆最愛)

Unity3D (五星推薦)
很熱門也很成熟的技術,如果你想要開發 3D 遊戲,這套絕對是首選

ReactNative (四星推薦)
老爸是 Facebook, 使用 Javascript 語言
透過該核心技術,把 JS 轉譯成 Native Code
可以有 Native 的優點,又可跨平台,算是目前業界很熱門的技術。

Titanium js (不推)
使用 Javascript 語言,轉譯成 Native Code
和 ReactNative 有點像,但玩的人好像不多。

Flutter (五星推薦+強力推薦)
老爸是 Google, 使用 Dart 語言
該技術最大的優點除了跨平台外,連 UI 都長的一模一樣。(奶綠很推這技術)

Xamaris (不推)
老爸是 Microsoft, 使用 C# 語言
和其他跨平台語言不同的點是,他還是需要懂本來的平台架構

AdobeFlash(推不推都不重要,反正已陣亡)
老爸是 Adobe, 但…………………………… 就讓他成為回憶吧。

PhoneGap (三星推薦)
老爸是 Adobe(應該是,有錯請指正
使用 html , css , js 製作的網頁應用程式
然後再用 Webview 包起來。

CrossApp 跨平台語言最大的優點,就是老闆只要請一個工程師,就可以發大財(誤)

缺:當發生問題時,會很難追查(奶綠我覺的這是很大的致命傷)

是你的 Code 問題 ? 還是該語言本身的 Bug ?
當有功能無法達到時,還是需要 Native 的幫忙
有興趣的人可以查一下 airbnb 為何放棄 ReactNative 開發

奶綠我會哪些呢?
Android Java(超久沒寫的,現在有點忘光了)
這是 2016 年開發的拍賣 App Demo (未上架)

React 還滿熟的,但 ReactNative 我就只有編譯過 Hello world
Titanium js 也只有編譯過 Hello world
Flutter 最近很認真在學(這是奶綠我用 Flutter 寫的 Demo)

PhoneGap 會寫網頁就會用
AdobeFlash ………………. 就這樣吧

總結一下

技術本身沒有對或錯,也沒有最佳方案
完全取決與你的 App 內容(Content 才是王道)

如果文章對你有幫助,一杯咖啡的費用可以支持我創作更多好的文章,感謝你。
https://buymeacoffee.com/milkmidi

--

--