加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

以下Java代码在自主计算领域如何有用?

发布时间:2020-12-15 00:27:02 所属栏目:Java 来源:网络整理
导读:在我正在学习的书中,他们展示了这个 Java代码: Class c = ClassLoader.getSystemClassLoader().loadClass(name);Class type = this.getClass().getClassLoader().loadClass(name);Object obj = type.newInstance(); 此代码用于动态加载Java类.这本书继续说
在我正在学习的书中,他们展示了这个 Java代码:
Class c = ClassLoader.getSystemClassLoader().loadClass(name);
Class type = this.getClass().getClassLoader().loadClass(name);
Object obj = type.newInstance();

此代码用于动态加载Java类.这本书继续说:

unloading modules raises an issue. A class loader cannot unload a
class. Unloading a class requires unloading the class loader itself.
This is why programmers .. tend to define several class loaders.

使用这样的代码有什么好处?自主计算的概念通常是“自主系统管理”.这与Java程序如何受JVM控制有关?

来源:自动计算原理设计(由拉兰达)

解决方法

好处是可以在运行时决定实际加载和使用什么类.对于简单的Java程序,您有一个类的单个实现没有任何好处.

像Osgi这样的复杂环境(Eclipse的基础)为每个模块使用单独的类加载器.这样可以带来灵活性以及在运行时更换模块的可能性.

另一个“经典”用例是在运行时加载数据库驱动程序.您可能想要连接到MySQL数据库或Oracle,并且都使用JDBCDriver的不同实现.

加成:

讨论eclipse / osgi类加载概念的Alex Blewitt的一篇非常好的文章可以在here中找到.

在我自己的编码经验中,我使用eclipse插件进行企业级Web监控项目.监控基本上是关注网络上不断刮擦的资源??.每个这样的资源由监视器插件的实现来监视.并不是所有的资源都由我们控制,所以当他们改变时,我们必须调整处理该资源的插件.当我们卸载旧的插件模块时,整个监控应用程序可以继续运行.所有在运行时,几乎没有停机时间(仅对于需要交换的模块)当然,我使用Eclipse胖客户端平台(RCP)隐藏了每个插件的类加载器.您只需要指定哪个插件依赖于哪个和实际的类加载,然后由RCP平台完成.

像Tomcat这样的Web服务器使用相同的方法,虽然我没有太多的Tomcat经验.

直接实现动态类加载系统可能是一个很好的练习,但是对于现实世界的应用程序,我将明确地研究生产级实现,如Eclipse RCP或Apache Karaf

如果您想将整个事情进一步整理,并且需要在群集中运行插件,则可能需要查看Gyrex

我不能在这里分享我的代码,但这里有一些优秀的起点与代码示例:

> http://www.vogella.com/tutorials/EclipsePlugIn/article.html
> https://karaf.apache.org/manual/latest-2.3.x/quick-start.html
> http://www.javaworld.com/article/2077837/java-se/hello–osgi–part-1–bundles-for-beginners.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读