使用字节码生成的框架是否会创建漏洞抽象?

时间:2010-04-09 02:22:01

标签: java frameworks language-design abstraction bytecode

我的观点是,如果你不理解框架的抽象,你仍然可以反编译并理解它,因为你知道语言,例如Java的。但是,当发生字节码生成时,您必须了解更低级别 - JVM级别的字节码。 我真的很害怕使用任何这样的框架,这些框架很多。大多数时候我认为字节码生成的原因只是缺少元编程等语言功能。你同意吗?你有什么看法和论点?你如何通过这些框架中的漏洞抽象来解决这个问题?

1 个答案:

答案 0 :(得分:2)

首先简单回答:仔细使用这些框架,而不是每次都使用这些框架。

您认为字节码生成通常是围绕语言限制解决问题,这是正确的。依赖注入。修复这些限制提供了强大的工具(spring,guice,hibernate),但是当它归结为它时,它不再是纯Java(仍然是纯粹的JVM),因此带来了一些魔力。 只要您只使用其中一种工具,您就可以不深入了解内部结构。但是如果你开始混合它们,你需要了解它们。 唯一的帮助因素是以前的使用;如果其他人已经成功地整合了更多这些框架并记录下来,那么你可能会因为看起来不太深而离开。

当你想使用某种工具时,问问自己:

  • 我获得了什么?
  • 是否可以使用我的其他工具?
  • 我可以使用更简单的工具吗?

每次添加工具都会增加复杂性。每次添加复杂工具(例如生成字节码)都会增加复杂性。

示例:

  • 在工作中我们使用spring + hibernate。 这是对EJB(< v3)的改进,众所周知这种组合可以工作并且有很好的文档记录。

  • 在玩具项目中我使用Guice。这使得一些解耦成为可能,但要求我的libs的每个用户都使用Guice。出于这个原因,我可能会通过Guice了。