浅析各种动态加载机制
2010-06-08 23:15
239 查看
目前而言,主流的平台都支持应用的动态加载机制,即,应用以文件形式存在于手机的文件系统中,当运行时才加载到内存中执行。
动态加载目前而言主要有3种实现方式:
1. 解释型:
如J2ME,Android平台以及BREW中的UIOne写的TrigML,实际的应用文件是字节码,并非可执行文件,运行时靠虚拟机即时解释执行。
2. 动态链接
这个需要操作系统和平台层面支持,如Linux,WM,Symbian等平台,开发生存的应用文件是二进制非完全链接的目标文件。 运行时加载后,靠操作系统进行即时的完全链接,然后执行。
3。 基于接口型
BREW就是属于这种。 由于BREW允许运行在非智能操作系统上,如Rex等,所以对操作系统的能力不能有奢求,比如动态链接能力等,所以,必须脱离操作系统,单独从BREW层面实现动态加载, 那么,显而易见,BREW的Mod必须是完全链接的可执行二进制文件,但是却又不能将具体平台的BREW实现链接进去,这对矛盾就是靠接口来解决的。 BREW的一切服务皆由接口体系提供。 对于编译期而言,接口服务就是虚表的一次函数指针调用。 由于是指针调用,所以,编译,链接都是可以通过的。 而该接口实例指针的真正绑定,就发生在运行时。 具体可以参见笔者写的 深入刨析BREW动态加载机制, 网上搜索的到, 本博客也将马上贴出来
动态加载目前而言主要有3种实现方式:
1. 解释型:
如J2ME,Android平台以及BREW中的UIOne写的TrigML,实际的应用文件是字节码,并非可执行文件,运行时靠虚拟机即时解释执行。
2. 动态链接
这个需要操作系统和平台层面支持,如Linux,WM,Symbian等平台,开发生存的应用文件是二进制非完全链接的目标文件。 运行时加载后,靠操作系统进行即时的完全链接,然后执行。
3。 基于接口型
BREW就是属于这种。 由于BREW允许运行在非智能操作系统上,如Rex等,所以对操作系统的能力不能有奢求,比如动态链接能力等,所以,必须脱离操作系统,单独从BREW层面实现动态加载, 那么,显而易见,BREW的Mod必须是完全链接的可执行二进制文件,但是却又不能将具体平台的BREW实现链接进去,这对矛盾就是靠接口来解决的。 BREW的一切服务皆由接口体系提供。 对于编译期而言,接口服务就是虚表的一次函数指针调用。 由于是指针调用,所以,编译,链接都是可以通过的。 而该接口实例指针的真正绑定,就发生在运行时。 具体可以参见笔者写的 深入刨析BREW动态加载机制, 网上搜索的到, 本博客也将马上贴出来
相关文章推荐
- android studio for android learning (二十七) UI控件动态加载机制浅析
- android 开发零起步学习笔记(十):UI控件动态加载机制浅析
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android 反射机制动态加载模块
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Ext JS 4的倒数:动态加载和新的类机制 Count down to Ext JS 4: Dynamic Loading and New Class System (下)
- java 反射机制与动态加载类学习要点
- android 应用动态加载机制1
- Android Apk资源加载机制源码分析以及资源动态加载实现系列文章
- Python的动态加载机制
- 突破 Silverlight 自身限制, 做更好的动态加载导航机制(转)
- Android apk动态加载机制的研究
- Android之Android apk动态加载机制的研究
- Android中的动态加载机制
- java类的加载机制和反射浅析
- 一种方便的动态库动态加载机制
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制
- 【收藏】Android动态加载classLoader工作机制 & QQ空间热补丁hotFix原理
- Android 动态加载 (一) 态加载机制 案例一