导航:首页 > 程序命令 > java程序员为什么用groovy

java程序员为什么用groovy

发布时间:2022-08-12 03:46:33

1. java程序员为什么学习Groovy

首先Groovy也是运行在java虚拟机上的,二者有语法上的区别但是和java并没有本质上的不同。
Groovy和java是相结合的关系而并不是将java取而代之。
1、Java开发者学习Groovy的成本很低
2、是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言
3、完成同样的事情Groovy可能比Java需要写的代码要少
4、支持单元测试和模拟(对象),可以 简化测试
5、groovy中基本类型也是对象,可以直接调用对象的方法
......

1
2
3
4
5
6
7
8
9

def var="hello "+
"world"+
",groovy!"
def repeat(val){
for(i = 0; i < 5; i++){
println val
}
}
repeat(var)

输出:
hello world,groovy!
hello world,groovy!
hello world,groovy!
hello world,groovy!
hello world,groovy!
最后,为什么要学,这是给那些比较“懒”的java程序员准备的,代码量小啊,而且一些新特性用起来也很方便省心。

2. Java程序员为什么学习Groovy

Groovy是java亲儿子。可以直接用java的API,但是Groovy的语法看起来比较类似于脚本语言的语法,同样用Java 和Groovy写同样的东西,Groovy的代码看起来要简洁的多。 你知道Java有很多地方很操蛋的,简单的一个操作要写一大串...

3. java程序员为什么使用Groovy

一直听说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可以这样新增一个方法,或者调用它。

//用闭包定义一个方法 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 你能快速的打开控制台, 通过输入如下代码来输出所有的文件名 ( 递归处理 ) :
groovy -e "new File('.').eachFileRecurse { println it }"

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

4. Java程序员为什么学习Groovy

  1. groovy、kotlin、scala等都是基于jvm平台的语言(都会编译成字节码),并且可以和java混合使用。

  2. 他们对java进行了不同程度的改良,语法结构、集合操作方式、更多的语法糖、泛型的支持(java是伪泛型),更好的lambda表达式语法等等。一般来讲这些语言可以大幅度提高生产效率,比如kotlin可以节省1/3的代码量。

  3. 从日常使用的角度,建议学习kotlin,当前kotlin已经被google确定为新任官方语言。如果做android开发,不至于再多学习一门语言。

5. Java程序员为什么学习Groovy

正如Groovy对Java很多特性进行的包装优化一样,基于Groovy的HttpBuilder也包裹了HttpClient,使网络编程变得更加的方便易用,下面稍微来用一个例子看一下。
寻找各种依赖的jar包有时候会让我们失去耐心,不过值得庆幸的是我们有Maven和Gradle这样的工具,可以根据配置轻松的帮我们配置好我们需要的数据。下面我们来叙述一下整个过程。
1. 创建文件夹httpbuildertest
2. 创建gradle配置文件,build.gradle,内容如下:
apply plugin: "groovy"apply plugin: "eclipse"repositories { mavenCentral()}dependencies { compile "org.codehaus.groovy:http-builder:0.4.0" compile "org.codehaus.groovy:groovy-all:2.3.3" testCompile "org.spockframework:spock-core:0.7-groovy-2.0"}

gradle我们将做另文介绍
3. 执行gralde eclipse(当然必须先安装gradle),就可以生成eclipse所需要的.classpath和.project文件,这时候就可以使用eclipse导入功能来import->Existing Projects Into WorkSpace。
4. 创建我们的一个测试,试试看是不是可以使用httpbuilder了
import groovyx.net.http.HTTPBuilderimport spock.lang.Specification;import static groovyx.net.http.Method.*import static groovyx.net.http.ContentType.*class HttpbuildLabSpec extends Specification{HTTPBuilder http = new HTTPBuilder( 'http://m.weather.com.cn' )public void testRequestWeather(){ when: def info ="" http.request( GET, JSON ) { url.path = '/data/101290401.html' headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4' response.success = { resp, json -> info = json.weatherinfo.city } response.failure = { resp -> println "Unexpected error: ${resp.statusLine.statusCode} : ${resp.statusLine.reasonPhrase}" } } then:"曲靖"==info}}

打完收工,通过这个小例子我们可以了解到这么一些内容:
(1)HTTPBuilder 是这个框架的核心类(要不然怎么和框架一个名字),构建这个类的对象的时候,指定要请求的baseUrl。
(2)request方法可以指定请求的method和返回的数据格式,method对应的是GET/PUT/POST/DELETE/HEAD几个常量,而数据格式目前有JSON/XML/HTML/BINARY/URLENC/ANY几种。
(3)一个比较有意思的地方是,在http的request方法里面,仿佛是无根之水一样突然冒出来了几个没有声明过的变量,看起来连编译也不会通过的方法,那么是如何能正常运作的呢?这个我们就要研究到Groovy的Closure(闭包)。Groovy的闭包里包含有一个delegate属性,一般来说,这个delegate里保存的是闭包使用上下文的对象引用,比如a调用了一个闭包b,则b的delegate就是a的this对象。而在HTTPBuilder对象调用request方法的时候,它把传入闭包的delegate改成了一个叫做SendDelegate的类对象(这是HTTPBuilder的内部类,他们都是用Java写的,在新版的HttpBuilder里,已经改名为RequestConfigDelegate),这个类里面,分别包含了一个叫做getHeaders()的方法,一个叫做getUrL()的方法,一个叫做getResponse()的方法。稍微思索一下我们就可以想到,Groovy里有这样的特性,如果直接使用一个识别不出来的变量,Groovy会假设它是getter的一种简写形式,自动进行补全(当然这也是DSL的常用伎俩,把方法伪装成短语),而getter并没有参数,所以其括号是可以简写的,实际上上面的代码可以写作getUrl().path = '/data/101290401.html',这样就非常符合程序员的视觉体验了。
(4)第四点罗嗦了不少,主要是为了喜欢追根问题的同学释疑,实际上整个调用还是非常的简单明快的,在request闭包里,我们通过response(记得吗,实际上就是GetResponse()),获得了一个Map结构,这个Map的内部结构实际上是Map<String,Closure>,对“success”和“failure”这两个key我们分别设置了对应的闭包,这样就完成了回调的设置,一旦方法成功或者失败,就可以调用到对应的闭包。
(5)使用了JSON作为返回格式,闭包的第二个参数就是解析好的返回body,就是一个Json对象,是可以直接用点号来访问的。当然最好不要在失败的闭包里放这个参数,一般失败的情况比较多,也许就是一个html返回,格式错误那么测试也就无法按照预期进行了。

6. Java程序员为什么学习Groovy

现在流行script语言,就是代码不编译,到运行的时候再编译。这样的优点是不用重新发布就可以直接修改代码。立刻生效。特别适合j2ee应用。把一段经常改动的部分改成groovy就好了。需要修改直接改一下,方便多了。当然为了性能,一般是在java中调用groovy。
java本身支持调用多种script语言,例如javascript之类。相比之下,groovy最接近java语言,程序员学习时需要花费的时间最少。所以学的人用的多一点。

7. Java程序员为什么学习Groovy

它是一种动态语言,和python差不多,说白了就是胶水语言,用来连接各个组件,比如web调用本地等,或者做插件之类的,增加工程部署易用性。

8. Java程序员为什么学习Groovy

因为Groovy可以扩展java
可以更好的编写
望采纳,谢谢

阅读全文

与java程序员为什么用groovy相关的资料

热点内容
程序员一天编程多少个小时 浏览:62
java与模式下载 浏览:649
javaintlong区别 浏览:688
刀塔2如何选择中国服务器 浏览:810
英文剧,7个孩子 浏览:245
哈利波特电影名英文名 浏览:50
可以看污的软件下载 浏览:18
好看网站推荐 浏览:860
iphone文件夹设封面 浏览:249
日本电影盔甲僵尸 浏览:614
手机怎么创建minecraft服务器 浏览:488
LCD在python中 浏览:980
小电影的网站谁知道 浏览:67
香港男女出轨开房遇见的电影名字 浏览:373
单片机stm使用说明书 浏览:641
手机百度android开发 浏览:957
男主怀孕生子女尊 浏览:297
邵氏3级电影 浏览:321
男主角叫安迪的电影 浏览:78