在工作中,我用到的2种java字节码增强的功能:
1.javassist
自己手写的话,可以用于实现动态代理,动态增强类的功能。
比如:统计方法耗时,或者做任何你想到的增强功能,都是可以。
2.agent
毫无疑问,java最实用的一个就是“热更新”机制了,go语言再好,这点很难实现,java这一点就是非常牛逼的,不管你性能再高,热更新实现不了,在游戏服务器这里,绝对是硬伤。
agent机制,可以轻松让我们的游戏服务器实现热更新。
agent机制有2大用途:
监控。
调试。
premain
agentmain
JVMTI
总结:
我觉得这就是java最牛逼的地方了,有了字节码这个中间层,我们能做的东西实在太多太多了,像go这种,我认为就只能适合写中间件了,做游戏这块,抽象能力差,热更新机制很难实现,那就不太适合了。