智能手機雖說是移動電話,但我們完全可以將其作為小型化的電腦來思考。這樣一來也能夠顯示出智能手機iOS開發的高性能。我們首先一起來回顧下智能手機OS的歷史。
OS的黎明期
其實在很早之前就已經有這樣的想法,即在像智能手機這樣可以便利攜帶的小型電腦終端上運行OS。大約20年前左右,在美國的拉斯維加斯舉辦的世界最大的電腦相關產品展示會“COMDEX”上,日本索尼公司開發的當時稱之為“MagicjLink”的攜帶型信息終端吸引了很多的關注(圖1)。這款終端并不僅僅是一款用來記筆記和日程規劃的電子帳本,當時已經具備了通信功能還可以收發郵件和搜索信息。
?
圖1:圖片上部的是MagidLink設備,下面部分為鍵盤。液晶顯示也是單色的。
MagicLink是索尼公司的產品,但終端的本質是能夠在這臺終端上運行的OS。這就是由美國的蘋果公司的工程師們開發出來的稱之為“MagicCap”的OS(圖2)。因為在那個年代“通過OS商業交易是件大生意”,所以有各種各樣的OS被發布。眾所周知的Windows 95也是在那一年發布的。
?
圖2:MagicCap OS的顯示畫面。起動終端后就會進入圖片所示的界面。包括電話和記帳以及筆記功能。用筆觸摸就可以啟動各個APP。其中的“In和Out”代表的是郵箱。
這款OS是由蘋果的工程師開發,日本的制造商負責終端生產。
蘋果的工程師只負責開發了OS,硬件部份是由日本的制造商等外部公司開發出來的。蘋果公司還因此設立了“General Magic”這樣的一家子公司。這家公司主要負責推進MagicCap的開發和為日本的制造商提供幫助。索尼公司和現在的松下以及三菱等公司以MagicCap終端的開發為名制造出了最初的一款產品即索尼公司的MagicLink。
蘋果公司的工程師開發的MagicCap作為“移動OS”是具有劃時代意義的。但是MagicCap最終卻以失敗告終。因為這款終端根本賣不出去。硬件的處理能力和重量以及價格等等在當時都成為了問題。要知道那個時代網絡還不是一般人可以使用的。
為MagicCap設想的網絡和那個年代即1980年的電腦使用的網絡是一樣的。而網絡和Windows95的爆發性普及卻是在那之后的一年才開始的。
Android之父
實際上在General Magic公司負責MagicCap開發的工程師中有一位叫作Andy Rubin的年輕人。
這名年輕人在General Magic公司解散一年之后創立了一家面向移動終端的OS開發的創業公司。和General Magic公司一樣,硬件的開發交由外部公司,本公司集中精力于OS的開發。但是和General Magic公司只向自己的合作公司提供OS不同的是,Andy Rubin的公司免費向其它公司提供OS和APP開發環境。
由Andy Rubin創立的公司正是現在的“Android”。后來這家公司被美國的Google公司收購,而Android這一公司名也就只能作為OS的名稱而保留了下來?,F在被稱之為Android之父的Andy Rubin在公司被收購之后留在了Google公司并且負責Android業務(現在負責機器人的開發)。
iOS之父
如果說Android之父是MagicCap的開發者Andy Rubin,那么能稱得上是“iOS之父”的又是誰呢?
實際上蘋果公司在推出MagicCap終端的幾年前就已經銷售一款叫作“Newton”的小型終端。但是遺憾的不論是設備還是開發環境當時都非常昂貴最終沒有普及開來。
現在的iPhone的OS“iOS”的先祖即不是來自蘋果公司開發出來的Newton也不是來自蘋果子公司開發出的MagicCap,而是另有來源。是蘋果的創始人Steve Jobs。
General Magic公司正在開發MagicCap的時代,作為蘋果公司創始人的Steve Jobs從蘋果公司離開,并且創立了“NeXT Computer”這家公司,并且開發出了一款叫作“NeXT”的高性能電腦。與此同時開發了一款叫作“NeXTSTEP”的OS。
NeXTSTEP是通過叫作“ObjectOriented”的新型方法開發出來的一款OS。NeXTSTEP的APP通過“ Objective-C”這種新的編程語言來開的。 Objective-C不僅可以使APP開發變得更加有樂趣而且性能非常高,是一種具有劃時代意義的編程語言。
雖說從技術上來講是絕佳的,但是結果卻和MagicCap一樣,NeXT電腦最終在商業上也沒有獲得成功。但是NeXT并沒有消失,而是被蘋果公司收購作為蘋果公司的技術而被保留下來。
那個年代的OS
那個年代的電腦不論是Macintosh還是Windows都尚不穩定,使用過程中會突然出現重啟,電腦突然出現問題,軟盤或硬盤出現故障導致數據無法讀寫的情況并不少見。不論是微軟還是蘋果公司都因此傷透腦筋。
故障最大的原因在于OS上的應用的運行結構。當時電腦用的OS還處于比較原始的狀態。在電腦運行的所有軟件只能一個一個地按順序利用CPU。CPU同時只能執行一個程序命令。
你可以想象一下只有一位收銀員的超市的客戶排隊情形。把客人想象為APP和OS,收銀員是CPU就可以很好地理解了。某個應用在運行的時候包括OS在內的其它軟件都得停止,等待CPU空閑下來。
并且當時的OS已經停在收營員的前面了,但是那些不受控制的APP卻停不下來。這些不受控制的APP一直占用著CPU,導致OS本身不能使用CPU,OS自然也就無法運行。
微軟計劃通過開發一款叫作Windows NT的新型OS來處理這種故障。具體來講就是通過采用“preemptive multitasking”這一結構來使系統達到飛躍性穩定。
簡單來說“preemptive multitasking”就是通過在短時間內讓所有的APP都強制停止,而讓其它的APP運行的一種結構。以剛剛超市的例子來講,“在收銀員前面停留的時間設定為1人10秒,短時間之內立即就可以切換到其它人?!?
也就是說在收銀員處需要花1分鐘以上的人必須要在收銀員處按順序排6次以上的隊。這樣一來雖然對于花時間長的人而言變得麻煩了,但是卻不再會因為一個人不遵守規定而出現死機現象了。Windows NT就是采用這樣的一種結構。
另一方面蘋果公司希望通過采用NeXTSTEP的技術來強化Macintosh的OS。NeXTSTEP和Windows NT一樣也采用了“preemptive multitasking”這一技術。而NeXTSTEP是以“UNIX”為基礎開發出來的,而UNIX可以回應“preemptive multitasking”。NeXTSTEP和Windows NT一樣可以穩定地運行正是蘋果公司收購NeXT的原因。就這樣Steve Jobs再次回歸蘋果公司。
以NeXTSTEP為基礎開發出來的OS叫和“Mac OS X”(圖3)。而APP的開發使用“ Objective-C”這一點也因此保留了下來。而“Mac OS X”也因此作為iPhone的OS的基礎而被采用,這樣一來才產生了“iOS”。 移動手機app開發
?
圖3:iPhone搭載的“iOS”是以Mac OS X為基礎產生出來的。而Mac OS X又是以Jobs創立的NeXT Computer的“NeXTSTEP”為基礎產生的。
現在我們使用iPhone的時候,畫面上能夠看得到的部分,例如“設置”和Home畫面等等都是在Mac OS X的基礎上再次添加進去的,只不過是iPhone的表面的軟件而已。 安卓app開發
iOS的本質部分是jobs親自開發的現在仍在延續著的NeXTSTEP和Objective-C。隨著iPhone的普及Objective-C的知名度也變得很高。如果去書店查看關于編程類的書籍的話,一定可以看到很多很多的Objective-C的書籍呈現在那里。
蘋果子公司的技術人員創造了Android,而離開蘋果公司后的喬布斯的技術成了iOS的來源基礎。這多少讓人覺得有些諷刺。這也是蘋果一直將安卓列為侵權產品的緣由。蘋果方面表示,Android系統創始人Andy Rubin有關Android系統的理念之一誕生于他供職蘋果期間。另外當時時任谷歌CEO的施密特為蘋果董事會成員,喬布斯認為安卓系統赤裸裸剽竊蘋果技術。HTC、三星等也都成為了蘋果起訴的對象。蘋果app開發 m.fj256.com
?