android和java的联系区别

您所在的位置: &
1.4 比较Android与Java ME
1.4 比较Android与Java ME
人民邮电出版社
《精通Android 2》第1章Android计算平台简介,本章将概述Android及其SDK,简短介绍重要的包,引出每章将涉及的主题,展示如何利用Android源代码,重点介绍一下为Android平台编程的美好前景。本节为大家介绍比较Android与Java ME。
1.4 比较Android与Java ME
如上所述,Android采用了一种综合、专注而又重点突出的方法,将自身打造成为超越基于JVM的简单解决方案的移动平台。Android平台通过一个包提供了所需的一切:操作系统、设备驱动程序、核心库、JNI、优化的Dalvik VM以及Java开发环境。可以保证开发人员在开发新应用程序时,所有关键库都可在设备上使用。
这种综合方法不同于Java ME等其他移动平台。在比较这两种平台之前,首先简单概述一下Java ME。图1-4展示了各种计算配置的Java可用性。Java SE适合于桌面和工作站配置。Java EE(Java Platform, Enterprise Edition)专为服务器配置而设计。
Java ME是一个针对小型设备进行精简设计的Java版本。有两种配置集可用于Java ME。第一种配置称为CDC(Connected Device Configuration,连接设备配置)。用于CDC的Java ME是一个精减的Java SE版本,包含较少的包,这些包中的类更少,甚至这些类中的字段和方法也更少。对于受到更多限制的设备和装置,Java定义了一个称为CLDC(Connected Limited Device Configuration,连接受限设备配置)的配置。图1-5比较了各种Java配置的可用API。
安装在基础CDC和CLDC API之上的任何可选包都被视为"配置文件",可以使用JSR(Java Specification Request,Java规范请求)流程进行标准化。每个已定义的配置文件都会为开发人员提供一组额外的API。
(点击查看大图)图1-4 Java计算配置
(点击查看大图)图1-5 Java API可用性
警告&CLDC和CDC都支持Java SE外部的一些Java API,它们的类可能不是以java.*命名空间开头的。因此,如果桌面上运行了一个Java程序,无法保证它能在仅支持微型版本的设备上运行。
CLDC Java平台由一个经过显著删减的专门JVM承载,这个JVM名为KVM(K Virtual Machine,K虚拟机),它能够在内存只有128K的设备上运行。(KVM中的K表示KB。)CLDC可以在MIDP(Mobile Information Device Profile,移动信息设备配置文件)2.0下运行更多API。此API包含javax.microedition.*下的许多包。重要的包包括MIDlet(简单应用程序)、一个名为LCDUI的UI包、游戏包和媒体包。
CDC配置API包括java.awt API、java.net API和更多安全性API,当然还包括CLDC配置API。CDC上可用的其他配置文件为程序员提供了javax.microedition.xlet API(Xlet表示CDC配置下的应用程序)。在CDC配置之上,可以找到大约10个可以运行的可选包,包括蓝牙、媒体API、OpenGL ES(OpenGL for Embedded Systems)、JAXP(Java API for XML Processing)、JAXP-RPC、Java 2D、Swing、Java RMI(Java Remote Method Invocation,Java远程方法调用)、JDBC(Java Database Connectivity,Java数据库连接)以及Java API。总体而言,Java ME规范包含20多个JSR。据预测,JavaFX()也将会在Java移动应用领域发挥更大的作用。
说明&JavaFX是来自Sun公司的一种新用户界面框架,它显著改善了浏览器中类似小程序的功能。它提供了一种对设计人员更加友好的声明性UI编程模型。
在了解了Java ME的背景之后,让我们看看它与Android相比孰优孰劣。
多种设备配置:Java ME适用于两类微型设备,为每种设备提供了标准化但截然不同的解决方案。而Android仅适用于一种设备模型。它不会在低端设备上运行,除非这些设备的配置改进了。
易于理解:由于Android仅专注于一种设备模型,所以它比Java ME更易于理解。Java ME具有针对每种配置的多种UI模型,具体取决于设备所支持的功能:MIDlet、Xlet、AWT和Swing。每种Java ME规范的JSR更难以理解。它们经历更长的时间才成熟,找到针对它们的实现可能非常困难。
响应能力:在具有类似配置的设备上,与受支持的标准JVM相比,Dalvik VM性能更优且具有更高的响应能力。与Dalvik VM相比,KVM解决了具有更少内存的较低级设备的问题。
Java兼容性:由于采用了Dalvik VM,所以Android运行.dex字节码,而不是Java字节码。只要将Java编译为标准Java类文件,这就应该不是大问题。只是不能在运行时解释Java字节码。
采用率:Java ME在移动设备上得到了广泛的支持,因为大部分移动电话都支持它。但对于Java开发人员而言,Android的统一性、低成本和易于开发的特性是开发Android应用程序不错的理由。
Java SE支持:与CDC中对Java SE的支持相比,Android对Java SE的支持更加完善,但AWT和Swing除外。前面已经提到,Android拥有自己的UI设计方法。实际上,Android的声明性UI类似于更高级的UI平台,比如Microsoft Silverlight和Sun公司的Java FX。
【责任编辑: TEL:(010)】&&&&&&
关于&&&&的更多文章
在诸多移动操作系统中,Android的成长性无疑是最强的。Android以
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
本书以Android 4.X进行开发示范,通过大量图示与step
本书手把手地教读者用C语言制作两种编程语言:crowbar
享誉全球的未来学家理查德.沃森,用科学和多元的视角
本书是一本真正意义上的网络系统设计图书,从网络系统设计角度全面介绍了整个网络系统设计的思路和方法,而不是像传统网络集成类
51CTO旗下网站推荐这篇日记的豆列
······Icansoft 的BLOG
用户名:Icansoft
文章数:127
评论数:245
访问量:3939622
注册日期:
阅读量:5863
阅读量:12276
阅读量:415692
阅读量:1103226
51CTO推荐博文
&& & & &首先分清楚Stack,Heap的中文翻译:Stack&栈,Heap&堆。
&&&&&&&&在中文里,Stack可以翻译为&堆栈&,所以我直接查找了计算机术语里面堆和栈开头的词语:
&&&&&& 堆存储: heapstorage&&& 堆存储分配: heapstorage allocation& 堆存储管理: heap storage management
&&&&&&& 栈编址: stack addressing& &栈变换:stack transformation& 栈存储器:stack memory& 栈单元: stack cell
&&&&&&&&&&接着,总结在Java里面Heap和Stack分别存储数据的不同。
&&&&& Heap(堆)
&&&&& Stack(栈)
&JVM中的功能
&&&&&内存数据区&&&&
&&&&&&&&&&&&&& 内存指令区
&&&& 对象实例(1)
&基本数据类型, 指令代码,常量,对象的引用地址(2)
1. 保存对象实例,实际上是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在stack中)。
&& 对象实例在heap中分配好以后,需要在stack中保存一个4字节的heap内存地址,用来定位该对象实例在heap中的位置,便于找到该对象实例。
2. 基本数据类型包括byte、int、char、long、float、double、boolean和short。
&&& 函数方法属于指令.
&=======================&&&&&&&
& 引用网上广泛流传的&Java堆和栈的区别&里面对堆和栈的介绍;
&&&&&&&&& &Java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。&
&&&&&&& &栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 &
&&&&&&& &可见,垃圾回收GC是针对堆Heap的,而栈因为本身是FILO - first in, last out. 先进后出,能够自动释放。 这样就能明白到new创建的,都是放到堆Heap!本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
13:51:46 11:39:03 08:56:58

我要回帖

更多关于 前端和java的区别 的文章

 

随机推荐