- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。
9年前关闭。
过去几个月我一直在使用 Grails,我真的很喜欢它,特别是 GORM。但是,我对 Scala 的 Lift 很感兴趣。因此,我想知道您对哪种 Web 应用程序更适合这两个框架中的哪一个的看法,或者只是品味问题,使用哪个框架?
最后,您认为将来会更多地使用哪些框架?
我有一种感觉,Grails 远未达到临界质量,它仍然非常模糊(在过去的几个月里,我有机会与中型公司和 IT 初创公司合作,主要使用 JVM 堆栈,但只有一个人知道和使用 Grails),我什至不确定它是否可以成为 Java 世界的“RoR”(确实报告说,即使其他框架的增长率为正,但过去几个月的增长率有所下降)。而且我喜欢 Groovy,它真的很容易学习,但我注意到它对于某些任务可能很慢。
另一方面,Scala 似乎更受欢迎(Tiobe Index),而且 Twitter 现在正在使用它的事实使它在博客圈中的地位更高,许多爱好者和仇恨者都在议论纷纷。它以快速和可扩展而闻名。然而,对于许多开发人员来说,该语言似乎有点难以理解和学习(因此它可能永远不会获得主流地位)。 Lift 鲜为人知,我读过一些报告说它更适合小型应用程序(少于 20 个域类)。
从目前出版的书籍数量来看,Groovy-Grails 占主导地位,但许多出版商都有 Scala 的作品书籍,所以我认为这种优势不会持续太久。
最后,我们面临的问题是语言和框架的 IDE 支持仍然很差(它一天比一天好,但与 Java 商店期望的生产力相去甚远)。
我不想开始一场激烈的 war ,但我很想听听其他用户的意见。
最佳答案
这里接受的答案对 Groovy 采取了非常无知的观点 - 它是一种现代的动态语言(动态与静态本身就是一场巨大的辩论,在这里并不是特别相关)。这是设计使然,因此不是缺点,只是区别。它具有许多 Java 没有的现代语言特性,例如闭包、原生正则表达式、多态迭代、一些可选的静态类型(有争议的问题,但也可以看看 groovy++)、列表和映射的原生语法等-你可以在这里看到比较http://groovy.codehaus.org/Differences+from+Java
为了解决 Grails 与 Lift 的实际问题,我会直接说 Grails。它背后有 SpringSource,只需查看插件页面 http://www.grails.org/plugin/category/all - 我什至找不到可用于 Lift 的插件或等效插件。 Grails 还处于最新的云友好技术之上,具有原生 RabbitMQ 消息支持以及对 MongoDB 和 Redis 的统包 GORM 支持等功能。
关于Grails - 提升 : Which framework is better suited for which kind of applications?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1097252/
我正在用KIND测试K8。。我创建了集群:。现在我想用sudo Kind删除集群来删除这个集群,但得到的是:。但是当我转到路径时,我看不到文件:。配置文件:。另外,当调用命令sudo种类删除集群--名
我在用kind测试k8。我创建了集群:。现在我想用sudo Kind删除集群来删除这个集群,但得到的是:。但当转到路径时,我没有看到文件:。配置文件:。另外,当调用命令sudo种类删除集群--名称节点
我在 Haskell 中为日期结构派生 Typeable1 实例时遇到问题。 这是我的代码: {-# LANGUAGE StandaloneDeriving #-} {-# LANGU
我最近从Kubernetes 1.2.0升级到Kubernetes 1.3.0,现在当我尝试开始工作时遇到以下错误: $ kubectl create -f pijob.yaml unable to
当我创建这样的子图时: import pandas as pd import numpy as np import matplotlib.pyplot as plt import itertools
我有一个名为 firstperiod 的 pandas 数据框和一个名为 megaball 的列。 megaball 的取值范围是 1 到 25,这行代码: print firstperiod.meg
我有一个数据库列:。如何使其仅允许Kind。未指定?。当我插入以下内容时,出现以下错误:。我见过的每个解决方案都是使用Npgsql.EnableLegacyTimestampBehavior。但是,这
我有一个数据库列:。如何使其仅允许Kind。未指定?。当我插入以下内容时,出现以下错误:。我见过的每个解决方案都是使用Npgsql.EnableLegacyTimestampBehavior。但是,这
两个reflect.Type接口(interface)和reflect.Value type 实现相同的 Kind() 方法签名,假设我们有一些值对象 v := reflect.ValueOf(x)
到目前为止,我已经尝试了以下代码: # Import to handle plotting import seaborn as sns # Import pyplot, figures inline,
我正在尝试为我的 kubernetes 集群设置一个 kind 集群。不幸的是,它在编写节点时准备好节点后失败了。我将附上输出和一些信息。提前感谢您的帮助! 干杯 错误 $ kind create c
当我尝试 Haskell 类型并尝试获得 -> 类型时,结果出现了: $ ghci ... Prelude> :k (->) (->) :: ?? -> ? -> * Prelude> 而不是预期的*
我想将reflect.Kind作为实现接口(interface)的类型的reflect.Interface,但其实现基于原始类型:type id string 对此问题的另一种答案可能是如何在调用 K
运行我的项目 ng build --prod --base-href="./" 得到下面的错误信息 ERROR in ./node_modules/ng-multiselect-dropdown/fe
我已经阅读了Wikipedia文章,并搜索了明显的地方,但是我陷入了困境。有人可以简单地告诉我什么是实物吗?它是干什么用的 ? 斯卡拉的例子最受赞赏 最佳答案 简而言之:一种类型就是类型,值就是类型。
我一直在思考我正在处理的库中的一个设计问题,我意识到使用存在类型可能允许我以一种简化库的许多部分的方式更改我的设计。但是,我似乎无法让它正常工作。 在我看来,myBuilder 符合 MultiSig
我有这些类型: SomeTypeClass 具有一个类型参数 kind * => * => * 的更高类型 trait SomeTypeClass[P[_, _]] { def test[F[
我想要获取文件的“Kind”查找器。例如,对于文件“foo.css”,我想要字符串“CSS样式表”。 到目前为止,我正在做这样的事情: NSURL *fileURL = [[NSURL alloc]
我遇到了这样一种情况,我的代码可以从使用 Functor 中受益。和 Applicative - 类似抽象,但用于类型 (* -> *) -> * .可以使用 RankNTypes 定义更高种类的仿函
我读过很多关于类型种类、更高种类的类型等等的有趣的东西。默认情况下,Haskell 支持两种类型: 简单类型:* 类型构造函数:* → * 最新 GHC 语言扩展 ConstraintKinds添加了
我是一名优秀的程序员,十分优秀!