我正在考虑使用Java创建自己的网站,并试图决定使用什么框架。 但是,快速搜索Java框架可以选择50多个!

我的网站只是为了我自己在开始时构建它的乐趣,但如果它变得流行,那么它具有一定的可扩展性,或者至少能够为此重新设计将是一件好事。

更受欢迎的框架之间的主要区别是什么? 有没有一个显着优于其他人的情况? 例如,高流量企业应用程序与低流量小型应用程序。 我也想知道有些人比其他人更容易学习和使用。

是否有人对这些框架有一些经验并可以提出建议? 绝对数量的选择是否可以作为早期警告,以尽可能避免基于Java的Web开发?

===============>>#1 票数:58 已采纳

我已经相当广泛地使用了Tapestry 3WicketEchoJSF 我真的建议你看看那些,并选择一个对你来说最容易的,并且最接近你喜欢的工作方式。

其中,对我来说最舒适的是Wicket ,因为组件构建的轻量级特性和页面模板的简单性。 如果您使用自己的db代码而不是Hibernate或其他框架(我对Wicket Hibernate或Spring Integration完全不满意),那就更加重要了。

如果你不介意用Java编写所有布局,那么Echo很棒。 我知道现在有所不同,但我仍然认为该产品服务范围相当狭窄。 它们似乎也改变了每个主要版本的开发模型。

Tapestry是一个很棒的产品,但在开发模式方面显然与其他产品有很大不同,因为它主要由一个人带领。 Howard Lewis Ship无疑很聪明,但我对他们决定基本忘记每个版本的向后兼容性感到失望。 但是,根据您的需求,这可能无关紧要,而且我总是发现Tapestry产品令人愉快。

JSF已经出了很多年了,但仍然感觉像是一个Struts人为修复Struts的所有问题而构建的东西。 没有真正理解Struts的所有问题。 它仍然有一种未完成的感觉,虽然该产品显然非常灵活。 我使用它并对它有一些喜爱,对它的未来寄予厚望。 我认为在JEE6中提供的下一个版本(2.0)将真正将它带入自己的版本,使用新的模板语法(类似于Facelets)和简化的组件模型(最终只有1个文件中的自定义组件)。

当然,有一百万个较小的框架和工具可以获得自己的关注( Velocity用于基本需求,原始JSP ,Struts等)。 不过,我通常更喜欢面向组件的框架。

最后,我建议您只看看Tapestry,Wicket和JSF,然后选择最适合您的那个。 您可能会找到一个符合您喜欢的工作方式的工具。

===============>>#2 票数:38

我最喜欢的是Spring Framework。 2.5 Spring Spring MVC是soooo kick ass,带有新注释,约定优于配置功能等。

如果你只是做一些非常简单的事情,你也可以尝试使用常规的Servlet API,而不是打扰框架。

===============>>#3 票数:25

我推荐面向组件的Wicket框架。 它允许您使用普通的旧Java代码编写Web应用程序,您可以使用POJO作为所有组件的模型,而不需要处理大量的XML配置文件。

当我发现Wicket时,我已经成功开发了一个使用Struts的在线银行应用程序,并看到了Web应用程序开发的简单性!

===============>>#4 票数:17

我最近开始使用Stripes Framework 如果您正在寻找一个非常容易使用的基于请求的框架,但是并没有对您正在做的事情施加任何限制,我强烈推荐它。

它类似于struts,但它超越了它。 甚至有一些插件项目可以让你使用很少的配置来使用hibernate或jpa。

虽然我听说wicket也是一个很好的框架,但是有很多很好的框架,但我还没有使用它。

===============>>#5 票数:16

我自己没试过,但我想

http://www.playframework.org/

有很大的潜力......

来自php和经典的asp,它是第一个听起来很有希望的java web框架....

===============>>#6 票数:11

更新:Tapestry 5.2已经淘汰,所以它不会像以前那样被抛弃。 我的经验是Tapestry 4,而不是5,所以你的里程可能会有所不同。 多年来,我对Tapestry的看法发生了变化; 我已修改此帖子以反映它。

我不能像以前那样推荐Tapestry。 Tapestry 5似乎是一项重大改进,但Tapestry的主要问题不在于平台本身; 它背后的人是它。

从历史上看,Tapestry的每个主要版本更新都突破了对极端偏见的向后兼​​容性,远远超出人们的预期。 这似乎是由于采用了需要大量重写的新编码技术或技术。

Howard Lewis Ship(Tapestry的主要作者)当然是一位出色的开发人员,但我不能说我关心他对Tapestry项目的管理。 Tapestry 4发布后几乎立即开始开发Tapestry 5。 据我所知,Ship非常致力于此,将Tapestry 4留在其他贡献者的手中,我认为他们并不像Ship那样有能力。 在从Tapestry 3到Tapestry 4的痛苦转换之后​​,我觉得我几乎立刻就被抛弃了。

当然,随着Tapestry 5的发布,Tapestry 4成为了传统产品。 如果升级路径不再那么残酷我不会有这个问题。 所以现在我们的开发团队处于一个相当不利的位置:我们可以继续使用一个基本上被遗弃的Web平台(Tapestry 4),对Tapestry 5进行令人发指的升级,或完全放弃Tapestry并使用另一个平台重写我们的应用程序。 这些选项都不是很有吸引力。

据说Tapestry 5是为了减少从这一点开始更新破坏的可能性。 一个很好的例子是在页面类中:在以前的版本中,页面类来自Tapestry提供的基类; 此类中不兼容的API更改是导致大量向后兼容性问题的原因。 在Tapestry 5中,页面是POJO,它们在运行时通过注释“魔法Tapestry仙尘”得到增强。 因此,只要保留了注释的合同,对Tapestry的更改不会影响您的页面类。

如果这是正确的,那么使用Tapestry 5编写新的应用程序可能会很好。 但就个人而言,我不想再把手放在燃烧器上了。

===============>>#7 票数:9

免责声明:我在Vaadin(以前的IT工厂)工作

如果你正在做一些RIAish,你可能想看看Vaadin 这是一个面向开源UI的AJAX框架,对我来说很好用(我自己来自PHP背景)。

有一个案例研究比较了Icefaces和Vaadin中相同的应用程序(即两个具有相同功能集的应用程序)。 简而言之,它表明UI开发速度要快得多。

虽然这项研究是在公司的维基上进行的,但我可以保证它是客观,真实和真实的,尽管我不能强迫你相信我。

===============>>#8 票数:7

经过一段时间的测试各种解决方案,对我来说原来是:

  • Spring MVC用于表示和控制器层(虽然没有Spring Webflow,因为我的流程基于ajax)

  • jQuery用于所有客户端的东西

  • Spring安全方面的安全性

  • Hibernate / JPA2

  • 码头为了延续(彗星)

一个月非常陡峭的学习曲线,但现在我很高兴。

我还想提一下,我距离跳过所有Java内容并转而学习Scala / LIFT只是一步之遥。 就我而言,Java中与尖端Web开发相关的一切(彗星,异步通信, 安全性 (是的,即使是Spring Security!))仍然有点像黑客攻击(证据证明我错了,pleeease !)。 对我来说,Scala / LIFT似乎是一个更加开箱即用的一体化解决方案。

我最终决定使用Scala的原因是

  • 作为项目负责人,我必须考虑人力资源,Java开发人员比Scala开发人员更容易找到

  • 对于我团队中的大多数开发人员来说,Scala的功能概念虽然很好,但很难理解

干杯尔

===============>>#9 票数:5

我也听说过Spring Framework的好消息。 但总的来说,我看过的大多数Java Web框架(esp Struts)都让我感到不知所措。

对于一个简单的应用程序,我肯定会考虑使用“原始”servlet和JSP,而不用担心采用框架。 如果servlet编写得很好,那么在应用程序增加复杂性时,如果有必要,将来可以直接移植到框架。

===============>>#10 票数:5

我的选择是Wicket !!

===============>>#11 票数:4

所有这些 - 这就是问题;-)

===============>>#12 票数:3

http://zkoss.org - 好的

===============>>#13 票数:3

对于高流量站点,我使用的框架不管理服务器上的客户端状态 - Wicket,JSF和Tapestry正在管理服务器上的客户端状态。 如果应用程序应该更像桌面应用程序,我只会使用这些框架(Wicket是我最喜欢的)。 但我尝试使用更具伸缩性和简单的REST + AJAX方法。

Spring MVC将是候选者,但是自从Spring MVC 3以来,它有一个奇怪的注释重载编程模型,它没有使用静态类型的好处。 还有其他丑陋的东西,比如方法中的输出参数和通常的返回,所以一种方法有两个输出通道。 Spring MVC也倾向于重新发明轮子,与其他框架相比,你将拥有更多的配置。 我不能真正推荐Spring MVC虽然它有一些不错的想法。

Grails是一种使用Spring MVC和其他已建立的框架(如Hibernate)的便捷方式。 编码很有趣,你很快就会看到结果。

并且不要忘记带有一些小帮手的Servlet API,如FreeMarker,用于模板化非常强大。

===============>>#14 票数:3

我认为,对于您的适度要求,您只需要编写可以从Tomcat服务器提供的servlet或简单的jsp页面。 我认为您不需要任何类型的Web框架(如struts)来处理个人网站数据

===============>>#15 票数:3

我已经评估了很多框架,Vaadin( http://vaadin.com/home )已经渗透到顶部。

你应该至少给它一个简短的评价。

干杯!

===============>>#16 票数:3

说“使用JSF”有点简单。 当您决定使用JSF时,您必须在其上选择一个组件库。 你会使用MyFaces Tomahawk,Trinidad,Tobago( http://myfaces.apache.org/ )吗? 或者也许是ICEfaces( http://www.icefaces.org/ )? 哦,如果你使用ICEfaces,你会使用JSP或Facelets作为你的观点吗?

在我看来,这很难说。 没有人有时间评估所有有前景的替代方案,至少在我工作的项目中,因为它们不足以进行三个月的评估阶段。 但是,您应该环顾一下那些拥有庞大而活跃的社区并且一年内不会消失的人。 JSF已经存在了一段时间,并且由于它被太阳推动,它将会更多。 我不能说它是否是最好的选择,但它会是一个很好的选择。

===============>>#17 票数:2

我的选择是Wicket(适用于大型项目和可预测的用户群),GWT(适用于大多数面向公众的大型项目)或只是服务框架(如Jersey / JAXRS)以及JavaScript工具包(适用于中小型项目) 。

===============>>#18 票数:2

我推荐Seam,特别是如果你需要持久性的话。

===============>>#19 票数:1

查看一些Java应用程序框架的注释(第二段):

http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html

===============>>#20 票数:1

对于快速和精美的 GUI,您可以将JSF与Richfaces库一起使用。 Richfaces UI组件易于使用,并且可以通过演示站点中的代码演示获得方便的参考。 可能稍后当您的站点有更多数据要处理并且必须在数据库中处理大量信息时,您可以使用它插入任何数据库访问框架(ORM)。

===============>>#21 票数:0

试试HybridJava - 比其他任何东西都简单得多。

===============>>#22 票数:0

我会说vaadinwicket

===============>>#23 票数:0

不敢相信没有人提到过GWT

===============>>#24 票数:0

我最喜欢的方法是使用Velosurf( http://velosurf.sourceforge.net )的Apache VelocityTools(VelocityLayoutServlet)。

对于更复杂的应用程序,Spring MVC或Struts 2。

  ask by Aaron translate from so

未解决问题?本站智能推荐:

1回复

与Java集成的富Web应用程序(带有AJAX)框架

有几个问题可以解决这个问题,但是没有一个真正帮助过我。 我有一个使用Spring / Java编写的后端的Web应用程序,当前具有非常Web 1.0的界面,我想使用RIA(富Internet应用程序)框架构建该站点的更丰富的交互式版本。 我热衷于支持布局管理器和UI组件库的RIA框架
4回复

为什么不使用java web start而不是其他RIA框架?

有很多RIA框架出现(flex,extjs,gwt,很少见)。 如果我的服务器是用Java编写的,为什么不使用java web start? 我看到的好处:我用一种易于调试的语言编程(与javascript相比),我可以在服务器和客户端使用相同的代码(验证,模型对象)。 使用SWT
5回复

Java框架为IE8构建Rich Web Apps

我们为具有基本GUI的内部公司用户构建Java Spring MVC Web应用程序。 有一些具有jQuery / Ajax来添加一些GUI丰富性,但是没什么大不了的。 对于新应用程序,业务用户要求一个非常丰富的Web应用程序(例如:拖放功能,诸如Excel中的灵活表格等)。 我们的用户只
3回复

负载较大的公共商业网站的哪个Web层框架?

作为企业体系结构练习的一部分,我需要找到一个基于Java的框架来满足这些约束: 重载(我认为):5000个并发连接 广为人知:不能太过奇特,承包商的价格会太高。 相对容易使用:开发时间必须合理 必须尽可能符合设计人员生成的css / html布局 从营销
3回复

gmail聊天窗口的名称是什么?

我想编写一个类似gmail聊天窗口的窗口,当我单击“最小化”时,它将转到页面的右上角,并且通过滚动不会更改位置。 我在Java中使用wicket框架。 有谁知道这个窗口的名称,以便我可以在Google中搜索? 有人可以帮助我吗?
4回复

为Java RIA客户端应用程序配置线程池的最佳方法

我有一个Java客户端,它通过HTTP访问我们的服务器端,发出几个小请求来加载每个新的数据页。 我们维护一个线程池来处理所有非UI处理,因此所有后台客户端任务以及所有想要与服务器建立连接的任务。 我一直在研究一些性能问题,但不确定我们是否已尽可能完善线程池。 当前,我们使用核心池大小为8的
1回复

在浏览器沙箱外部执行Java Web Start的替代方法有哪些?

我正在寻找一种通过浏览器将胖客户端软件交付给Intranet用户的方法。 理想情况下,用户可以单击页面上的单个按钮,并且计算机本地的内容可以执行该软件(类似于Java Web Start的工作方式。) 有Java的替代品吗? 我真的很喜欢Spoon提供的经验。 我看到了一个名为0
1回复

.NET程序员应该在Java / Flex领域学到什么(相当于ASP.MVC2,MEF,Prism,IoC和DI框架)

我想玩Java / Flx,并以Java为后端,以Flex为前端来构建RIA,如果有必要的话,可以访问一些网站(我现在不知道哪个框架,可能是Spring +一些Jquery) 但是一开始我想知道我应该使用哪些技术。 现在我是ASP.NET(MVC2)+ WPF,是位Silverlight
6回复

将2层Java应用程序迁移到......?

我们目前有一个位于MS SQL Server 2005之上的2层Java Swing应用程序。所有业务逻辑都在数据库中。 客户端很老(而且不是很友好),出于性能和可伸缩性的原因,我们已经开始将一些服务移植到Java中间层。 但是,我们仍有许多短期和长期目标: 为新的前端选择技术堆栈
2回复

如何在Swing应用程序中混合使用Java Swing和JavaFX?

我正在开发一个Java Swing应用程序,但我也希望将JavaFX与Swing一起使用。 是否有任何资源告诉如何做到这一点?