ope*_*sas 63 java frameworks playframework
我刚刚偶然发现了以下新的java web框架:Play
http://www.playframework.org/documentation/1.0/home
有这么惊人的功能列表,我很惊讶我以前没有听说过它...
听起来像java web开发承诺的土地......
有人试过吗?有任何实际经验吗?你觉得值得研究吗?
Cra*_*nes 71
我同意Jason的观点,认为Play可能比Grails更好.我有四个Grails项目(之前有两个Tapestry项目和一个Wicket项目),我很认真地看着Play.
我认为Grails的一个很酷的事情是"一切都是Groovy".也就是说,您使用Groovy编写所有内容(HTML和CSS除外) - 域,控制器,服务,页面模板(GSP),标记库,Hibernate API(GORM),单元测试(GUnit)和构建脚本( GANT).您甚至可以在Groovy中编写shell脚本.因此,能够再次使用单一语言对应用程序的所有方面进行编码似乎是一个早就应该进行的简化 - 回到用C++或Delphi这样的单一语言编写桌面应用程序的日子.但是,我已经了解到一种尺寸并不适合这里.
首先,IDE对Groovy的支持并不是很好.IntelliJ做得最好,但是Groovy是动态的,它只能走得那么远.重构工具不会(不能)捕获所有内容,因此您无法100%信任它们.这意味着您必须特别警惕单元测试.在这里,由于Grails非常依赖于在运行时发生的动态"魔法",Grails中的单元测试必须依赖于广泛的模拟层来模拟它,并且该模拟层很古怪.第三个问题是,您所编写的大部分所谓的Groovy代码实际上是特定于域的语言(DSL)代码.(长话短说,DSL是简洁的Groovy,利用Groovy中的许多语法可选的事实.)Grails使用不同的DSL进行各种配置,URL映射等,并且它是不一致的.例如,如何指定log4j设置,看起来与指定数据源的方式完全不同,并且看起来都不像Groovy所基于的纯Java.所以,"一切都是Groovy"的承诺无论如何都会崩溃.
既然如此,我看到了Play团队的来源.
回到常规Java的域,控制器,服务和JUnit是有道理的.强类型意味着IDE可以可靠地帮助进行内部感知,代码导航,重构等.(因此,如果您对Eclipse感到满意,则无需为IntelliJ付费.)必须编写更详细的代码才能获得强大的工具支持对我来说似乎是一个很好的交易.走着瞧.
我喜欢我仍然可以在页面模板中使用Groovy.我担心我最终可能会在模板中放入比我应该更多的代码.
我没有使用JPA的经验,但看起来它非常接近GORM为我做的事情,所以这很酷.
Grails的Spring IOC支持是完全透明的,而Play的支持似乎很小; 但是,我认为IOC过度使用了,我非常愿意在极少数情况下手动编写Spring XML映射代码.(我的一个开放性问题是,我假设JPA有交易支持,这就是为什么Play不需要Spring,就像Grails那样,不是吗?)
我从来都不是Python的粉丝,所以当我读到Play使用Python作为构建脚本时,我感到很沮丧.但我同意Grails的GANT脚本运行得很慢.另外我发现虽然GANT是对XML ANT的巨大改进,但仍然很难围绕ANT概念.Grails GANT脚本非常令人费解.所以,我会以开放的心态进入它.
Play"应用程序模块"模型听起来就像Grails的"插件"模型,所以很酷.
到目前为止我读过的Play文档给我留下了深刻的印象.我有很多问题要进去,但其中有一半是立即回答的.
随着我深入研究,我稍后会再次报告.
Pet*_*ton 28
我试过Play并且给我留下了深刻的印象:它提供了一个比大多数框架简单得多的有用开发模型.最重要的是,运行时在"开发模式"中直接解析.java文件的能力非常值得:只需在浏览器中重新加载网页而不运行构建脚本或等待重新部署,就值得花费大量的开发速度.浏览器中显示的错误消息也非常好.
令我印象深刻的另一件事是整体审美:教程应用程序实际上看起来很好(包括代码和网页设计)可能是一件小事,但这扩展到整个框架,API以及文档.
在一位同事的催促下,我看着它,按照教程,迷上了.立即在浏览器中获得反馈意味着您不必使用IDE.我喜欢Eclipse,但让我们面对它:在你添加了一些额外内容后,它不如简单的文本编辑器稳定.在使用TextMate的Mac上,您甚至可以在浏览器中单击错误消息,并在该行上弹出TextMate.
Play中的测试也很顺利,只需按一下按钮即可运行单元测试,功能测试和基于Selenium的测试.
玩是令人兴奋的,因为它仍然很小而且不复杂.它只使用ant构建,并在25秒内完成.贡献美丽的文档是一个编辑.textile文件和重新加载任何播放应用程序中的文档的问题.
这就是我在寻求翻译教程以使用Scala的过程中,在需要的地方添加了Scala支持以尽可能地提高它.
小智 6
我使用过Grails,Tapestry 4/5和直接Java/JSP/Spring/Hibernate.
我认为这是长期以来第一次朝着正确的方向发展.Grails是一个非常好的第一步,但玩!看起来像是真的有腿的东西.Scala支持即将发布1.1.如果有可能我可以在Clojure中编写我的控制器/域名,我就卖掉了;)