2015年12月15日 星期二

Android - Ch1 Android 作業系統簡介:發展歷史 與 系統設計

沒有留言:
 

由於最近要寫個 Android app,學習 coding 前還是習慣把一些歷史小常識看一看,Android 作業系統已運用在超過十億台的手機和平板電腦上,每次讀這種軟體發展史都覺得人類能造出這些軟體真是太神了XDD

下面的內容主要摘錄自維基,再加一些補充和好圖:)




一、Android 歷史簡介


Android 系統最初由 Android 之父 Andy Rubin 等人開發製作,於2005年7月11日被美國科技企業 Google 收購,2007年11月5日,在Google的領導下,成立開放手持裝置聯盟 (Open Handset Alliance)。

隨後,Google 以 Apache 免費開放原始碼許可證的授權方式,發布了 Android 的原始碼,任何廠商都不須經過 Google 和開放手持裝置聯盟的授權隨意使用 Android 作業系統;但是製造商不能在未授權下在產品上使用 Google 的標誌和應用程式,例如 Google Play 等。





二、Android 系統設計


Android 作業系統的核心屬於 Linux 核心的一個分支,具有典型的 Linux 排程和功能,但並不是 GNU/Linux。因為在一般 GNU/Linux 裏支援的功能,Android 大都沒有支援,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango 及 Glibc 等皆被移除。Android 硬體抽象層 (HAL, Hardware Abstraction Layer) 把 Android framework 與 Linux kernel 隔開,這種中介層的方式使得Android能在行動裝置上獲得更高的執行效率。2011年,Linus Torvalds 說:「Android的核心和Linux的核心將最終回歸到一起,但可能不會是4-5年。」


Android的系統架構圖示


在 Android 應用程式開發中,通常通過在 Android SDK (Android軟體開發包) 中使用 Java作為編程語言來開發應用程式。開發者亦可以通過在 Android NDK (Android Native開發包) 中使用 C 語言或者 C++ 語言來作為編程語言開發應用程式。雖然 Android 作業系統中的應用程式大部分都是由 Java 編寫的,但是 Android 卻是以轉換為 Dalvik executables 的檔案在 Dalvik 虛擬機上執行的。




三、Android 應用程式


Android系統是基於Linux核心開發,使用Java作程式語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個Activity類別負責建立視窗,一個活動中的Activity就是在前景模式(foreground),背景執行的程式叫做Service。兩者之間透過由ServiceConnection和AIDL連結,達到複數程式同時執行的效果。如果執行中的Activity全部畫面被其他Activity取代時,該Activity便被停止,甚至被系統清除。



View等同於J2ME的Displayable,程式人員可以透過View類別與「XML layout」檔將UI放置在視窗上,並可以利用View打造出所謂的Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout。



至於ViewGroup是各種layout的基礎抽象類別,ViewGroup之內還可以有ViewGroup。View的建構函式不需要在Activity中呼叫,但是Displayable的是必須的,在Activity中,要通過findViewById()來從XML中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View與事件息息相關,兩者之間透過Listener結合在一起,每一個View都可以註冊event listener,例如:當View要處理使用者觸碰的事件時,就要向Android框架註冊View.OnClickListener。另外還有Image等同於J2ME的BitMap。




[用心去感覺] Java2平台:J2EE、J2SE、J2ME 的區別

JDK (Java development toolkit),相當於是Java的庫函數,是編譯、運行java程式的工具包。而 J2EE、J2SE、J2ME 是 java 針對不同的的使用來提供不同的服務,也就是提供不同類型的 library。分別是:


  1. 針對企業網應用開發的J2EE (Java 2 Enterprise Edition) : J2EE 是在 J2SE 的基礎上添加了一系列的企業級應用編程接口。j2ee包含有很多的技術,jsp、servlet、jdbc、jme等
  2. 針對普通PC應用開發的J2SE (Java 2 Standard Edition) : J2SE是所有Java技術的基礎,不管開發人員要開發什麼平台的Java應用程序,都必須先從J2SE學起。
  3. 針對嵌入式設備及消費類電器開發的J2ME (Java 2 Micro Edition)




J2EE、J2SE、J2ME 都是sun公司提出的一個標準,符合這個標準的產品叫「實現」;例如 boss,weblogic,websphere 都是 J2EE 標準的一個「實現」。

j2se == jdk == bin + demo + include + jre + lib + src.rar //SUN官方的jdk1.4。2
j2ee == jdk + ... //這裡的 jdk 和上面的只有 jre 文件不一樣大,因為j2ee比j2se多了好多,如java.servlet.* ,java.servlet.http.* 等。




四、Android 標誌與命名由來


Android標誌是一個全身綠色的機器人,有時候,它會以純文字的標誌展示。

Android一詞最早出現於法國作家利爾亞當(Auguste Villiers de l'Isle-Adam)在1886年發表的科幻小說《未來夏娃》(L'Ève future)中。他將外表像人的機器人取名為Android。







References


Wiki - Android
https://zh.wikipedia.org/zh-tw/Android

Tatsujin in NCUCC - ANDROID APP教學
http://tatsujin.m.candytan.org:8080/?tag=android

牛鼻 JavaNB - jdk,j2ee,j2se,j2me的概念区别
http://www.javanb.com/j2se/1/5225.html

J2ME 走向成熟
http://www.bianceng.cn/Programming/Java/201103/25052.htm







沒有留言:

張貼留言

技術提供:Blogger.