目前而言,主流的平台都支持应用的动态加载机制,即,应用以文件形式存在于手机的文件系统中,当运行时才加载到内存中执行。
动态加载目前而言主要有3种实现方式:
1. 解释型:
如J2ME,Android平台以及BREW中的UIOne写的TrigML,实际的应用文件是字节码,并非可执行文件,运行时靠虚拟机即时解释执行。
2. 动态链接
这个需要操作系统和平台层面支持,如Linux,WM,Symbian等平台,开发生存的应用文件是二进制非完全链接的目标文件。 运行时加载后,靠操作系统进行即时的完全链接,然后执行。
3。 基于接口型
BREW就是属于这种。 由于BREW允许运行在非智能操作系统上,如Rex等,所以对操作系统的能力不能有奢求,比如动态链接能力等,所以,必须脱离操作系统,单独从BREW层面实现动态加载, 那么,显而易见,BREW的Mod必须是完全链接的可执行二进制文件,但是却又不能将具体平台的BREW实现链接进去,这对矛盾就是靠接口来解决的。 BREW的一切服务皆由接口体系提供。 对于编译期而言,接口服务就是虚表的一次函数指针调用。 由于是指针调用,所以,编译,链接都是可以通过的。 而该接口实例指针的真正绑定,就发生在运行时。 具体可以参见笔者写的 深入刨析BREW动态加载机制, 网上搜索的到, 本博客也将马上贴出来
浅析各种动态加载机制
最新推荐文章于 2023-11-09 10:33:53 发布