《TO》導讀:本篇作者為【橘子學院 Android App 開發課程】講師葉承達 Mosil,在 Android 開發深耕多年,目前為原力資訊顧問股份有限公司 Co-Founder,同時也是臺北 Google 開發者社群的共同發起人。
本篇開始會有一系列,針對想進入 Android 世界,卻摸不著頭緒,或是懵懵懂懂的朋友所撰寫的入門文章。內容會以科普文的精神,偏向簡易的 Java 概念以及 Android 的一點相關內容,盡可能減少大家的疑惑與門檻。若是您不知道到底要學 Android 前到底需不需要有 Java 的基礎知識的話,也許這系列可以幫到您一點小忙。
也歡迎大家一起加入討論,暢遊在 Android 的開發世界中!
- 一開頭,我們先來簡單介紹一下 Android
Android 系統是源自於 2003 年 10 月,由有「Android 之父」之稱 Andy Rubin 和其他幾位共同創辦「Android Inc.」的夥伴建立。而 Android 是一套以 Linux 為核心所開發出來的作業系統,相信早年 (?) 投入 Android 開發的前輩、大大們都看過這樣的架構圖:
Android 架構圖(來源:wiki)
整個架構分成四大層,相信各位在其中並看不到任何跟 Java 相關的文字,而其中關鍵由下算上第二層的右邊區塊「Android Runtime」。這一塊的主要功能就是讓核心層可以看懂上面兩個應用層的翻譯,而該區塊中有一個名為 DVM (Daivik Virtual Machine) 的虛擬機器角色。
如果各位有點印象的話,有些網頁或是程式若是以 Java 編寫而成的,在其執行時,都會被提示要安裝 JVM(Java Virtual Machine) 這個工具,而 Daivik 就是在 Android 世界裡這麼樣的存在。而後來在 Android 4.4 以後,便由新的架構- ART (Android Runtime) 取代之。
- 那這個跟 Java 有什麼關係呢?
相信很多人都知道 Android 的應用程式是由 Java 程式語言撰寫而成,而一般 Java 程式需要由 JVM 來翻譯、分派工作給系統核心去執行,而在 Android 的世界裡便是由 Daivik/ART 來擔任這個角色。
那為什麼要用 Java 來做為 Android 的應用程開發程式語言,我們可以從兩個面向來看:
一、使用者多
原本使用 Java 來開發的工程人員就不在少數了,在 Android 的推波助瀾下,更是常居前二的熱門程式!
最大的好處自然是 Java 開發者很容易就加入其中,不用再額外學習新的程式語言規則。而 Java 的資源與社群也一直都相當地多以及活躍,很容易取得支援。
資料來源:TIOBE (2016/01)
二、授權
這是保護程式開發者很重要的一個面向。若是直接用 C/C++ 開發,讓 Linux 核心去執行的話,應用程式若一個不小心直接使用到 Linux 的函式庫 (Library),那可能都會受到 Linux 的 GPL 的規範,而迫使要開發者要將原始碼給公開出來;對 Java 的程式碼則是另外用了 Daivik 來避開 Java 的授權規範。
嗯?您說 Google 不就是因為 Java API 的關係被 Oracle 告?
哦…那是後話了,就不在本篇討論了 XD
不過,當然要討論現在 Google 有沒有機會用其他語言取而代之,比方說 Go;或是像 iOS 再設計一個新的開發框架出來,這都是有可能的,因為…這就是 Google 的基因。但這就不會是一時半刻會發生的,這問題,現階段想想就好,不用太認真 XD
____________________
科技化時代來臨,多一項技能就是多一個保障。在各大產業都尋求數位化的時刻,會寫 App 或至少懂一些基本概念真的很、有、用!
如果你也跟我一樣:渴望抓住科技時代潮流不被淘汰,請不要錯過超紮實 24 小時的開發訓練!
臺北 Google 開發者社群共同發起人、資深安卓 Coder 手把手教學,快點來報名吧~
(參考資料:Wikipedia/Android Operating System、維基百科/Dalvik 虛擬機、TIOBE;圖片來源:Tsahi Levent-Levi,CC Licensed)