android由淺入深|java

android開(kāi)發(fā)除了linux kernel之外的每一層都與java息息相關(guān)。

java簡(jiǎn)介

Java語(yǔ)言是SUN(Stanford University Network侮东,斯坦福大學(xué)網(wǎng)絡(luò)公司)公司1995年推出的一門(mén)高級(jí)編程語(yǔ)言蜡峰,起初主要應(yīng)用在小型消費(fèi)電子產(chǎn)品上沈自,后來(lái)隨著互聯(lián)網(wǎng)的興起元媚,Java語(yǔ)言迅速崛起(Java applet 可以在瀏覽器中運(yùn)行)断盛,成為大型互聯(lián)網(wǎng)項(xiàng)目的首選語(yǔ)言疼蛾。

2009年04月20日肛跌,美國(guó)甲骨文公司74億美元收購(gòu)Sun,取得java的版權(quán)察郁。

Java 是面向?qū)ο蟮恼Z(yǔ)言衍慎,沒(méi)有面向?qū)ο缶幊探?jīng)驗(yàn)的讀者需要花費(fèi)不少時(shí)間來(lái)了解面向?qū)ο蟮母拍睢⒄Z(yǔ)法和編程思想皮钠,有不能理解的地方請(qǐng)大家一定要堅(jiān)持稳捆,多花時(shí)間編寫(xiě)代碼自然會(huì)豁然開(kāi)朗,從面向過(guò)程到面相對(duì)象需要一個(gè)適應(yīng)期麦轰。

Java 不只是一種編程語(yǔ)言乔夯,它是一個(gè)完整的平臺(tái),擁有龐大的庫(kù)款侵,將諸如圖形繪制末荐、Socket連接、數(shù)據(jù)庫(kù)存取等復(fù)雜操作進(jìn)行了最大程度的簡(jiǎn)化新锈。

Java 是跨平臺(tái)的甲脏,一次編譯,到處運(yùn)行妹笆,在 Windows 上編寫(xiě)的代碼可以不加修改的移植到 Linux 上块请,反之也可以。

java跨平臺(tái)性

android中的java

Android應(yīng)用程序是用Java(TM)語(yǔ)言寫(xiě)成的拳缠,使用JDK的javac(或等效工具墩新,例如ECJ)來(lái)編譯。這個(gè)過(guò)程產(chǎn)生標(biāo)準(zhǔn)的Java字節(jié)碼(.class文件)脊凰。這些文件再轉(zhuǎn)化成Android的.dex文件抖棘,從使用的角度來(lái)看茂腥,它就是一種不同格式的Java class文件。不錯(cuò)切省,這是一種更優(yōu)秀的格式最岗;對(duì)Sun自從1994年以來(lái)的設(shè)計(jì)有了很大的改進(jìn)。但就如你可以把一個(gè)GIF格式的圖片轉(zhuǎn)換成更高級(jí)的完美的完全等效的PNG格式朝捆,盡管它們的字節(jié)流完全的不同般渡。

等效的文件格式在細(xì)節(jié)的實(shí)現(xiàn)上非常的不同,主要是為了優(yōu)化芙盘。就好比驯用,如果我們簡(jiǎn)單的滿足于低效率的視頻數(shù)據(jù)流,沒(méi)有采用高端的儒老、跨不同框架的壓縮技術(shù)蝴乔,那我們就可以避免跟MPEGLA視頻解碼專利做斗爭(zhēng)的麻煩了。

Android特異的classfile設(shè)計(jì)有好幾種動(dòng)機(jī)驮樊;而為了避免和Sun的知識(shí)產(chǎn)權(quán)保護(hù)沖突顯然是一個(gè)主要的因素薇正。不管怎樣,Google并沒(méi)有走的離Java足夠遠(yuǎn)囚衔。兩種文件格式非常的類似挖腰。它們?cè)谔囟ǖ牡讓訑?shù)據(jù)結(jié)構(gòu)上有區(qū)別,但這些結(jié)構(gòu)體在語(yǔ)法上一致的练湿,存儲(chǔ)完全相同的信息猴仑。我相信在JavaSE或JavaME VM里可以輕易的在它們的系統(tǒng)classloader里添加一個(gè).dex分析器來(lái)加載”Android classes”。

Android SDK 依賴于.java -> .class -> .dex 轉(zhuǎn)換的事實(shí)情況既微不足道也毫無(wú)損失肥哎×伤祝“毫無(wú)損失”的事實(shí)很重要:當(dāng)GIF = PNG 時(shí),跟受損的JPG文件就不等了 —— 它解碼不出完全相同的信息贤姆。如果JVM和Dalvik都各自獨(dú)立榆苞,你很難寫(xiě)出一個(gè)相對(duì)簡(jiǎn)單的工具將一種編譯過(guò)的代碼轉(zhuǎn)換成另一種 —— 而且不做任何妥協(xié):不丟失信息稳衬,不使用冗余來(lái)補(bǔ)償某種特征在一種VM中是first-class而在另一種中卻不是的情況霞捡,不需要額外的runtime層 上在一種VM中實(shí)現(xiàn)另一種VM的核心API。

(我知道dx轉(zhuǎn)換器有多么的復(fù)雜薄疚。我看過(guò)它的源代碼碧信。那個(gè)字節(jié)碼轉(zhuǎn)換器是一個(gè)巨大的,全功能的反編譯/重編譯器街夭,通 過(guò)SSA構(gòu)造完成砰碴。但是這個(gè)轉(zhuǎn)換器在概念上仍然是無(wú)足輕重的;從Java字節(jié)碼到Dalvik字節(jié)碼的映射在設(shè)計(jì)上是很平滑的板丽。堆棧相對(duì)于寄存器架構(gòu)中細(xì) 節(jié)上進(jìn)行了優(yōu)化呈枉;而重要的東西趁尼,例如VM層的類型系統(tǒng)是完全一致的。)

?Dalvik 和 JVM 的相當(dāng)也是很容易看清楚的猖辫。并不只是源代碼或字節(jié)碼格式上的問(wèn)題:它們的runtime對(duì)等物上也一樣酥泞。一但一個(gè)”Android class”被加載到Dalvik VM里,它就會(huì)像Java class一樣運(yùn)行啃憎,像Java class一樣工作芝囤。 如果你懂得Java編程(深入到高級(jí)的,底層的細(xì)節(jié))辛萍,你也就懂得Android編程悯姊。你只需要學(xué)一些新的API和框架概念。他們是對(duì)等的系統(tǒng)贩毕。

? ? Android使用了一個(gè)相當(dāng)大的JavaSE APIs子集赤炒。這些APIs (來(lái)自于Harmony項(xiàng)目)都是全新的實(shí)現(xiàn),但它們是以JavaSE為模子蹲诀。如果不是因?yàn)門(mén)CK許可證問(wèn)題禁悠,Harmony完全可以取得JavaSE認(rèn) 證。但這并沒(méi)有改變這樣的一個(gè)事實(shí):Harmony 和 JavaSE APIs是 完全的等效的 —— 這是特意的睛藻,不是偶然的启上。就像Charles Nutter——有名的JRuby人物——最近寫(xiě)道:

Android支持一個(gè)不完整的(但相當(dāng)大的)Java 1.5 類庫(kù)子集。這個(gè)子集大到一個(gè)復(fù)雜的JRuby項(xiàng)目幾乎不經(jīng)任何修改就能在Android上運(yùn)行店印,很少有限制情況冈在。

看起來(lái)Dalvik對(duì)JVM是如此的接近,它不得不完全兼容大部分的JVM規(guī)范按摘,包括完全詳細(xì)的JMM (就像Android支持Java風(fēng)格的線程和并發(fā)包券,已經(jīng)深入到了高級(jí)的java.util.concurrent包里了)§畔停可為什么有如此多的”Dalvik是個(gè)新VM“或”Dalvik不能運(yùn)行Java類“的說(shuō)法呢(90%的討論這場(chǎng)訴訟的論壇和博客都持這種觀點(diǎn))溅固。

每種平臺(tái)都有自己一些獨(dú)特的API,當(dāng)然兰珍,Android是一個(gè)完整的操作系統(tǒng)侍郭,包括一個(gè) Linux-based的內(nèi)核,圖形系統(tǒng)和電信堆棧掠河,等等亮元。很顯然,我只是談?wù)撈渲凶畛S玫牟糠郑篔ava為中心的用戶使用區(qū)/依賴于Java源代碼唠摹、 Java classes(切不管什么格式)爆捞、Java APIs(包括成千上萬(wàn)的常用JavaSE APIs)和出色的類Java的虛擬機(jī)的應(yīng)用框架。對(duì)于Android和其它的Java平臺(tái)之間的關(guān)系有個(gè)準(zhǔn)確的說(shuō)法勾拉,就是使用版本的概念煮甥。

學(xué)習(xí)java的相關(guān)書(shū)籍

1.《Java編程思想》

2.《Agile Java》中文版

3.《Thinking in Java》

4.《JAVA開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)典》

5.《java for android》

6.《Head First設(shè)計(jì)模式

7.《Java并發(fā)編程實(shí)戰(zhàn)》等

android開(kāi)發(fā)環(huán)境的搭建

1.eclipse開(kāi)發(fā)環(huán)境的搭建

2.androidstudio開(kāi)發(fā)環(huán)境的搭建

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盗温,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子成肘,更是在濱河造成了極大的恐慌肌访,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艇劫,死亡現(xiàn)場(chǎng)離奇詭異吼驶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)店煞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)蟹演,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人顷蟀,你說(shuō)我怎么就攤上這事酒请。” “怎么了鸣个?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵羞反,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我囤萤,道長(zhǎng)昼窗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任涛舍,我火速辦了婚禮澄惊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘富雅。我一直安慰自己掸驱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布没佑。 她就那樣靜靜地躺著毕贼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛤奢。 梳的紋絲不亂的頭發(fā)上鬼癣,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音远剩,去河邊找鬼扣溺。 笑死骇窍,一個(gè)胖子當(dāng)著我的面吹牛瓜晤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腹纳,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼痢掠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驱犹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起足画,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雄驹,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后淹辞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體医舆,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年象缀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔬将。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡央星,死狀恐怖霞怀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情莉给,我是刑警寧澤毙石,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站颓遏,受9級(jí)特大地震影響徐矩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叁幢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一丧蘸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遥皂,春花似錦力喷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至样悟,卻和暖如春拂募,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背窟她。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工陈症, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人震糖。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓录肯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吊说。 傳聞我的和親對(duì)象是個(gè)殘疾皇子论咏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,182評(píng)論 25 707
  • 相信學(xué)習(xí)android的人都會(huì)想過(guò)或者想知道這個(gè)問(wèn)題优炬,那就請(qǐng)你耐心的看完這篇文章吧,你會(huì)對(duì)android與java...
    IT楓閱讀 2,504評(píng)論 0 1
  • 從今天開(kāi)始讀《深入理解 Java 虛擬機(jī)》一書(shū)厅贪,并開(kāi)設(shè)了同名專題 深入理解 Java 虛擬機(jī)蠢护。計(jì)劃在 2 周內(nèi)將全...
    SawyerZh閱讀 10,254評(píng)論 17 215
  • Github同步 首先,登陸GitHub养涮,然后葵硕,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個(gè)新...
    Cause_XL閱讀 373評(píng)論 0 0
  • 作者:馬慶偉 (2017年夏) 如水眸子贯吓, 彎彎眉眼贬芥; 舊時(shí)樣子, 未曾改變宣决; 淡雅靜謐蘸劈, 宛若幽蘭; 一顰一笑尊沸,...
    煙花易冷666666閱讀 337評(píng)論 0 0