创建基于模块/包的项目?

时间:2014-01-06 09:54:22

标签: java architecture

我想在Java中创建一个项目,作为自身其他部分的shell或框或控制器(可能有足够的命名)。我希望可以在安装程序后加载其他程序部分,比如插件或插件,或者如何调用它们。

作为一个例子,人们可以想到一个名为Calculator的程序,其顶部有一个MenuBar,可以加载几个提供不同计算方式的JFrame(或JInternalFrame),例如ListSums,InvoiceSums,BreakEvenCalculator,......(等等)上)。

现在我想要创建的是一种掩码,让我可以导入例如带有天气计算的新JInternalFrame。直接添加几个菜单条目和一组新面具。好吧,这种插件或插件应该从我提供的链接下载。

我已经尝试使用谷歌搜索某些方法来做到这一点,但我不太确定要搜索什么。

是否有任何网站提供有关如何创建此类插件或插件的信息?

为每一个乐于助人的灵魂提前干杯!

1 个答案:

答案 0 :(得分:2)

由于你的问题不是很具体,我不确定我是否理解正确,但我会尽力回答。

我猜,你想在运行时动态加载java代码(不重启/重新编译你的程序)。

因此,有一些不同的方法可以实现这一目标:

<强> 1。拥有&#34;框架&#34;

您可以创建一个通用GUI,它可以动态生成GUI元素。然后通过自己的DSL或XML模块在模块中定义。然后根据您可以动态加载的定义生成GUI。我曾经使用过一次自动生成的GUI,用户可以自己生成动态报告,一次是通用的安装工具,它可以创建一个新的工作区,在一个案例中检查项目并构建&amp;部署和在tomcat中运行webapp。

<强>优点:

  • 易于入手
  • 你知道代码(因为你已经写好了)

<强>缺点:

  • 非常具体
  • 耗时,因为它只支持你编入框架的东西
  • 如果你不知道你做了什么/要求改变了什么,那么你可以轻易地开发出错误的代码......

<强> 2。使用一些执行引擎(例如RhinoNashorn (Java 8)

您可以在JS中开发模块,并从某些模块生成GUI(如1.中所述) - 在Swing GUI的情况下我会这样做,甚至可以从JS创建输出(我会这样做)一个WebApp,因为它只是打印html)

<强>优点:

  • 您可以执行引擎/模块语言支持的所有内容
  • 你比1更灵活。
  • 需要的时间少得多

<强>缺点:

  • 需要了解引擎的工作原理
  • 启动并不像1.因为你有更多的外部依赖
  • 你受限于引擎的限制(如果是js,例如沙盒就像没有写入文件,默认情况下没有摆动整合/交互,......)

第3。 OSGi / Spring dm服务器

您也可以使用自己的包装在java中创建模块,并使用OSGi即时部署到您的应用程序中。

如果您希望将其用于WebApplication,我会查看Spring dm Server:http://static.springsource.com/projects/dm-server/1.0.x/programmer-guide/html/ch03s02.html

否则,OSGi应该更合适。

由于关于这两个主题的文档很多,我不会深入到这里。

<强>优点:

  • 你可以做任何事情因为你的模块只是java
  • 您使用java完善的标准机制

<强>缺点:

  • 需要了解框架的工作原理
  • 开始并不像1.或2.那么简单,因为您必须了解所使用的技术
  • 更多外部依赖

如果我的回答对您有所帮助,如果您接受,我会很高兴,如果没有,请提供更多详细信息,说明您想要达到的目标以及您的要求。

问候,曼努埃尔