热插拔和替代方案?


15

从我大学时代的初期开始,我就一直在使用Java,而我们遇到的最大问题是绝对没有其他解释型语言高效。所有人都确信Java是最好的编译语言之一。

但是,Sun和Oracle都没有为解决这个问题投入足够的精力。问题之一当然是类重载。

社区解决此问题的最新尝试是DaVinci Hotswap项目JRebelPlayFramework。但是,在撰写本文时,它们仍不成熟(imo)和本机。其中一些尚未为企业准备就绪,其中一些与所有IDE不兼容,其中一些是不成熟的大学项目。路线图甚至开发人员都可以使用Java,但Java社区仍然没有即时类重新加载的解决方案。

Oracle为解决这个问题付出如此艰巨的努力吗?为什么还没有在本地实现类重载?


2
实际上,尽管JRebel不是免费的,但它已经完全为企业准备就绪,并具有相当好的IDE支持。
2011年

@CarlosZ真的吗?从第一个Beta到3.x系列,我都已将IntelliJ IDEA与JRebel一起使用。代替“ this”,您必须使用“ that”。在每个版本的论坛上,您都会看到许多有关intelliJ插件的问题。但是最糟糕的经历是调试问题。调试器可能连接得很晚。而且我们遇到了巨大的问题。作为intellJ用户,我对IDEA中的JRebel有具体的经验。当然,付钱也是另一个问题。

@CarlosZ这是一个真正的问题,我很好奇要了解为什么很难在Java中本地实现类重载。

Answers:


4

JEE / J2EE呢?该版本于12年前首次发布。Sun / Oracle和许多其他供应商直接支持此功能。

OSGi呢?它的第一个版本是在11年前。Eclipse(IDE)基于它构建,Sun / Oracle的Glassfish和Apache Felix广泛使用它。您可以将其与Spring-OSGi一起使用。

Java SE本身未支持该功能,因为应用服务器故意将企业应用程序作为单独的产品来支持。


@Peter Lawrey 1)Lawrey关于J2EE,有具体的解决方案吗?我看不到你的意思吗?2)为了重载类,您认为应该使用OSGI吗?那拼图呢?即使在JCR级别,也没有达成共识:)。与类重载相比,OSGI解决的领域非常不同。3)我听不懂JavaSE部分,您能再解释一下吗?并且请注意,达芬奇HotSwap项目由Oracle赞助。这意味着,至少对我而言,他们也渴望这样的解决方案。

这取决于您希望热插拔执行的操作。如果您想通过热插拔进行调试,则可以使用一段时间。但是,对于健壮的企业解决方案,这种性质的热交换是不合适的,只有受控版本才适用。在这种情况下,JEE和OSGi允许您更新正在运行的应用程序,该应用程序具有几乎相同的好处,但是具有生产环境所期望的控制。例如,在OSGi容器中,我可以删除类并用较新的版本替换它们,而无需停止应用程序。您需要哪些OSGi不需要的功能?
彼得·劳瑞

1)JEE / J2EE参考实现可能是一个起点,但还有许多更流行,更易于使用的JEE。我的意思是,您可以在正在运行的系统中替换代码。在生产/受控环境中您还需要什么。
彼得·劳瑞

1
2)重新加载类是我使用OSGi的唯一功能。您认为OSGi的主要用途是什么?
彼得·劳瑞

3)JEE的要点是这是支持企业应用程序的空间。JSE是可用于JEE或其他应用程序的基础平台。
彼得·劳瑞

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.