Java 插件/扩展应用程序如何工作?

How do Java plug-in / extension applications work?

我想创建一个 Java 自包含的 GUI 应用程序,但可以采用可以写入 GUI 终端或向 GUI 应用程序添加选项卡的加载项。但是为了实现它,我需要知道 Java 插件/扩展应用程序是如何工作的。

比如一个Eclipse插件。如果我创建一个简单的 Eclipse 插件来使用 Eclipse GUI 做一些事情,比如在终端中写一些东西或创建一个新的选项选项卡,那么它在底层是如何工作的?我知道有一个共享的 library/jar,但是在后台是否有一个 Java RMI 远程对象?像 OSCi 这样的东西?它是否使用动态 class 加载,如 URLClassLoader?简而言之,它是如何工作的?什么是一种好的、干净的、简单的方法来实现类似的东西?我希望能够实现类似的东西(只是使用更简单的 GUI)。

如果是 Eclipse,则不是 "something like OSGi",而是 OSGi。 Eclipse 只是添加了一些特定的服务和特定于 Eclipse 的概念,例如扩展点。