標籤:android java 使用 os 檔案 io
現在的手機作業系統似乎又回到了當年 PC 系統的狀態,一個是以開放為核心的 Windows 作業系統(是的,Windows 是一款硬體開放的作業系統),另一派是軟硬體完全封閉的 Mac 作業系統。在當前手機市場,除了 Windows 換成了 Android ,曆史似乎又重演了一遍,只是 Apple 不再是那個被 Microsoft 打壓的抬不起頭的公司,而成為了手機市場中無可撼動的霸主。
這篇主要是吐槽 Android ,為示公平下一篇吐槽iOS :)
在這場手機裝置的競爭中,我覺得 Android 有以下幾點沒做好:(下文敘述的軟體指作業系統或應用程式)
1.Google 開放了硬體,但是也開放了軟體
當年 Microsoft 只是硬體開放,硬體隨便折騰,Microsoft 作業系統把硬體折騰出的亂七八糟的東西全都蓋住,開發人員不受罪。前幾年我試過在 Windows7 32bit 上運行 Windows3.0 的應用程式,一切正常。反觀 Google,不但硬體開放,軟體也開放,其實軟體是完全屬於自己的部分,軟體的蛋糕就這麼大,開放了這部分就相當於削弱了自己的力量,結果就是誰都到 Android 裡插一腳,Google 失去了對軟體的完全控制,難受;廠商想控制但是心有餘力不足,難受,使用者面對這麼多變種系統,無所適從,難受。就目前的狀態,在這場開放裡沒有人是贏家,大家為自己的利益相爭,像是功夫片裡三個相互卡住的敵人,除非三人能一起醒悟,否則是誰先支撐不住誰先死了,剩下兩人再掙的你死我活。當然這種開放在之前還是有過好處的,誘廠商上鉤,擴大自己的市場份額。
2.上馬太倉促,方案沒選好
Android 開發語言使用 Java 的目的很明確,Java 的環境成熟,能更快的開發出應用程式,但是 Google 沒想到或當時無暇顧及到的就是 JAVA 虛擬機器導致的卡頓和費電問題,這個問題成了 Android 的老大難問題,直到4.X的版本才開始有所好轉,但是Android 這麼多年的發展,Google 很難再拿出新的可以替換 Java 的新語言,這讓 Android 處於一個非常彆扭的位置,因為同樣水平的程式員寫代碼, 用的 obj-c 肯定會比用虛擬機器的 Java 語言更快一些。Google 可以無限縮小這個差距,但終究是比 obj-c 慢,在運行速度和省電方面永遠處於劣勢。如果當年 Google 選擇了 C++ 也許會把現在的局面逆轉,或者至少是對等的水平。(題外話,可能有人提出 C++ 語言複雜,開發費時的問題。這個應該分成兩面看,C++ 提高開發門檻的同時也能提升應用品質)
3.Android 系統過度開放
也許是為了向開發人員示好,Android 系統太開放了,開發人員幾乎可以做任何事情。曆史經驗告訴我們,如果給對方過度的自由,對方必然會做出對己不利的事情,這裡兩個對立面是系統和軟體開發人員。根據“太極”任何事情都有正反面,考慮正面的同時也要考慮反面,也許是 Google 求市場份額心切,或者是受開源開放的思想影響,或者是為了給開發人員創造更大的舞台,毫無疑問,Android 系統開放過頭了,任何應用都可以讀取你的簡訊,通話記錄,個人照片,只要在設定檔裡寫上除非你不安裝,安裝就一定要同意的許可權。有人看到了這個市場,開發了安全類軟體,可以在安裝軟體的同時限制應用許可權,但是這個安全類軟體反倒是個諷刺,因為需要比普通應用更過份的 root 許可權。更可怕的是安全軟體在沒有 root 許可權之前和普通軟體沒什麼區別,也就是說任何軟體都可以有機會Root,這實在不能不說是設計上的一個缺陷。
4.系統效能過剩,只為了跑分
現在各家的 Android 機皇,隨便哪一部拿出來參數都比 iPhone 高,但是沒有一家敢說自己在體驗上完全超越了 iPhone,廠商自己最清楚,這些參數不過是跑分用,真按著頂級參數跑程式,不但能煎雞蛋,而且幾小時手機就沒電了。消費者平時使用的 Android 手機,是被降頻並且可能關閉了部分核心之後的手機。美名曰“動態核心控制”,更省電。換一個角度想,就是廠商為了讓消費者手中的手機能降頻使用煞費苦心,宣傳上標高參數,實際卻做著完全相反的事情,真讓人哭笑不得。
Android 系統的開放也有好處,比如來顯歸屬地,垃圾簡訊攔截,IME,自訂案頭等等。但是與上面的問題相比,無法讓人歡呼雀躍的喊出一聲:“這一切值了!”。