??xml version="1.0" encoding="utf-8" standalone="yes"?>偷拍亚洲欧洲综合,欧美日韩电影一区,天堂社区 天堂综合网 天堂资源最新版http://www.aygfsteel.com/jiangshachina/category/46014.html同是Java爱好者,盔R何必曾相识Q?lt;br>
a cup of Java, cheers!zh-cnTue, 26 Oct 2010 20:49:04 GMTTue, 26 Oct 2010 20:49:04 GMT60- Android 101--基础(?http://www.aygfsteel.com/jiangshachina/archive/2010/10/07/333917.htmlSha JiangSha JiangThu, 07 Oct 2010 13:25:00 GMThttp://www.aygfsteel.com/jiangshachina/archive/2010/10/07/333917.htmlhttp://www.aygfsteel.com/jiangshachina/comments/333917.htmlhttp://www.aygfsteel.com/jiangshachina/archive/2010/10/07/333917.html#Feedback0http://www.aygfsteel.com/jiangshachina/comments/commentRss/333917.htmlhttp://www.aygfsteel.com/jiangshachina/services/trackbacks/333917.htmlAndroid 101 -- 基础
q是JavaLobby中Android 101pd博文中的W一?/a>Q介l了Android开发的基本概念。对于我q个Android门外汉来_臛_学习C一点儿新知识,希望大家也能如此?2010.10.07最后更?
在当前的软g开发世界中Q编写移动应用已变得非常行了。对开发框架的选择q不太多Q可用的手机的数量也有限。尽编写运行在iOS上的应用十分行Q但Android已经获得了Java开发者们的关注。在之后的若q篇文章中,我将采取一些步骤帮助你入门Android开发。但在我们开始编码之前,让我们先看看Android开发的一些核心原理?br />
什么是AndroidQ?/span>
下面q张来自于在U的开发者手册的囄展示了Android操作pȝ的架构:

Android构徏?strong>Linux内核之上QLinux内核会管理典型的操作pȝ服务?strong>Androidq行时环?/strong>ZDalvik虚拟?目前Oracle 正给予许多关注的东西)。Dalvik是Java虚拟机的一个瘦w后的变U,它基于Apache Harmony的Java实现。不提供JavaMEQSwing或AWTlgQ相反地QAndroid提供它自qlg库?br />
q有一些由C/C++~写?strong>本地cd。Surface Manager处理针对展现子系l的讉KQ而媒体类库提供了针对最行音频和视频格式的播放功能?br />
应用框架是大部分开发者所感兴的Q它提供了创建合格AndroidUd应用所需的API和服务?br />
Android核心概念
如前所qͼ应用框架拥有开发者创建应用程序所需的一切。下面是主要概念的纲要:
zd
一个活动是一个用L面屏q。一个应用程序在应用的执行过E中可以有一个或多个zd。你所创徏的每一个活动可以拥有一个它自己的窗口以q行囑Şl制?br />
服务
服务作ؓ后台dq行Q它没有可视化的表现形式。与zd一P服务q行在主应用q程U程中,但服务常会派生出其它的线E来执行dQ而不会媄响其它应用的q行。服务的典型例子是音乐播放器,当它在播攑ֈ表中的歌Ӟ你的手机q可以做其它事情?br />
内容提供?/strong>
内容提供器是一个客户化APIQ它允许d特定的数据集。它允怸同的应用彼此之间׃n数据。内Ҏ供器都是ContentProvider基类的子c,ContentProvider提供一个访问数据的标准接口。应用程序不能直接调用ContentProvider的实玎ͼ转而要使用 ContentResolver对象Q该对象可以讉KMContentProvider实现?br />
Intent
Intent是一个特定的zdQ例如发送电子信Ӟ播放歌曲Q或发v一ơ联pR?br />
资源
Android应用拼图中的最后一块就是资?-应用E序需要访问或展示的图片,文本或非~码的信息?br />
zd生命周期
下图展示了一个活动在其生命周期中的不同状态:

当你不能控制状态间的{换时Q你可以通过onX()ҎQ像onStart()QonResume(){等Q来L状态的改变。你可以重写q些Ҏ以应用E序能恰当地对这些状态作出反应?br />
下一?/span>
现在你已对Android应用是如何组成的有了更好的理解,qؓ开始真正的开发作好了准备。下一文章将带你看看pȝ讄?br />

]]> - Android = Java(?http://www.aygfsteel.com/jiangshachina/archive/2010/08/22/329582.htmlSha JiangSha JiangSun, 22 Aug 2010 11:49:00 GMThttp://www.aygfsteel.com/jiangshachina/archive/2010/08/22/329582.htmlhttp://www.aygfsteel.com/jiangshachina/comments/329582.htmlhttp://www.aygfsteel.com/jiangshachina/archive/2010/08/22/329582.html#Feedback0http://www.aygfsteel.com/jiangshachina/comments/commentRss/329582.htmlhttp://www.aygfsteel.com/jiangshachina/services/trackbacks/329582.htmlAndroid = Java
q期JavaC正热议Oracle对Google的R权诉|恰y前几日在java.net中看C?a >博文Q文章作者也借此事g表达了Android=Java的观炏V由于我对JavaUd开发、Android都没太关注过Q文章细l读来,有些许进益,译在此处Q可能对大家也有帮助?2010.08.22最后更?
JavaC正忙于讨论Orace针对Google Androidq_的专利诉讹{我已在多个场合道出了我的观点,但还是需要一个评论性的文章来重复一下我在每个场合中都作出的相同评论...所以,本博文会我的想法竹{倒豆子般地和盘托出?br />
W八个千年问题QAndroid=JavaQ?/span>
几日前,有声明称有研I者已证明了P!=NPQ这D了编E社Z的极大热?-臛_是直C天前Q当W一个评阅者指Z该证据中几处错误时。在我的计算机科学专业中我已学过q门课,但不能否认地是,我不懂高{数据以至于不能理解q些证明(P=NP?是克h学研I所的千年问题之一是一个很好的理由)。所以,让我们谈谈一个更为简单的{式Q?strong>Android是否{h于JavaQ?/strong>注意Q我说的不是{于Q而是{hQ就如同P=NP那样?br />
{h的类/字节码格?/span>
在许多层面上QAndroid = Java是明显正的。Android应用使用Java语言~写Q用JDK中的javac~译?或其{h品,如ECJ)q行~译。这׃生了标准?Java字节?.class文g)。然后,q些文g被{化成Android?dex文gQ实际上是Javacȝ另一U不同格式的文g|了。但你也能将GIF囑փ转化成优质的PNG格式Q尽这两种囑փ文g的字节码完全不同,但它们都同样的优U?br />
{h的文件格式有大量的实现细节,常常是ؓ了优化。例如,如果我们不需要复杂且不同的跨框架压羃技术,仅仅是满于低效率的视频,我们p避免所有违反MPEGLA视频~码专利的麻烦了?br />
Android设计不同的类文gZ多种动机Q但l开Sun的知识权肯定是d。不怎样QGoogle不能q离Java。这两种cL件格式非常等仗它们只是在低层ơ的数据l构斚w不同Q但它们的语法是一致的Q也存储完全相同的信息。我可以肯定JavaSE或JavaME的VM能很Ҏ地在它的pȝcd载器中加入一?dex解析器去加蝲"Androidc??br />
Android SDK依赖?em>.java -> .class -> .dex转换Q这一转换_于l节且是无损的?无损"是非帔R要:虽然GIF=PNGQ但有损的JPG文g则不能完全相{?-它不能解码出完全相同的信息。如?JVM和Dalvik真是完全独立的,你就很难写出一个相对简单的工具无妥协的d~译后的代码从一UŞ式{换到另一UŞ式:没有信息丢失Q当Z补偿在一个VM所拥有而在另一个VM却没有的重要Ҏ时Q{换后的文件不会变大;当按照一个VM的核心APId现另一个VM的核心APIӞ不需要额外的q行时层?br />
(我知道dx译器有多么的复杂。我已看q它的源代码。字节码译器很大,它是一个完整的反编?重编译器Q完全用SSA构徏。但q种译只是在理Z比较l微Q但在设计上Q从Java到Dalvik字节码的影射q是qx的。栈相对于寄存器架构只是在优化细节方面有所不同Q而在关键斚wQ如VM层的cdpȝQ则是一致的?/em>)
{h的虚拟机
也能很容易的证明Dalvik=JVM。不仅仅是在源代码或字节码格式方面:它们的运行时对应部分也是如此。一旦Dalvik VM加蝲了一?Androidc?Q?strong>它走h像Javac,叫v来也像Javac?/strong>。如果你懂Java~程(能了解其高和底层细?Q你懂 Android~程。只是一个学习新API和框架理论的问题|了。它们是{h的系l?br />
q记得Microsoft?NET吗??NET被介l出来时QJavaC很快公开抨击.NET只是Java的翻版。当时我也在那群抨击的h中Q但现在我知道这么做会更好些。然?NET是一个庞大的ȝQC# 1.0语言。区别Q一语言E序的最方便Ҏ是风格规范--如,toString()相对?em>ToString()。但在更关键的VM规范斚wQMicrosoft做了很好的功课。CLRQCLI和核心框枉完全不同于JavaQ所以我们不能说JVM=CLR。你不能使用一个简单的文g格式转换器工具作用于被编译的Javac,然后获得信息直接运行在Ua?NETq行时环境上?br />
惌证据吗?只要看看IKVM。这是一个非常有的目Q它能Java跨越~译q行?NET环境中,所以你的Java代码可不l过修改q行在CLR之上(或其它同{的.NETq行时环境,如Mono)...?a>IKVMq?strong>不是一个简单的cdx文g转换器。对于Q何超qHelloWorld的应用程序,?Javacd其核心API适配转换?NET是非常复杂的。每个^台的内在Ҏ,像反,安全Qƈ发,异常处理Q字节码规范QI/O及其它核心APIQ在Ҏ上都非常相|但在l枝末节处则完全不同--让IKVM......Q则Java代码能运行在.NET VM上。这也需要一个非常庞大的额外的运行时层,基本上要把全部的OpenJDK源代码适配到JavaSE API。我q踪IKVM的开发已有多q了--通过阅读极棒?a >IKVM Blog--所以我有一个需要作出大量努力的好主意去Java代码和JavaSE应用适配?NET?该工作还没全完成Q已完成的部分则常有些性能问题?
(旧有?strike>Visual J++ Visula J#q不是一个简单的Java-.NET解释器。我不会讨论它,但完全可以说Visual J#对Java的兼容要大大劣于哪怕是非常早期的IKVM版本?/em>)
在讨Z我引入了P=NP的例子;有些人可能会引入囄{hQƈ说Q何图灵完备的q_/语言/VM都是怺{h的。确实如此,但和我们要讨论的问题q不相干。图灉|型过于通用Q如果仅按表面意思来使用它将会摧毁整个Y件专利系l?管q不是坏事!)。我们需要先在沙盘中勑出JVM{h的轮廓,与图늭L比,q更接近于实际需要。依我的观点Q无论是l微的二q制格式译Q甚至于上层的源代码和运行时兼容Q都可以明确地将Android|于Java{h的阵U中?br />
{h的API与运行时环境
Android使用了许多JavaSE API的子集。这?来自于Harmony?API是全新的实现Q但它们JavaSE作ؓ模型。如果不是由于TCK协议的问题,Harmony甚至会获得JavaSE认证。ƈ不能改变Harmony与JavaSE API是完全等Lq一事实--q是故意ZQƈ非偶然。正如JRuby名hCharles Nutter最q写到的Q?br />
Android支持一个粗p?但庞大的)Java 1.5cd子集。这个子集够的大,只需要很的限制Q?strong>p使得如JRubyq般复杂的项目基本上无需修改可q行在Android?/strong>?br />
看v来,Dalvik_接近JVMQ它应该完全遵从大部分JVM的规范,包括完整及非常细节的JMM(Android支持Java风格的线E与q发Q直至高U的java.util.concurrent?。有太多"Dalvik是一个新的VM"?Dalvik不能q行Javac?的话(在讨问题?0%的博客和论坛中都会发现这La??br />
最后的思?/span>
本篇q不是关于Oracle针对Google诉讼的是非曲直。我会忽略(可能会删?M跑题的评?不在Android=Javaq一论题之内)。对?Android与Java完全不相q?q一无意义的a论我只能表示厌恶QGoogle和Android的拥总必须扑ֈ比这更好的论证?br />
(当诉讼的全部l节和结果出来之前,对这一诉讼的将来我保留自己的全部判断。除非你有内部消?我没?Q?strong>请不要太天真?a >保持冷静Q我们真的不知道 Oracle或Google的全部意囑֒计划。自?007qGoogle首次发布Android(q导致了JavaME生态系l的极大分裂)Q虽?Sun十分愤怒但仍不得不夹着ַQ我们不知道q幕后的故事。我不会认同M价值数以十亿计Q且p东控制的公司所持的利己M的动机?/em>)
我不认ؓGoogle创徏一个基于Java但偏Java甚远的^??NET所做的那样)是无竞争力的。在保持对已有Java代码和类库巨大兼Ҏ,Java人才及Java工具链之间的q性的意愿ӞDalvik和Android框架会让你获得尽可能多的好处?br />
昄QAndroid=Java不能在双斚w都包含进?不是双射)。每个^台都有一些独一无二?APIQ当ӞAndroid是一个完整的操作pȝQ它包括一个基于Linux的内核,囑Ş和电话栈Q等{。我昄只谈及普通的部分Q基于Java的用L?应用框架要依赖Java源代码和c?无论是哪U格式的)QAPI(包含C千计的通用JavaSE API)Q以及非常引人注目的cJava的虚拟机。对Android与其它Javaq_关系的准描q可能要使用到版本或评的概c我记得一个博客说q像"Android没有'J'"q样的话。好的,q不晚:我的是将Android的名UC改ؓJava GE(Java Google Edition)。这p一x逸地消除困惑;-)

]]>
վ֩ģ壺
|
բ|
ض|
|
|
մ|
̨|
|
|
Ͳ|
Ӫ|
|
|
³ľ|
|
ɽ|
|
лͨ|
|
|
|
±|
|
̨|
|
|
|
|
|
|
|
|
ʯɽ|
|
ʲ|
ʡ|
פ|
Ϫ|
տ|
|
|