为什么Android应用用Java开发,为什么Android大型游戏要用数据包?这里根据我的知识做一个总结
Android用java作为开发应用程序的语言,是经过深思熟虑的。作为一个开源的、被广泛使用的操作系统,它与微软的Windows系统、苹果的IPhone系统最大的区别,在于硬件差异性而不是别的。
微软的Windows系统,一统天下用的都是X86的CPU体系(即Intel和AMD两家的CPU),所以用C和C++写出的应用程序,只需要编译一次,生成X86
CPU指令的二进制执行文件,就可以在所有硬件配置的Windows系统上跑起来。其实这也是业内公认的一个潜规则,就是微软和Intel的共生关系,微软只使用Intel创立的x86架构体系的芯片(AMD的芯片为了满足这一要求也所有芯片都采用了Intel创立的x86架构),Intel新的PC芯片也都延续x86架构体系。这样做的好处是巨大的:开发者只用开发和编译一次,就可以让应用跑在所有Windows系统上,所有用户只用下同一个应用程序,就基本都能在自己的系统上跑起来。相对而言,下载过塞班手机应用程序的人都有过这种经历:下载应用时要看自己手机的型号,选择对应的才能用。开发塞班程序的人也很痛苦,要为每一种CPU型号的塞班手机都编译一套执行文件,并且没新增一种手机,就要再编译一套。
微软与Intel的这种软硬共生关系,让所有的PC厂商没了选择,只能选择x86架构芯片。有人或许会说他们的这种做法很霸道,但作为应用开发者和用户,却从微软的这种统一性中获取了巨大的方便。
相对于微软的Windows系统而言,Android面临的环境要复杂的多。谷歌是一个以开源免费为主的公司,Android将会被各种设备商所使用,运行在各种架构的CPU上(x86,ARM-7,ARM-9,ARM-11)。这就迫使谷歌不得不面对一个问题:应用开发的难度。如果仍然采用C、C++作为开发语言,那开发Android应用将面临和塞班一样的问题:开发者和使用者都不得不为每一种设备都弄一套程序。这会让开发者痛苦不堪,降低他们的开发效率,也会让习惯了Windows的用户很迷惑和不高兴,为什么我不能下一个通用的程序???在运行效率和开发使用方便性二者之间,谷歌选择了折中,以Java为应用开发语言。Android提供名为Dalvik的Java虚拟机,使Java语言应用运行在这个之上,从而隔离了底层设备的差异性,虽然用解释型语言牺牲了一些效率。
按这个做法,在Android上开发3D游戏的话,直接用Java语言的3D
API就行了,不需要另外再弄什么东西。那为什么Android大型3D游戏还要另外再下数据包,而且数据包还区分CPU(例如给高通CPU的数据包,给TI
CPU的数据包)?这就牵扯到游戏开发商的成本问题。由于游戏开发商希望在大部分设备上只用一套代码,所以基本是C/C++开发的以适应普遍的设备平台,只需为每个平台编译一次。如果再单独为Android开发一套Java代码,显然成本是非常高昂的。于是有了一个间接方法:将C/C++语言编写的核心代码用Android提供的DNK编译成库,再把系统相关的代码用Android
Java开发一下,通过JNI调用C/C++程序编译出的核心库,大功告成,省去了巨额的开发经费。当然也有一些3D游戏,专门为Android写的一套Java代码,不用额外数据包,这样方便了Android用户,但投入-产出是否划算?游戏开发商需要打个算盘了。
最后说苹果IOS系统。它与微软有相似也有不同。不同的是,微软有Intel这样的一个好基友,而苹果似乎在ARM分散和内斗的阵营里难以找到肯与自己长相厮守的伙伴。相似的是,都是闭源系统只给自己使用,并且自家内部使用一个CPU体系(苹果使用的是自己的A系列CPU,微软是x86系列CPU)。不管相同还是不同,最终都促成苹果的自成体系。因为没有忠实硬件伙伴,于是苹果自己开发CPU(本身苹果以前也是做硬件的)。再加上只有自家使用,苹果的IOS王国就与微软帝国一样,拥有了统一的CPU体系。这就使得它与微软一样,应用程序一次编译处处运行。而且由于是编译型语言(object-c)生成的可执行程序,效率比Java要高,这也是为什么IPhone的配置比高端的Android机低却仍然运行很流畅的原因。
最终总结一下,未来的趋势或说开发者和用户的需求,就是应用程序的硬件无关性,一次编译处处运行。而在如何满足这一要求上,有两种途径,一种是一个操作系统采用一致的向下兼容的CPU体系,另一种就是用Java、WebApp这样的平台无关开发方法。如何取舍取决于操作系统提供商本身的特性和市场策略。至于哪种趋势将占主流,在目前的市场格局下尚无法预测。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。查看:4592|回复:2
所需文件:&&Java:
&&开发基础环境,版本为Java SE 7,JDK和JRE这两个都要下载的
&&Eclipse:
&&开发工具,支持多语言开发,是开发Java,Android等项目的利器
&&Android SDK Tool:
&&安卓软件开发工具包,可以下载开发时需要的软件包,框架,工具等信息& && &
&&第一步:J***A环境搭建&&***JDK与JRE进行***(建议将JDK放在自定义文件夹内,例如:F:\Android\java;在***JDK的过程中会弹出让你***JRE,不要选择与JDK装在同一目录)***完成后,右击“我的电脑”,点击“属性”,单击“高级系统设置”,点击“环境变量”,如图:在“系统变量”中,设置3项属性,J***A_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”: J***A_HOME指明JDK***路径,就是刚才***时所选择的路径F:\Android\java如图:Path项下添加:;%J***A_HOME%\ %J***A_HOME%\jre\ 在CLASSPATH项添加:.;%J***A_HOME%\lib\dt.%J***A_HOME%\lib\tools.jar(要加.表示当前路径),如图: “开始”-&;“运行”,键入“cmd”,键入命令 “javac”,出现以下画面,说明环境变量配置成功。不成功就是人品问题了,请自行百度。&&第二步:Eclipse与Android SDK Tool***
&&Eclipse的***就是压缩包解压到当前文件夹即可,解压完成后就可以直接运行了,如果出现错误信息并且内容为A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Ec等等信息是时,则为J***A环境没有配置对,请检查第一步。打开installer_r22.0.1-windows.exe,自定义***目录。***完毕之后会看到这样一个界面。点击进行全选,点击Install***。开始下载文件并开始***,漫长的等待。 完成后出现一个日志,如图这个错误是就是在下载***API的时候,ADB服务在运行,停止失败,没有影响。完成后接下来装***D(虚拟机,程序,通过它来调试程序),打开目录下***D Manager.exe。点击New后出现下列图片。 详细配置自行选择,填写完成之后点击OK会将填写信息以对话框的形式进行确认。点击Start开始运行虚拟机,第一次虚拟机运行有些慢。&&第三步:开始第一个安卓程序
&&点击eclipse.exe开始,要选择工作空间(创建程序的存放地址,建议放在自定义文件夹内)。打开之后在菜单栏上选择 help-&Install New SoftWare 出现如下界面:点击Add,出现下图对话框,名称随便写,地址为& && &,点击OK出现如图,然后全选就一直Next,最后一步选择同意之后点击Finsh就开始***,***过程中会出现一个警告无视掉,***完成之后重启Eclipse重启之后点击菜单中的window-&preferences,选择Android进入如下界面。 SDK地址选择刚刚我们***SDK Tool的地方,就会出现***的版本套装,选择后点击Apply,再点击OK完成版本选择。最后我们开始建立我们第一个Android程序 选择菜单file-&new-&other 进入如下界面, 选择Android Application Object,点击Next填写名称,其他默认到这一步的时候,我们可以自定义应用的图标是什么,选择好了之后点击Next选择创建一个空白的程序主活动名称可以自定义,我就默认了点击完成后,项目已经创建了,把Welcome这个选项卡关掉就能看到我们刚刚添加的项目了 点击Run AS --&&Android Application。(注意要把左侧HelloAndroid选中,否则无效)选择第一个,点击OK进行开始你的安卓之路吧&&附录:Eclipse汉化
&& 本教程使用的是Eclipse 4.3版本,网上已经有汉化教程,转载于:
&&在 菜单栏的 help项目下有 install new software,单击会出现一个新的对话框点击Add,名字随便,地址为& &http://download.eclipse.org/technology/babel/update-site/R0.10.1/juno 找到Babel language pack for eclipse in Chinese(Simplified),然后一直选择下一步,最后完成后需要重新启动重启之后就是中文版了(其实也没有汉化多少)&&文章为:推荐
本帖最后由 对镜贴黄花 于
11:36 编辑
资深技术经理
引用:原帖由 对镜贴黄花 于
11:34 发表
所需文件:&&Java:
&&开发基础环境,版本为Java SE 7,JDK和JRE这两个都要下载的
&&JDK:/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
&&JRE: /technetwor ... 多谢分享
这个不错!我也是学Android的,可以看出主页君很用功的做了,很详细、、、谢谢分享!!!
太阳光芒万丈却不及蜡烛只为一人照亮、、、