是否可以在 Grails 中使用 Kotlin?

Posted

技术标签:

【中文标题】是否可以在 Grails 中使用 Kotlin?【英文标题】:Is it possible to use Kotlin in Grails? 【发布时间】:2017-12-18 22:41:12 【问题描述】:

导致我提出这个问题的一些基本事实:

Groovy 具有完整的 Java 互操作性 Kotlin 具有完整的 Java 互操作性 Kotlin 也可以编译成 Java

因此可以在 Grails 应用程序中编写 Kotlin 代码吗?

我使用过很多 Grails 2.x,最近在一份新工作中我一直在使用 Kotlin、Spring 和 Struts。我真的喜欢 Kotlin 的 null 安全性和类型推断功能,而且 Kotlin 的函数式编程功能感觉比 Groovy 更自然且易于使用(最后一部分是纯粹的意见)。

是否可以使用 Grails 来处理以下事情:

ORM 将请求映射到控制器/操作 JSP/GSP 视图解析/渲染

但使用 Kotlin 编写域类、控制器操作、服务、对象工厂等的实际逻辑。

可能不太可能,因为我猜测 Grails 的一些核心功能是通过动态类型实现的,但也许可以通过 Gradle 插件或直接 Grails 插件实现。

我喜欢 Grails 的约定优于配置范式提供的极端简单性,但我更喜欢 Kotlin 的静态类型和类型推断。

如果我可以在 Grails 环境中使用 Kotlin 编写业务逻辑,那对我来说将是最终的 Web 应用程序框架!

【问题讨论】:

我非常喜欢 Kotlin 的空值安全性和类型推断功能。具有讽刺意味的是these features 是directly taken from Groovy。那些提到 Kotlin 的“酷特性”从一开始就是 Groovy 的显着特性。如果您可以分享一些示例,我希望看到更多Kotlin 的函数式编程特性感觉比在 Groovy 中更自然和易于使用的示例 我的意思是我更喜欢 Kotlin 的静态类型特性,特别是像内置的 data classvarvalfun 和可空的 vs . 不可为空的类型。 @AbhijitSarkar 我在工作中使用 Kotlin 和 Spring,我们的整个 Web 应用程序都是用一些 Java 构建的,主要是 Kotlin。附言我有一段时间喜欢 clojure,哈哈 Spring 对 Kotlin 提供了一流的支持。 Grails 不会——你是在试图硬塞它以使其屈服。 【参考方案1】:

因此可以在 Grails 应用程序中编写 Kotlin 代码吗?

当然。您可以使用 Grails 应用程序中的任何 JVM 语言。我在 Grails 中使用 Kotlin 构建了一个概念验证,并且一切正常:https://github.com/jeffbrown/langdemo

【讨论】:

我可以获得概念验证项目的链接吗? 如果您能提供一些示例/教程/建议的阅读材料,我会将其标记为正确答案 github.com/jeffbrown/langdemo 的项目演示了将一个用 Kotlin 编写的 Spring bean 注入到 Groovy 控制器中,该 bean 实现了 Java 接口。他们一起玩得很好。见github.com/jeffbrown/langdemo/blob/master/grails-app/…、github.com/jeffbrown/langdemo/blob/master/src/main/kotlin/…、github.com/jeffbrown/langdemo/blob/master/src/main/java/demo/…。 “如果您可以提供一些示例/教程/建议的阅读材料,我会将其标记为正确答案” - 如果您将答案标记为正确或不是。我正在解决这个问题:“因此可以在 Grails 应用程序中编写 Kotlin 代码吗?”。它是。我希望这会有所帮助。 这是一个 Grails 3.x 示例,是否也可以在 Grails 2.5 中使用?

以上是关于是否可以在 Grails 中使用 Kotlin?的主要内容,如果未能解决你的问题,请参考以下文章

Grails GSP <g:set> 标签设置为整数?

在 Grails 中,如何在 g:select 中捕获多个选定项目?

在 grails 服务中使用 g.render

如何在 Grails 的控制器之外使用 g.message? [复制]

是否可以在 Grails 之外使用 Grails 验证?如何?

Grails:如何使 g:textfield 自动完成?