Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >java程序员为什么使用Groovy?

java程序员为什么使用Groovy?

原创
作者头像
秃顶的Java程序员
修改于 2020-04-01 06:42:18
修改于 2020-04-01 06:42:18
2K00
代码可运行
举报
运行总次数:0
代码可运行

一直听说java世界里有个Groovy,但是一直没时间去了解它究竟是一个怎么样子的。我们现在的项目里放了很多开源包,而且项目中做流程的时候,规则就是用Groovy实现的。近来闲来无事,于是开始认真的看看Groory究竟有什么好的。其实最初我接触它是因为Grails这一个框架,这两个都是为了实现一个目的,java的敏捷开发,与java的无缝对接。在某些情况下,java需要半天处理的事情,Groovy只需要几分钟,是的,几分钟…剩下来的时间,程序员终于有时间泡妹子了,^_^…….技术宅的兄弟,赶紧来看看吧。

脚本语言,动态语言?难道是javascript一类的?好吧,它的确和javascript有一点像,但是它太强大了,远远超出了javascript能处理的事情。这里不和javascript做比较了,直接来和Java比较吧,看看Groovy能做什么。

Groovy 的网站( http://groovy.codehaus.org ) 给出了 groovy 的最好定义: groovy 是在 java平台上的、 具有象 Python , Ruby 和 Smalltalk 语言特性的灵活动态语言, groovy 保证了这些特性象 java 语法一样被 java 开发者使用。 而且学习Groovy对javaer来说,是很容易的一件事情。如果你还没有开始学Ruby,来吧,和我一起来Groovying一下…………而且附带一个Grails来媲美Ruby on rails。

1.Groovy可以兼容java。

是的,你可以用java语法来编写groovy,最后还可以生成class文件,直接用java调用。你会说,这有什么好的,不就是改了个后缀名么?呕,也许吧…但是它的亮点当然不是这个,它的亮点是你可以在Groovy里面直接用java语法混搭写,当然不是很推荐这样做的。

2.Groovy是动态的。

不需要java的反射,不需要冗长的代码,不需要各种try catch 异常,你就可以实现各种神奇的事情。Groovy的class可以这样新增一个方法,或者调用它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//用闭包定义一个方法 var1为参数 ,->后面是执行语句(当然参数不是必须的)
def methodA={var1-> print "this is methodA"} 

//用闭包定义一个方法 var1为参数 ,->后面是执行语句(当然参数不是必须的)
def methodB={var1-> print "this is  methodB"}

String.metaClass.addMethodA=methodA;   //将methodA绑定为成员方法。
String.metaClass.'static'.addMethodB=methodB;   //将methodB绑定为静态方法

String s="str"; 
s.addMethodA('good');  //实例调用方法A 
String.addMethodB('hello'); //静态类调用方法B

以上的代码将两个方法添加到了String class里面(天哪,final的String 也被攻破了),然后分别用实例对象调用addMethodA,静态类调用AddMethodB.

3.Groovy是一把瑞士军刀。

java是一把基础工具,等你需要的时候,你需要到处去找jar包,来填充自己的程序,而且你需要看API去弄懂各种使用。此外,java的编写实在是太冗长了,为了打印一个HelloWorld,你需要编写class, 写一个main函数。对于Groovy来说:print “hello world!”.这一句就足够了,这只是开始…

通过 groovy 你能快速的打开控制台, 通过输入如下代码来输出所有的文件名 ( 递归处理 ) :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groovy -e "new File('.').eachFileRecurse { println it }"

即使 java 有一个名称为 eachFileRecurse 的方法和一个 FileListener 的接口,你仍旧需要显示的创建一个类, 声明一个 main 方法, 保存源代码到一个文件中, 并且编译它, 然后你才能运行它, 基于比较, 我们来看看 java 做相同工作的代码, 我们假设存在单独的 eachFileRecurse 方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ListFiles { // JAVA !!

public static void main(String[] args) {

 new java.io.File(".").eachFileRecurse( // 假设 java 存在该方法

 new FileListener() {

    public void onFile (File file) {
         System.out.println(file.toString()); 
        } 
    } 
); 
}

好吧,有需要《Groovy in Action[文字版][中文].pdf》可以直接私信我,现在开始学习Groovy吧。

特别声明:本文素材来源于网络,仅作为分享学习之用,如有侵权,请联系删除!


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )
Groovy 的 变量 , 方法 , 函数实参 的类型 , 都是在运行时推断与检查的 ;
韩曙亮
2023/03/30
2.2K0
【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )
Groovy秘诀 顶
听说java世界里有个Groovy大神!java需要半天处理的事情,Groovy只需要几分钟,是的,几分钟…剩下来的时间,程序员终于有时间泡妹子了,^_^…….技术宅的兄弟,赶紧来看看吧。
白石
2019/08/23
4.6K0
Groovy新手教程
简单地说,Groovy 是下一代的java语言,跟java一样,它也执行在 JVM 中。
全栈程序员站长
2022/07/12
2.1K0
从 Java 和 JavaScript 来学习 Haskell 和 Groovy(类型系统)
接上文 《从 Java 和 JavaScript 来学习 Haskell 和 Groovy(引子)》。
四火
2022/07/19
5750
从 Java 和 JavaScript 来学习 Haskell 和 Groovy(元编程)
本篇文章的话题是元编程。首先来认识元编程,我在第一篇 《引子》里面已经介绍:元编程,指的是在运行时改变 “类” 的定义,例如访问、增加或修改等等。一言以蔽之,就是 “用程序来写程序”。在第二篇的 《类型系统》里面已经借由继承和接口的实现,介绍了一些利用元编程特性来增加或改变子类行为的方法。回顾语言发展的长河,其实是经历了一个从 “对象 -> 类 -> 元类” 到 “对象 -> 原型” 的发展过程的。所以,无论是类,还是元类,这样的概念其实都不是非有不可的,只是因为我们思考的习惯,特别是抽象的习惯而顺其自然地产生了。这一点我在 《编程范型:工具的选择》里面已经详细描述了,建议在往下阅读前移步。
四火
2022/07/18
5490
从 Java 和 JavaScript 来学习 Haskell 和 Groovy(元编程)
Groovy初学者指南
Groovy是一种基于Java平台的动态编程语言,它结合了Python、Ruby和Smalltalk等语言的特性,同时与Java无缝集成。在本篇博客中,我们将探讨Groovy与Java之间的联系与区别,深入了解Groovy的语法,并展示如何在Java中使用GroovyShell来运行Groovy脚本。
BookSea
2023/10/13
5720
【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )
创建标准的 Java 类 , 需要将成员变量设置为私有成员 , 并且为其定义 getter 和 setter 方法 ;
韩曙亮
2023/03/30
1.3K0
【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )
《Groovy极简教程》第1章 Groovy简介《Groovy极简教程》第1章 Groovy简介参考资料
官网文档:http://www.groovy-lang.org/documentation.html Github源码:https://github.com/apache/groovy
一个会写诗的程序员
2018/08/20
1.4K0
线程间的通信方式,JAVA程序员必须会!
本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。
用户5224393
2019/08/13
2810
Groovy on Grails 交流活动
2008 年 InfoQ 交流活动的胶片: http://cid-5b1e02933669f469.skydrive.live.com/redir.aspx?page=browse&resid=5B1
四火
2022/07/15
1.7K0
Groovy on Grails 交流活动
8.2 Spring Boot集成Groovy、Grails开发小结参考资料
本章介绍Spring Boot集成Groovy,Grails开发。我们将开发一个极简版的pms(项目管理系统)。
一个会写诗的程序员
2018/08/20
2.4K0
8.2 Spring Boot集成Groovy、Grails开发小结参考资料
Grails——赋能敏捷开发的利器
几年前,一个开餐厅的亲戚找我做一个网上订餐的网站(当时外卖平台还没有兴起)。一开始我是拒绝的,因为我的本职工作就是做软件开发的,业余时间真没兴趣再做。而且从头开始做一个网页应用,工程浩大,我也没有这个时间。 一个偶然的机会,我接触到了Grails,通过它几个小时就能构建一个专业的涵盖前、后端的Web应用,于是我尝试着开发那个订餐网站,结果,我利用几个周末仅用了半个人/月的功夫就做好了一个能上线接单并具备后台管理(含基本财务)的网站。刷新了我对软件开发的认知,原来开发一个复杂的含前、后端的Web应用也可以如此地快。 Grails是一个基于JVM的全栈快速Web应用开发框架,类似的框架有著名的Rails,但是它需要用Ruby语言,对于广大的Java开发者,要学习一门新语言显然不现实。于是有人基于Groovy做了Grails,可以理解为Grails = Rails on Groovy。Groovy是JVM三大衍生语言之一,相对于Closure和Scala,它可以视为是Java的简化版和脚本化,学习周期最短,上手只消半天,而且相对于有点老气的Java,动态语言Groovy编程要快速和灵活得多。所以Grails可以说是面向Java开发者的快速开发框架。
Criss@陈磊
2019/08/02
1.9K0
《Kotlin极简教程》第一章 Kotlin简介100% interoperable with Java™
JetBrains开源其Kotlin语言 基于JVM的新编程语言。 Kotlin,类似 Xtend 一样,旨在提供一种更好的 Java 而非重建整个新平台。这两种语言都向下编译为字节码(虽然 Xtend 是首先转换成相应的 Java 代码,再让 Java 编译器完成繁重的工作),而且两者都引入了函数和扩展函数(在某个有限范围内静态地增加一个新方法到某个已有类型的能力)。Xtend 是基于 Eclipse 的,而 Kotlin 是基于 IntelliJ 的,两者都提供无界面构建。能够首先演变到其他 IDE 的语言有可能成为最后的赢家。
一个会写诗的程序员
2018/08/20
7870
《Kotlin极简教程》第一章 Kotlin简介100% interoperable with Java™
Groovy-拾遗
许多以前使用 C++ 的开发人员会怀念操作符重载,例如 + 和 -。虽然它们很方便,但是被覆盖的操作符的多态实质会造成混淆,所以操作符重载在 Java 语言中被取消了。这个限制的好处是清晰:Java 开发人员不必猜想两个对象上的 + 是把它们加在一起还是把一个对象附加到另一个对象上。不好的地方则是丧失了一个有价值的简写形式。
白石
2019/08/23
1.6K0
Java程序员最亲睐的Web框架
只有少数几种语言像Java一样提供了各种各样的web框架,上面的统计图就是一个证据。下面是其他开发者所使用web框架列表:
Java团长
2018/07/23
7850
Java程序员最亲睐的Web框架
探究Kotlin的局部方法
在Kotlin中,定义方法很有趣,不仅仅因为方法的关键字是fun(function前几个字符),还是因为你会惊奇的发现,它允许我们在方法中定义方法。如下
技术小黑屋
2018/10/11
1.2K0
调查:Java程序员最亲睐的Web框架
只有少数几种语言像Java一样提供了各种各样的web框架,上面的统计图就是一个证据。下面是其他开发者所使用web框架列表:
哲洛不闹
2018/09/18
9780
调查:Java程序员最亲睐的Web框架
【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )
闭包 Closure 是 Groovy 中最常用的特性 , 使用闭包作为参数是 Groovy 语言的明显特征 ;
韩曙亮
2023/03/30
2.4K0
【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )
34. Groovy 语法 类型知识详解-第一篇
本篇内容开始介绍Groovy中的各种类型知识。将会分多篇文章详细介绍和学习Groovy中的有关于类型的相关知识点。
zinyan.com
2023/02/23
7520
34. Groovy 语法 类型知识详解-第一篇
《Spring Boot极简教程》附录4 Java编程简史 附录4 Java编程简史参考资料
在20世纪60年代,软件曾出现过严重危机,由软件错误而引起的信息丢失、系统报废事件屡有发生。为此,1968年,荷兰E.W.Dijkstra提出了程序设计中常用的GOTO语句的三大危害:
一个会写诗的程序员
2018/08/20
3850
《Spring Boot极简教程》附录4  Java编程简史 附录4  Java编程简史参考资料
推荐阅读
相关推荐
【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验