上星期想了解热修。恰好遇到了阿里放出的热修复原理,顺便拜读了下。
整书从热修修复的几方面给出了原理解析
1,代码
2,资源
3,so库
代码修复中:既从不同热修技术的横向对比(腾讯类加载、阿里底层替换)。又从阿里系实现方案中从源代码->字节码->机器码的竖向解析。
对于应用开发者来说,有利于理解热修复的实现原理,避免在使用热修中避免晦涩难解的坑。
对于底层开发者来说,提供了解决底层具体问题的思考思路。
对于我所收获的是:除了开阔眼界(因为很少去了解底层代码的实现,只习惯于拿来就用的玩法),还认识到java编译的一些细节。其实反编译也是蛮好玩的。
final static 域优化笔记:
“如果一个field是常量,那么推荐尽量使用static final作为修饰符”
正确解析:
得到优化的仅仅是final static 原始类型和string类型(非引用类型),引用类型实际上不会得到任何优化。
应用混淆方法编译中方法内联笔记:
1,方法没有被其他任何地方引用到,毫无疑问,该方法会被内联掉
2,方法足够简单,比如一个方法的实现就只有一行,该方法会被内联掉,那么任何调用该方法的地方都会被该方法的实现替换掉
3,方法只被一个地方引用到,这个地方会被方法的实现替换掉。
Lambda表达式编译规则:
待读文章:http://mp.weixin.qq.com/s/ht3KIeG9-H9HtgF_nlm5cw
对于2与3,收获最大的还是文中提到的不同厂家热修的横向比较,有利于开发者去选择使用哪种热修技术。
具体可以通过文中P148图片进行浏览。
接下来是对于美团(Robust) 阿里(Sophix) 微信(Tinker) 三家热修复接入的实践对比
将后续更新于个人博客地址。
题外话:阿里为国内软件开发技术进步。做的努力与输出还是蛮值得人尊重的。
因此转发下。
另附20170621 《阿里巴巴java开发手册v1.2.0》:http://mp.weixin.qq.com/s/-kmt6lfoDBWhyTJ_U3AM8A
书籍下载地址:
http://mp.weixin.qq.com/s/Yp-Z5E9FKC2gCRM-_998gw