当前位置: 首页 > 面试题库 >

有“玩” java Web开发框架的经验吗?

景麒
2023-03-14
问题内容

我偶然发现了以下新的Java Web框架:播放

http://www.playframework.org/

http://www.playframework.org/documentation/1.0/home

如此惊人的功能列表,令我惊讶的是,我之前从未听说过它。

听起来像Java Web开发的承诺之地…

有人尝试过吗?有任何实际经验吗?您认为值得研究吗?


问题答案:

我同意杰森的观点,认为Play可能会比Grails更好。我有四个Grails项目(之前有两个Tapestry项目和一个Wicket项目),接下来我将认真研究Play。

我认为Grails很棒的一件事就是“一切都是Groovy”。也就是说,您可以使用Groovy编写所有内容(HTML和CSS除外)-域,控制器,服务,页面模板(GSP),标签库,HibernateAPI(GORM),单元测试(GUnit)和构建脚本
GANT)。您甚至可以在Groovy中编写Shell脚本。因此,能够再次使用一种语言对应用程序的各个方面进行编码似乎是一种早就应该进行的简化-可以回想起用C++或Delphi等单一语言编写桌面应用程序的时代。但是,我了解到一种尺寸并不适合所有尺寸。

一方面,IDE对Groovy的支持不是很好。IntelliJ做得最好,但是随着Groovy是动态的,它只能走得那么远。重构工具不能(无法)捕获所有内容,因此您不能100%相信它们。这意味着您必须特别警惕单元测试。再一次,由于Grails非常依赖于运行时发生的动态“魔术”,因此Grails中的单元测试必须依靠广泛的模拟层来进行模拟,而该模拟层是古怪的。第三个问题是,您正在编写的许多所谓的Groovy代码实际上是特定于域的语言(DSL)代码。(总而言之,DSL是Groovy的简称,它利用了Groovy的事实,并且许多语法是可选的。)Grails对不同的配置,URL映射等使用不同的DSL。这是不一致的。例如,如何指定log4j设置看起来与指定数据源的方式完全不同,也没有看上去像Groovy所基于的纯Java。因此,“一切皆有可能”的诺言反而破裂了。

既然如此,我就会知道Play团队的来历。

  1. 对于域,控制器,服务和JUnits,回到常规Java是有意义的。强大的类型化意味着IDE可以可靠地帮助您进行智能感知,代码导航,重构等。(因此,如果您对Eclipse感到满意,则无需为IntelliJ付费。)必须编写更多详细的代码才能现在,获得强大的工具支持对我来说似乎是一笔好买卖。我们拭目以待。

  2. 我喜欢我仍然可以在页面模板中使用Groovy。恐怕我最终可能会在模板中放入比我更多的代码。

  3. 我没有使用JPA的经验,但似乎与GORM为我所做的非常接近,这很酷。

  4. Grails中的Spring IOC支持是完全透明的,而Play的支持似乎很少。但是,我认为IOC被过度使用了,我非常愿意在我真正需要的罕见情况下手动编写SpringXML映射代码。(我的一个公开问题是,我假设JPA具有事务支持,这就是为什么Play不需要像Grails那样需要Spring,是吗?)

  5. 我从来都不是Python的粉丝,因此当我得知Play使用Python作为其构建脚本时,我感到非常害怕。但是我同意Grails的GANT脚本运行非常慢。另外,我发现,尽管GANT是XML ANT的巨大改进,但仍然很难将您的头围住ANT概念。Grails GANT脚本非常复杂。因此,我将以开放的心态进行研究。

  6. Play的“应用程序模块”模型听起来就像Grails的“插件”模型一样,这很酷。

  7. 到目前为止,我对Play文档印象深刻。我遇到了很多问题,但其中一半很快得到了回答。

我会在深入时再报告。



 类似资料:
  • 我有一个类,它扩展了 创建表主题的第一条记录可以,但无法创建另一条记录: [PersistenceException:执行DML bindLog时出错[]错误[ERROR:重复的键值违反了唯一约束“pk\U主题”\n详细信息:键(id)=(1)已存在。]] 例外情况当然发生在这一行: 这很奇怪,因为: 它以前工作没有问题 我应该怎么做才能解决这个问题? 类(当然不是全部,只是相关的):

  • 从戏剧!框架文档: Play2.0中没有内置的JPA实现;您可以选择任何可用的实现。例如,要使用Hibernate,只需将依赖项添加到项目中: 我的选择是什么而不是冬眠? 你认为什么最适合留言板网站? 我知道Hibernate有一点开销,对吗?

  • 用户验证(User Authentification)复合的使用Play框架的数个功能,包括前面已经了解的表单和数据库,以及这篇文章里要提到的加密和会话。根据应用或站点的复杂程度,用户验证也可以随之变化。这里将介绍用户验证的一个基本实现方式。 加密 为了信息安全,用户密码需要加密,而不是保存为明文。Bcrypt算法可以对明文密码进行哈希(Hash)转换。我保存在数据库中的密码,是经过转换后的文本。

  • 在不讨论原因的情况下,假设有人想要一个老式的Play Framework web服务,并且不想使用依赖注入,也不想依赖Google的Guice。在玩法2.8.x中还可能吗? 有没有一个简单的方法可以让你不去这里就呆在老学校里? 我承认,但不完全理解https://www.playframework.com/documentation/2.4.x/migration24。我认为我的问题与2.7中删除

  • "One does not live by bread alone,but by every word that comes from the mouth of God" --(MATTHEW4:4) python开发框架 不管是python,还是php,亦或别的做web项目的语言,乃至于做其它非web项目的开发,一般都要用到一个称之为什么什么框架的东西。 框架的基本概念 开发这对框架的认识,由于

  • 本文向大家介绍JavaWeb开发之Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架,包括了JavaWeb开发之Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架的使用技巧和注意事项,需要的朋友参考一下 简单介绍一下,本框架的基本功能点