android Java虚拟机和sun java虚拟机的主要区别体现在因为手机内存和硬件的限制,不可能直接将sun java虚拟机的机制搬过去,对于一些字节、内存管理方面需要重新设计,一下是主要区别:
1、Dalvik 和标准 Java 虚拟机(JVM)
Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。 JVM字节码中,局部变量会被放入局部变量表中,继而被压入堆栈供操作码进行运算,当然JVM也可以只使用堆栈而不显式地将局部变量存入变量表中。Dalvik字节码中,局部变量会被赋给65536个可用的寄存器中的任何一个,Dalvik指令直接操作这些寄存器,而不是访问堆栈中的元素。
2、Dalvik 和 Java 字节码的区别
VM字节码由.class文件组成,每个文件一个class。JVM在运行的时候为每一个类装载字节码。相反的,Dalvik程序只包含一个.dex文件,这个文件包含了程序中所有的类。Java编译器创建了JVM字节码之后,Dalvik的dx编译器删除.class文件,重新把它们编译成Dalvik字节码,然后把它们写进一个.dex文件中。这个过程包括翻译、重构、解释程序的基本元素(常量池、类定义、数据段)。常量池描述了所有的常量,包括引用、方法名、数值常量等。类定义包括了访问标志、类名等基本信息。数据段中包含各种被VM执行的函数代码以及类和函数的相关信息(例如DVM所需要的寄存器数量、局部变量表、操作数堆栈大小),还有实例变量。
3、Dalvik 和 Java 运行环境的区别
Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
Dalvik虚拟机在android2.2之后使用JIT (Just-In-Time)技术,与传统JVM的JIT并不完全相同,
Dalvik虚拟机有自己的 bytecode,并非使用 Java bytecode。
还有以下几点:
1、Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。
2、Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
3、不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex。
不过有一点是习惯了java语言开发的程序员,在android平台上同样可以接着使用java的全部语法,只不过新增了很多知识点。
❷ Java和Android学哪个好
Android是主流智能手机的操作系统,JAVA是一种开发语言,两者没有好坏优势之分,只是两种职业岗位选择,学安卓从事移动互联方向开发,学JAVA从事软件方向开发,主要看个人选择,从学JAVA转移到安卓,学安卓转移到JAVA都是可以的。完美空间认为:从职业角度出发,想要快速从事软件行业的开发,对大多数计算机不好的人员,安卓Android开发是最合适的选择。
从整体来讲,java和android的区别在于android程序是基于组件和配置的,而且android开发以java语言为开发工具,表面上看他们有点同宗不同门,但实际上区别十分大,android是一个主流智能手机操作系统,java是一种开发语言,两者没有好坏之分,而且两者也是不同的岗位,从工作岗位来看,安卓从事的是移动互联方向,java则是从事开发方向。
java和android都是可以做手机开发的;在以前半智能机的时代,手机应用的最多的就是java、塞班操作系统了,这两个操作系统在三年以前应该和今天的安卓、IOS系统差不多,当时认为很完美了,不过时至今日,java系统相对较少,随着3G时代的到来,人们最重要的网络终端设备一定是手机,而移动终端设备中3G系统的android手机又最多,android手机又以java为基础,所以二者都可以说能做手机开发。
现在安卓能占智能系统的50%左右的市场份额,当然智能系统或者是移动终端不仅仅是指手机,因为从android3.0以后就开始应用于平板电脑了,android也是在快速的发展,从目前势头上来看,好像android要略胜一筹,但是其实这两者并没有可比性,因为发展方向并不一样,侧重点也不一样,java按照实际的开发产品来看,至少有三个方向可以发展;手机终端、电脑客户端、web服务器断,而android只适用于手机终端,因此java的发展范围相对要广一些,也就是我们所说的工作岗位更多一些,而android范围小一些,但是从待遇上来看普遍稍高,各有各的好处,再说学习来看,从android转java和从java转android都是可以的,不管哪个行业都存在金字塔顶端的人,如果做好的话两者都是不错的方向。
❸ Java和安卓有什么关系,发展前景怎么样
在Google开源的kotlin公布之前,Android的应用大多都是用java编写的
没啥前景,累死累活也就是个码农;
java离开安卓还可以写后台(服务端)比Android工作机会多
❹ java与安卓是什么关系
Java,是由Sun
Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java
applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java
applet。 Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个
Activity
类(class)负责创建视窗(window),一个活动中的Activity就是在
foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的
Activity
全部画面被其他
Activity
取代时,该
Activity
便被停止(stopped),甚至被系统清除(kill)。
View等同于J2ME的Displayable,程序人员可以通过
View
类与“XML
layout”档将UI放置在视窗上,Android
1.5的版本可以利用
View
打造出所谓的
Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android
Hero手机即含有大量的widget。至于ViewGroup
是各种layout
的基础抽象类(abstract
class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity
中,要通过findViewById()来从XML
中取得View,Android的View类的显示很大程度上是从XML中读取的。View
与事件(event)息息相关,两者之间通过Listener
结合在一起,每一个View都可以注册一个event
listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。
❺ Android和Java语言的异同,关系和区别
安卓更像是java的一个延伸开发平台,安卓是基于java语言进行开发。Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例(Instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
❻ Java和Android有什么联系
Android和Java的联系
Android的应用层上的应用程序是用Java编写的,以Java作为开发语言,但是,Java并不等同于Android,因为Android SDK引用了Java SDK的大部分,少数部分被Android SDK所抛弃。所以,要想从事Android的开发,就必须有Java基础。
Android和Java区别
Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优势之分,只是两种职业岗位选择,学安卓从事移动互联方向开发,学Java从事软件方向开发,主要看个人选择,从学Java转移到安卓,学安卓转移到Java都是可以的。
Java和Android都能做手机开发吗?
这两个方面都是可以做手机开发的;在以前半智能机的时代,我们手机应用的最多的就是Java、塞班操作系统了,这两个操作系统在三年以前应该和今天的安卓、IOS系统差不多,当时认为很完美了,不过时至今日,Java系统相对较少,随着3G时代的到来,人们最重要的网络终端设备一定是手机,而移动终端设备中3G系统的Android手机又最多,Android手机又以Java为基础,所以二者都可以说能做手机开发。
学Java和学Android哪个好?
现在安卓占智能系统大半的市场份额,当然智能系统或者是移动终端不仅仅是指手机,还有平板电脑。但是其实Java和Android这两者并没有可比性,因为发展方向并不一样,侧重点也不一样,Java按照实际的开发产品来看,至少有三个方向可以发展;手机终端、电脑客户端、web服务器断,而Android只适用于手机终端,因此Java的发展范围相对要广一些,也就是我们所说的工作岗位更多一些,而Android范围小一些,但是从待遇上来看普遍稍高,各有各的好处,再说学习来看,从Android转Java和从Java转Android都是可以的,不管哪个行业都存在金字塔顶端的人,如果做好的话两者都是不错的方向。
❼ java和android哪个更有前景
android开发也是要java的,只能说侧重点不一样。
java按照其实际开发的产品大致有三个方向手机终端,电脑客户端和web服务器端。个人认为web服务器端始终是最大的发展方向。
1.首先说一下手机终端。android开发目前来讲盈利状况很差,远不比iOS,但这不意味着android就不行。android的不便在于手机型号众多,版本复杂,用户层次相对低一点。开发程序要兼容不同分辨率是很痛苦的事情,而android手机市场版本是在是太多,给用户选择的机会大大的有,但是这情形只适合喜欢折腾的用户。说用户层次低并没有贬低的意思,而是与iphone的用户相比,android用户在app上的消费能力明显有差距。
2.然后是电脑客户端,只适合比较小众的开发。windows上可以用c++,c#开发,而Mac上也不需要java开发,因为安装一个jre就能将很多用户拒之门外。
3.最后是web开发,也就是javaEE。web开发无疑是java应用方向的主心骨。服务器端的编程,用java有一定的优势,特别是有很多框架可以使用。javaEE已经火了好多年了,而移动互联网的发展会将这一势头保持下去。好处在于,从服务器的实现角度讲,javaEE的开发并没有太大变化。
❽ Android开发和JAVA开发有什么区别
Android开发和JAVA开发 是截然不同的两个东西,就好比C语言只是一种概念你不能说他是vs studio的一种分支,因为C语言不是只能在vs studio上编译运行,C还可以在TC和GCC等等编译器上运行,Android和JAVA就是这种关系,你不应该问"Android开发和JAVA开发两者有什么区别"?你应该问Android为什么要在JAVA上开发,Android不一定非要在JAVA上开发,任何编程语言都可以进行Android开发,包括C/C++ C# VBpython ,主流来讲Android在JAVA上开发,是因为JAVA各方面优点更加适合Android的开发
跨平台,一次编译到处运行,若你想要你的app在各种不同的平台设备上运行,那么所采用的开发语言就必须跨平台
效率高,Java语法相对简单,与C语言和C++语言很接近,但却丢弃了C++很少使用的、很难理解的、令人迷惑的那些语言特性,虽然有时可能会出现运行效率不佳,但是开发效率比较高。而且C++中让人头疼的指针问题,垃圾回收,在JAVA完全不需要考虑,系统自动帮你完成
虚拟机,Java程序是运行在虚拟机上的,这就为权限控制,崩溃隔离等问题打下了非常良好的基础,这样的话就算是一个程序崩溃了,往往也只是应用闪退而已,不容易造成系统的整体崩溃。
成熟,Java语言可以说是一个相当成熟的计算机编程语种,性能很好,用的人也超级多,除了基础类库完善,各种高级的第三方组件更是不计其数,更重要的是Java虚拟机规范是开放的,谷歌只要按照甲骨文的虚拟机规范很容易写出一套虚拟机。
安全,由于Java语言经常被使用在网络环境中,为了增加其程序的安全性,Java语言提了一个防止恶意代码攻击的安全机制,另外Java的强类型机制、垃圾回收器、异常处理和安全检查机制,也使得用Java语言编写的程序具有很好的健壮性。