Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 克鲁德:去Roo还是不去Roo?_Java_Seam_Crud_Spring Roo - Fatal编程技术网

Java 克鲁德:去Roo还是不去Roo?

Java 克鲁德:去Roo还是不去Roo?,java,seam,crud,spring-roo,Java,Seam,Crud,Spring Roo,我一直在为CRUD应用程序使用Groovy on Rails。我正在启动一个新项目,不再允许我们使用Grails(我们有一个允许使用JAR和Grails的列表) 不存在) 我正在考虑使用SpringRoo或JBossSeam。他们如何比较?他们的主要优势和劣势是什么?请注意,Spring Roo和JBoss Seam没有直接的可比性,因为JBoss Seam本身并没有提供问题中提到的CRUD应用程序生成。但是JBossSeam附带了SeamGen工具,它提供了此功能。因此,最好将JBossSea

我一直在为CRUD应用程序使用Groovy on Rails。我正在启动一个新项目,不再允许我们使用Grails(我们有一个允许使用JAR和Grails的列表) 不存在)

我正在考虑使用SpringRoo或JBossSeam。他们如何比较?他们的主要优势和劣势是什么?

请注意,Spring Roo和JBoss Seam没有直接的可比性,因为JBoss Seam本身并没有提供问题中提到的CRUD应用程序生成。但是JBossSeam附带了SeamGen工具,它提供了此功能。因此,最好将JBossSeam与Spring框架相比较,并将SeamGen工具与SpringRoo相比较。我知道这也不是一个完整的比较,但我想这超出了这个主题。需要说明的是,在下面的回答中,当我提到JBoss Seam时,我实际上是指JBoss Seam与Seam gen工具的结合

SpringRoo和JBossSeam(使用SeamGen)都使CRUD应用程序的创建变得非常容易,就像其他Java全堆栈/脚手架解决方案一样,如和。如果你比较这两个(Spring ROO和JBoss Seam与Seam gen)在基于现有数据库或通过添加实体和定义字段和关系的基础上启动和运行一个新的基本CRUD应用程序的速度,我想没有太大的区别。根据我的经验,您可以在SpringRoo中运行得更快(稍微快一点),但使用这两种方法,您可以在不到一个小时(如果是现有数据库)或不到(半天)的时间(如果您必须手动添加所有实体和关系)内启动应用程序

在继续之前,读者应该注意到,整个比较是基于我对这两种解决方案的拙劣经验,因此是基于SpringRoo版本1.1.0和JBossSeam1.2和2.x。读者还应注意,目前已经有一个优秀的Seam 3版本(实际上是带有Seam模块插件的CDI(Weld))基于Java EE 6规范,但是这个新版本的JBoss Seam不再有Seam gen应用程序,因此还没有创建一个完整的CRUD应用程序的功能,只需要几个命令,如Spring Roo和JBoss Seam 2.x及更低版本。目前有来自JBoss的人正在研究类似的东西,名为,看起来很有希望,但到今天为止,还没有任何实际的版本,因此我想还不是一个选择

Spring ROO和JBoss Seam(使用Seam gen)都创建了一个不错的基本CRUD应用程序,尽管Spring ROO生成的应用程序的默认UI设计在我看来要好一点,但由于您可能希望对其进行重新设计,这两种应用程序都不值得争论。所创建的Web应用程序在提供的功能上也略有不同,但就基本CRUD功能而言,与认证和国际化等其他基本特征一样,它们是相互一致的。 我认为,主要的区别以及决定使用哪种方法的原因不在于生成基本CRUD应用程序所需的时间,也不在于搭建的基本CRUD应用程序,而在于更重要的事情,如架构/设计决策、使用、支持、文档、灵活性、可维护性,扩展点等。就我而言,Spring Roo和JBoss Seam都是web应用程序的最佳选择(事实上,我的团队已经用这两种工具创建了生产应用程序),但在做出决定之前,您必须考虑这些重要的差异,并决定什么最适合您。当然,最好的决定方法是对这两种选择都进行概念验证,但如果您没有时间和/或资源,我可以(从我的头脑中)想到这两种方法之间的区别,这可能有助于您做出任何决定:

  • SpringRoo中使用的底层构建系统是Maven,JBossSeam使用Ant。据我所知,Seam也可以与maven一起使用,但Seam gen默认使用ApacheAnt。注意JBossForge(SeamGen的替代品,实际上更像SpringRoo)使用的是Maven
  • SpringRoo基于Spring框架,而JBossSeam基于整个JavaEE5堆栈(Seam3将使用JavaEE6堆栈)。请注意,JBoss Seam和Seam gen工具在默认情况下将使用EJB3.0,但这是可选的,您还可以选择使用JBoss Seam和Seam gen工具的非EJB解决方案
  • JBoss Seam(使用Seam gen)通过扩展JBoss Seam特定的类,使用基本OO继承向生成的类添加基本功能。这确实为JBoss Seam(和Seam gen)特定的类添加了运行时依赖项。SpringRoo选择了一种完全不同的方法,即生成普通Java源文件(不扩展与Spring相关的类)并注释这些类。除了生成的Java源文件之外,SpringRoo还生成一到几个所谓的类型间声明(inter-type declaration,ITD)文件,这些文件是特定于AspectJ的文件,包含生成的源代码和注释。在编译时,这些ITD文件将完全透明地编织到生成的类文件中,因此不会强加运行时依赖性
  • Seam生成的文件可以(也将)由您更新,但如果您需要使用Seam gen重新生成文件,它将覆盖您的手动更改,因为您将在由Seam gen生成的文件中进行更改。由于SpringRoo使用ITD的方法,您可以在Java源文件中进行更改,以覆盖ITD文件中生成的源代码。这使得SpringRoo可以重新生成ITD,因为它保留了Java源文件中的手动更改,然后保持不变
  • seam gen的用途更广泛