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

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

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


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

阿里JarsLink原理分析


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

阿里JarsLink原理分析


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

阿里JarsLink原理分析


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

阿里JarsLink原理分析


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



相关文章:

  • 2022-12-23
  • 2021-11-27
  • 2021-11-23
  • 2021-11-20
  • 2022-12-23
  • 2021-07-04
  • 2021-10-06
猜你喜欢
  • 2021-07-17
  • 2021-06-10
  • 2021-10-30
  • 2022-02-10
  • 2022-12-23
  • 2021-12-21
  • 2021-09-04
相关资源
相似解决方案