尝试了几个业务开发,真的是很快,语法糖也封装的很简洁。
如 集合类 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 等函数简直不要太舒服
p>IO 类处理起来也特别简单; Sql 也很强大; 反射也很好用; 单元测试就不用说了; 也能轻松的扩展一个类的方法; 文档也很清晰;整个开发下来,加班没有了,bug 也少了,不知道为嘛,感觉用 groovy 来开发业务的好像不多?是不是只用来写单元测试或动态规则配置啥的。
![]() | 1 tinybaby365 2018-09-27 09:57:56 +08:00 相似地位的 Scala 没有侵蚀 Java 的存在,却在 Spark 里面有一席之地,kafka 也是用 Scala 写的。Groovy 已经经由 gradle 体现了价值。Groovy 其他发扬光大的地方,因为工作领域的原因真没发现。 JVM 系非 Java 的招人难度大,这是和 Java 比最大的劣势。你说你开发效率高,执行效率和 Java 一样,但招不到开发,白说。 |
![]() | 2 jiafaner 2018-09-27 10:01:15 +08:00 ![]() 能行的 我们给客户做的一个数据管理系统是用 Java 写的,然后用 groovy 提供了一个用户接口,用户能够用 groovy 写一点小东西直接嵌入 用户都说我们做得好,不过老板对用户吹的是我们自己写的 DSL,嘿嘿嘿 |
4 PythonAnswer 2018-09-27 11:03:15 +08:00 via iPhone 2 楼老板人才 |
5 fuye OP @tinybaby365 如果是从团队的角度来看,选一门招人不方便的语言的确不太合适,用 JAVA 招人方便 |
6 CFO 2018-09-27 11:14:05 +08:00 via Android 在用 不过用的简单 只是用来算公式 |
![]() | 7 Resource 2018-09-27 11:14:08 +08:00 纯 groovy 没有,某些场景当脚本用 |
![]() | 8 Resource 2018-09-27 11:15:12 +08:00 只能说动态一时爽, |
9 fuye OP @ghos 目前了解的有两种做法,一种就是通过 maven 的 groovy-compile 插件直接编译成字节码,另一种就是动态解析执行 groovy 脚本,可以传入当前程序的上下文进行 binding,网上教程很多的 |
![]() | 10 zhuangzhuang1988 2018-09-27 11:19:33 +08:00 用动态语言等死吧. |
![]() | 11 Resource 2018-09-27 11:19:58 +08:00 另外,groovy 的性能比较低,很多地方并不适用 |
![]() | 13 leconio 2018-09-27 11:30:38 +08:00 via Android kotlin 瑟瑟发抖 |
14 fuye OP @Resource 性能的确会有些影响,但是日常的 CURD 业务性能瓶颈主要是在网络、DB 这块,所以整体性能也不会差太多 |
16 fuye OP 用简单 ab 测试的结果来看的话,我写的大部分普通 groovy 接口(包含<5 个 rest 调用+<5 个 DB 调用+<5 个 redis 调用) 比纯 java 写的慢了 <5ms,主要耗时的都在外部调用上。但是如果是计算型的接口,有的能慢<100ms.不过整体上这点损耗都是可以接受的 |
17 fuye OP 我这个都是静态编译的,如果是动态解析执行就会慢的比较多 |
![]() | 18 xcstream 2018-09-27 12:11:18 +08:00 node 用的人更多。 |
![]() | 19 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 什么的也是小众框架,不成气候。 |
![]() | 20 axb 2018-09-27 13:28:15 +08:00 我们有一个系统用了纯 groovy 写,后来发现动态语言开发一时爽…… 现在是 java+groovy 混合编程了 |
![]() | 21 sagaxu 2018-09-27 13:32:22 +08:00 via Android 你说的这些 kotlin 都有,还是静态类型 |
23 fuye OP @sagaxu 是的,这些 kotlin 也都有,而且 IDEA 支持上对 kotlin 更友好。不过个人感觉 groovy 的语法对 javaer 更加友好?目前用在一些内部业务型项目是 OK 的,如果是大型项目或者稳定的平台、服务层项目,从团队招聘成本、学习成本和技术风险上来看,可能还是会老老实实选择 JAVA 作为第一语言,其他作为一些辅助 |
![]() | 24 flyingghost 2018-09-27 16:53:04 +08:00 JVM 系开发 DSL,groovy 简直爽歪。 |
![]() | 25 wancaibida 2018-09-27 17:01:08 +08:00 一般 groovy+grails.闭包,GORM 用起来是爽,但动态语言坑起来也很爽啊. |
![]() | 27 aristotll 2018-09-27 19:01:56 +08:00 个人比较喜欢 groovy 当脚本用 调用 Java 相关的库也很方便 |
28 lowzoom 2018-09-28 01:03:25 +08:00 除了业务本身其他都上 groovy |
29 orm 2018-09-28 11:57:11 +08:00 公司一个产品在用,grails 框架,语言是 groovy |
30 jeffreyning 2018-11-02 13:05:28 +08:00 公司在用 groovy 结合 springboot 开发,效率很高。接口层用的都是 springboot、springmvc 和 springcloud 的注解,业务实现用的 groovy 写速度快还支持热部署,没有用 grails 框架,用的这个 groovy 框架 micro-mvc,比 grails 胜在兼容性强,兼容 spring 体系各种 mvc 框架。 https://github.com/jeffreyning/micro-mvc |