有用 Groovy 做业务开发的吗

2018-09-27 09:36:06 +08:00
 fuye

尝试了几个业务开发,真的是很快,语法糖也封装的很简洁。

如 集合类 def list =[{a:1,b:2},{a:2,b:1}]

list.sort{[it.a,it.b]} //按 a,b 排序

list.collectEntries{[it.a,it.b]} //a 的 value 作为 key,b 的 value 作为 value

list.groupBy{it.a} //a 分组

。。。还有其他如 map、filter、find、any、every 等函数简直不要太舒服

IO 类处理起来也特别简单; Sql 也很强大; 反射也很好用; 单元测试就不用说了; 也能轻松的扩展一个类的方法; 文档也很清晰;

整个开发下来,加班没有了,bug 也少了,不知道为嘛,感觉用 groovy 来开发业务的好像不多?是不是只用来写单元测试或动态规则配置啥的。

6962 次点击
所在节点    Java
30 条回复
tinybaby365
2018-09-27 09:57:56 +08:00
相似地位的 Scala 没有侵蚀 Java 的存在,却在 Spark 里面有一席之地,kafka 也是用 Scala 写的。Groovy 已经经由 gradle 体现了价值。Groovy 其他发扬光大的地方,因为工作领域的原因真没发现。

JVM 系非 Java 的招人难度大,这是和 Java 比最大的劣势。你说你开发效率高,执行效率和 Java 一样,但招不到开发,白说。
jiafaner
2018-09-27 10:01:15 +08:00
能行的

我们给客户做的一个数据管理系统是用 Java 写的,然后用 groovy 提供了一个用户接口,用户能够用 groovy 写一点小东西直接嵌入

用户都说我们做得好,不过老板对用户吹的是我们自己写的 DSL,嘿嘿嘿
ghos
2018-09-27 10:55:12 +08:00
@jiafaner java 怎么和 groovy 组合一起用啊 求教
PythonAnswer
2018-09-27 11:03:15 +08:00
2 楼老板人才
fuye
2018-09-27 11:12:16 +08:00
@tinybaby365 如果是从团队的角度来看,选一门招人不方便的语言的确不太合适,用 JAVA 招人方便
CFO
2018-09-27 11:14:05 +08:00
在用 不过用的简单 只是用来算公式
Resource
2018-09-27 11:14:08 +08:00
纯 groovy 没有,某些场景当脚本用
Resource
2018-09-27 11:15:12 +08:00
只能说动态一时爽,
fuye
2018-09-27 11:15:38 +08:00
@ghos 目前了解的有两种做法,一种就是通过 maven 的 groovy-compile 插件直接编译成字节码,另一种就是动态解析执行 groovy 脚本,可以传入当前程序的上下文进行 binding,网上教程很多的
zhuangzhuang1988
2018-09-27 11:19:33 +08:00
用动态语言等死吧.
Resource
2018-09-27 11:19:58 +08:00
另外,groovy 的性能比较低,很多地方并不适用
jiafaner
2018-09-27 11:20:20 +08:00
@ghos 就是动态执行 groovy 脚本的,很多教程的
leconio
2018-09-27 11:30:38 +08:00
kotlin 瑟瑟发抖
fuye
2018-09-27 11:31:11 +08:00
@Resource 性能的确会有些影响,但是日常的 CURD 业务性能瓶颈主要是在网络、DB 这块,所以整体性能也不会差太多
Resource
2018-09-27 11:34:10 +08:00
@fuye 所以说做些业务简单的还行,大型的复杂系统还是上不了台面
fuye
2018-09-27 11:46:52 +08:00
用简单 ab 测试的结果来看的话,我写的大部分普通 groovy 接口(包含<5 个 rest 调用+<5 个 DB 调用+<5 个 redis 调用) 比纯 java 写的慢了 <5ms,主要耗时的都在外部调用上。但是如果是计算型的接口,有的能慢<100ms.不过整体上这点损耗都是可以接受的
fuye
2018-09-27 11:48:09 +08:00
我这个都是静态编译的,如果是动态解析执行就会慢的比较多
xcstream
2018-09-27 12:11:18 +08:00
node 用的人更多。
Dainslef
2018-09-27 12:56:01 +08:00
Groovy 是动态语言,写写小脚本尚可,在 JVM 系的主战场后端服务这块其实并没有多大优势,在后端服务这块静态类型语言是工程上的首选。
而且 JVM 上好语言太多啦,Scala 有强大的类型系统和高阶 FP 特性,Kotlin 有各类精心设计的语法糖和强类型 DSL,哪个不比 Groovy 设计的更优秀。
而且 Groovy 的尴尬在于没有真正的 Killer 级别应用,Scala 有 Spark/Akka,Kotlin 更专注 Android 平台,在各自的细分领域都有巨大的优势,Groovy 真正广泛应用的只有 Gradle,但这货也不是框架 /库;至于 Grails 什么的也是小众框架,不成气候。
axb
2018-09-27 13:28:15 +08:00
我们有一个系统用了纯 groovy 写,后来发现动态语言开发一时爽……
现在是 java+groovy 混合编程了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/493010

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX