V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fuye
V2EX  ›  Java

有用 Groovy 做业务开发的吗

  •  
  •   fuye · 2018-09-27 09:36:06 +08:00 · 7221 次点击
    这是一个创建于 2245 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    如 集合类 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 来开发业务的好像不多?是不是只用来写单元测试或动态规则配置啥的。

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

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

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

    用户都说我们做得好,不过老板对用户吹的是我们自己写的 DSL,嘿嘿嘿
    ghos
        3
    ghos  
       2018-09-27 10:55:12 +08:00 via Android
    @jiafaner java 怎么和 groovy 组合一起用啊 求教
    PythonAnswer
        4
    PythonAnswer  
       2018-09-27 11:03:15 +08:00 via iPhone
    2 楼老板人才
    fuye
        5
    fuye  
    OP
       2018-09-27 11:12:16 +08:00
    @tinybaby365 如果是从团队的角度来看,选一门招人不方便的语言的确不太合适,用 JAVA 招人方便
    CFO
        6
    CFO  
       2018-09-27 11:14:05 +08:00 via Android
    在用 不过用的简单 只是用来算公式
    Resource
        7
    Resource  
       2018-09-27 11:14:08 +08:00
    纯 groovy 没有,某些场景当脚本用
    Resource
        8
    Resource  
       2018-09-27 11:15:12 +08:00
    只能说动态一时爽,
    fuye
        9
    fuye  
    OP
       2018-09-27 11:15:38 +08:00
    @ghos 目前了解的有两种做法,一种就是通过 maven 的 groovy-compile 插件直接编译成字节码,另一种就是动态解析执行 groovy 脚本,可以传入当前程序的上下文进行 binding,网上教程很多的
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       2018-09-27 11:19:33 +08:00
    用动态语言等死吧.
    Resource
        11
    Resource  
       2018-09-27 11:19:58 +08:00
    另外,groovy 的性能比较低,很多地方并不适用
    jiafaner
        12
    jiafaner  
       2018-09-27 11:20:20 +08:00
    @ghos 就是动态执行 groovy 脚本的,很多教程的
    leconio
        13
    leconio  
       2018-09-27 11:30:38 +08:00 via Android
    kotlin 瑟瑟发抖
    fuye
        14
    fuye  
    OP
       2018-09-27 11:31:11 +08:00
    @Resource 性能的确会有些影响,但是日常的 CURD 业务性能瓶颈主要是在网络、DB 这块,所以整体性能也不会差太多
    Resource
        15
    Resource  
       2018-09-27 11:34:10 +08:00
    @fuye 所以说做些业务简单的还行,大型的复杂系统还是上不了台面
    fuye
        16
    fuye  
    OP
       2018-09-27 11:46:52 +08:00
    用简单 ab 测试的结果来看的话,我写的大部分普通 groovy 接口(包含<5 个 rest 调用+<5 个 DB 调用+<5 个 redis 调用) 比纯 java 写的慢了 <5ms,主要耗时的都在外部调用上。但是如果是计算型的接口,有的能慢<100ms.不过整体上这点损耗都是可以接受的
    fuye
        17
    fuye  
    OP
       2018-09-27 11:48:09 +08:00
    我这个都是静态编译的,如果是动态解析执行就会慢的比较多
    xcstream
        18
    xcstream  
       2018-09-27 12:11:18 +08:00
    node 用的人更多。
    Dainslef
        19
    Dainslef  
       2018-09-27 12:56:01 +08:00   ❤️ 1
    Groovy 是动态语言,写写小脚本尚可,在 JVM 系的主战场后端服务这块其实并没有多大优势,在后端服务这块静态类型语言是工程上的首选。
    而且 JVM 上好语言太多啦,Scala 有强大的类型系统和高阶 FP 特性,Kotlin 有各类精心设计的语法糖和强类型 DSL,哪个不比 Groovy 设计的更优秀。
    而且 Groovy 的尴尬在于没有真正的 Killer 级别应用,Scala 有 Spark/Akka,Kotlin 更专注 Android 平台,在各自的细分领域都有巨大的优势,Groovy 真正广泛应用的只有 Gradle,但这货也不是框架 /库;至于 Grails 什么的也是小众框架,不成气候。
    axb
        20
    axb  
       2018-09-27 13:28:15 +08:00
    我们有一个系统用了纯 groovy 写,后来发现动态语言开发一时爽……
    现在是 java+groovy 混合编程了
    sagaxu
        21
    sagaxu  
       2018-09-27 13:32:22 +08:00 via Android
    你说的这些 kotlin 都有,还是静态类型
    viakiba
        22
    viakiba  
       2018-09-27 14:21:06 +08:00
    @ghos BSF 引擎好像可以
    fuye
        23
    fuye  
    OP
       2018-09-27 14:37:12 +08:00
    @sagaxu 是的,这些 kotlin 也都有,而且 IDEA 支持上对 kotlin 更友好。不过个人感觉 groovy 的语法对 javaer 更加友好?目前用在一些内部业务型项目是 OK 的,如果是大型项目或者稳定的平台、服务层项目,从团队招聘成本、学习成本和技术风险上来看,可能还是会老老实实选择 JAVA 作为第一语言,其他作为一些辅助
    flyingghost
        24
    flyingghost  
       2018-09-27 16:53:04 +08:00
    JVM 系开发 DSL,groovy 简直爽歪。
    wancaibida
        25
    wancaibida  
       2018-09-27 17:01:08 +08:00
    一般 groovy+grails.闭包,GORM 用起来是爽,但动态语言坑起来也很爽啊.
    aristotll
        26
    aristotll  
       2018-09-27 19:00:57 +08:00
    @Resource #11 groovy 可以用 compileStatic 来增加性能 ,
    aristotll
        27
    aristotll  
       2018-09-27 19:01:56 +08:00
    个人比较喜欢 groovy 当脚本用 调用 Java 相关的库也很方便
    lowzoom
        28
    lowzoom  
       2018-09-28 01:03:25 +08:00
    除了业务本身其他都上 groovy
    orm
        29
    orm  
       2018-09-28 11:57:11 +08:00
    公司一个产品在用,grails 框架,语言是 groovy
    jeffreyning
        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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1158 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:43 · PVG 02:43 · LAX 10:43 · JFK 13:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.