Groovy运行于JVM之上,然而其对动态语言、函数式编程范式以及元编程功能的加持所带来的表现力和简洁性能够说甩了Java几条街。咱们能够利用Groovy的全部动态功能构建高性能的JVM应用、将开发效率提升几个数量级! 这就是咱们为何要学它!编程
注: 本文首发于 My 公众号 CodeSheep ,可 长按 或 扫描 下面的 当心心 来订阅 ↓ ↓ ↓
本文实验所用OS为CentOS7,这里介绍使用sdk工具来安装Groovy的方法。vim
curl -s get.sdkman.io | bash
c#
source "$HOME/.sdkman/bin/sdkman-init.sh"
安全
一句话搞定!bash
sdk install groovy
服务器
groovy -v
框架
一切就绪curl
[root@localhost ~]# vim Hello.groovy [root@localhost ~]# more Hello.groovy println "Hello World From Groovy !" [root@localhost ~]# groovy Hello Hello World From Groovy !
两大优势:表现力 + 简洁!!!函数式编程
用Java写一段代码以下:函数
public class Greetingss { public static void main( String[] args ) { for( int i=0; i<3; i++ ) { System.out.println("ho "); } System.out.println("Merry Groovy"); } }
用Groovy重构一遍以下:
for(i in 0..2) { print 'ho ' } print 'Merry Groovy'
看看两种语言的信噪比对比,真是给人不可估量的感动!
能够避免代码中的大量null引用的判断
def foo( str ) { str?.reverse() // 仅当str不为null时reverse才会执行 }
这能够帮咱们省多少个if
啊!!!
与Java相比,Groovy的异常处理少了不少繁文缛节
对于那些不想处理或者不适合在代码当前层次处理的异常,Groovy对用户不作任何要求,任何用户未处理的异常会自动传递到高一层,咱们啥也不用写:
def openfile( fileName ) { // 无需throws new FileInputStream( fileName ) // 无需try...catch... 处理 }
异常能够放到其调用代码中处理:
try { openFile("nonexistfile") } catch( FileNotFoundException ex ) { print "Oops: " + ex }
若捕获全部异常(Exception),则上面catch中异常的类型均可省略:
try { openFile("nonexistfile") } catch( ex ) { // 省略类型表示可捕获全部异常 print "Oops: " + ex }
静态方法内可以使用this来引用Class对象,所以能够链式调用
class Wizard { def static learn( trick, action ) { //... this } } Wizard.learn('xxxx', {...}) .learn('yyyy', {...}) .learn('zzzz', {...})
做者更多的SpringBt实践文章在此:
若是有兴趣,也能够抽点时间看看做者一些关于容器化、微服务化方面的文章: