android由浅入深|java

android开发除了linux kernel之外的每一层都与java息息相关。

java简介

Java语言是SUN(Stanford University Network,斯坦福大学网络公司)公司1995年推出的一门高级编程语言,起初主要应用在小型消费电子产品上,后来随着互联网的兴起,Java语言迅速崛起(Java applet 可以在浏览器中运行),成为大型互联网项目的首选语言。

2009年04月20日,美国甲骨文公司74亿美元收购Sun,取得java的版权。

Java 是面向对象的语言,没有面向对象编程经验的读者需要花费不少时间来了解面向对象的概念、语法和编程思想,有不能理解的地方请大家一定要坚持,多花时间编写代码自然会豁然开朗,从面向过程到面相对象需要一个适应期。

Java 不只是一种编程语言,它是一个完整的平台,拥有庞大的库,将诸如图形绘制、Socket连接、数据库存取等复杂操作进行了最大程度的简化。

Java 是跨平台的,一次编译,到处运行,在 Windows 上编写的代码可以不加修改的移植到 Linux 上,反之也可以。

java跨平台性

android中的java

Android应用程序是用Java(TM)语言写成的,使用JDK的javac(或等效工具,例如ECJ)来编译。这个过程产生标准的Java字节码(.class文件)。这些文件再转化成Android的.dex文件,从使用的角度来看,它就是一种不同格式的Java class文件。不错,这是一种更优秀的格式;对Sun自从1994年以来的设计有了很大的改进。但就如你可以把一个GIF格式的图片转换成更高级的完美的完全等效的PNG格式,尽管它们的字节流完全的不同。

等效的文件格式在细节的实现上非常的不同,主要是为了优化。就好比,如果我们简单的满足于低效率的视频数据流,没有采用高端的、跨不同框架的压缩技术,那我们就可以避免跟MPEGLA视频解码专利做斗争的麻烦了。

Android特异的classfile设计有好几种动机;而为了避免和Sun的知识产权保护冲突显然是一个主要的因素。不管怎样,Google并没有走的离Java足够远。两种文件格式非常的类似。它们在特定的底层数据结构上有区别,但这些结构体在语法上一致的,存储完全相同的信息。我相信在JavaSE或JavaME VM里可以轻易的在它们的系统classloader里添加一个.dex分析器来加载”Android classes”。

Android SDK 依赖于.java -> .class -> .dex 转换的事实情况既微不足道也毫无损失。“毫无损失”的事实很重要:当GIF = PNG 时,跟受损的JPG文件就不等了 —— 它解码不出完全相同的信息。如果JVM和Dalvik都各自独立,你很难写出一个相对简单的工具将一种编译过的代码转换成另一种 —— 而且不做任何妥协:不丢失信息,不使用冗余来补偿某种特征在一种VM中是first-class而在另一种中却不是的情况,不需要额外的runtime层 上在一种VM中实现另一种VM的核心API。

(我知道dx转换器有多么的复杂。我看过它的源代码。那个字节码转换器是一个巨大的,全功能的反编译/重编译器,通 过SSA构造完成。但是这个转换器在概念上仍然是无足轻重的;从Java字节码到Dalvik字节码的映射在设计上是很平滑的。堆栈相对于寄存器架构中细 节上进行了优化;而重要的东西,例如VM层的类型系统是完全一致的。)

 Dalvik 和 JVM 的相当也是很容易看清楚的。并不只是源代码或字节码格式上的问题:它们的runtime对等物上也一样。一但一个”Android class”被加载到Dalvik VM里,它就会像Java class一样运行,像Java class一样工作。 如果你懂得Java编程(深入到高级的,底层的细节),你也就懂得Android编程。你只需要学一些新的API和框架概念。他们是对等的系统。

    Android使用了一个相当大的JavaSE APIs子集。这些APIs (来自于Harmony项目)都是全新的实现,但它们是以JavaSE为模子。如果不是因为TCK许可证问题,Harmony完全可以取得JavaSE认 证。但这并没有改变这样的一个事实:Harmony 和 JavaSE APIs是 完全的等效的 —— 这是特意的,不是偶然的。就像Charles Nutter——有名的JRuby人物——最近写道:

Android支持一个不完整的(但相当大的)Java 1.5 类库子集。这个子集大到一个复杂的JRuby项目几乎不经任何修改就能在Android上运行,很少有限制情况。

看起来Dalvik对JVM是如此的接近,它不得不完全兼容大部分的JVM规范,包括完全详细的JMM (就像Android支持Java风格的线程和并发,已经深入到了高级的java.util.concurrent包里了)。可为什么有如此多的”Dalvik是个新VM“或”Dalvik不能运行Java类“的说法呢(90%的讨论这场诉讼的论坛和博客都持这种观点)。

每种平台都有自己一些独特的API,当然,Android是一个完整的操作系统,包括一个 Linux-based的内核,图形系统和电信堆栈,等等。很显然,我只是谈论其中最常用的部分:Java为中心的用户使用区/依赖于Java源代码、 Java classes(切不管什么格式)、Java APIs(包括成千上万的常用JavaSE APIs)和出色的类Java的虚拟机的应用框架。对于Android和其它的Java平台之间的关系有个准确的说法,就是使用版本的概念。

学习java的相关书籍

1.《Java编程思想》

2.《Agile Java》中文版

3.《Thinking in Java》

4.《JAVA开发实战经典》

5.《java for android》

6.《Head First设计模式

7.《Java并发编程实战》等

android开发环境的搭建

1.eclipse开发环境的搭建

2.androidstudio开发环境的搭建

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,563评论 25 707
  • 相信学习android的人都会想过或者想知道这个问题,那就请你耐心的看完这篇文章吧,你会对android与java...
    IT枫阅读 2,480评论 0 1
  • 从今天开始读《深入理解 Java 虚拟机》一书,并开设了同名专题 深入理解 Java 虚拟机。计划在 2 周内将全...
    SawyerZh阅读 10,207评论 17 215
  • Github同步 首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新...
    Cause_XL阅读 362评论 0 0
  • 作者:马庆伟 (2017年夏) 如水眸子, 弯弯眉眼; 旧时样子, 未曾改变; 淡雅静谧, 宛若幽兰; 一颦一笑,...
    烟花易冷666666阅读 315评论 0 0