阿里JarsLink原理分析

本文探讨了阿里JarsLink框架的原理,它允许动态加载和卸载jar包,区别于Dubbo的多进程交互。JarsLink通过定制ClassLoader打破了Java的双亲委托机制,实现了类的重复加载。同时,它使用定时器检测模块版本变化以实现动态更新。然而,与Android不同,JarsLink目前无法实现Android上的动态卸载功能。

         早晨上班在地跌里看到“阿里技术”公众号显示的“基于Java的模块化开发框架JarsLink”, 感觉很屌的样子,上午就迫不及待的看了源码。

      JarsLink顾名思义是动态加载jar包, 跟阿里Dubbo的区别在于JarsLink依赖于宿主进程执行, Dubbo调用者/被调用者是多进程运行。

      JarsLink的厉害之处在动态加载jar、还能卸载jar, 同样是Java语言,Android似乎不能动态卸载jar。 


动态加载jar的核心是实例化一个上下文和ClassLoader, 从而实现类隔离。



ClassLoader默认逻辑是双亲委托, 即同一个类只能被加载一次, JarsLink覆盖了这个逻辑从而能多次加载同一个类;



动态卸载jar就是关闭资源、关闭上下文、下载类加载器。(PS:Android能动态卸载吗? 貌似不行)



       JarsLink是通过定时器扫描module版本变化来卸载老jar、状态新jar, 定时器(用线程池实现)默认60秒判断当前加载的jar是否需要更新。



      小结: JarsLink依赖于Springframework, 通过实例化上下文和ClassLoader实现动态加载、卸载jar/类的功能; Android还没有动态卸载jar或类的功能。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值