资讯专栏INFORMATION COLUMN

Groovy初体验:构建高性能JVM应用

geekidentity / 2400人阅读

摘要:我们可以利用的所有动态功能构建高性能的应用将开发效率提高几个数量级这就是我们为什么要学它注本文首发于公众号,可长按或扫描下面的小心心来订阅环境部署本文实验所用为,这里介绍使用工具来安装的方法。

为什么要学Groovy

Groovy运行于JVM之上,然而其对动态语言函数式编程范式以及元编程功能的加持所带来的表现力和简洁性可以说甩了Java几条街。我们可以利用Groovy的所有动态功能构建高性能的JVM应用、将开发效率提高几个数量级! 这就是我们为什么要学它!

注: 本文首发于 My 公众号 CodeSheep ,可 长按扫描 下面的 小心心 来订阅 ↓ ↓ ↓

Groovy环境部署

本文实验所用OS为CentOS7,这里介绍使用sdk工具来安装Groovy的方法。

首先在命令行下执行:

curl -s get.sdkman.io | bash

接下来执行:

source "$HOME/.sdkman/bin/sdkman-init.sh"

然后我们就可以使用sdk工具来安装Groovy:

一句话搞定!

sdk install groovy

完成之后我们来检查Groovy安装状态

groovy -v

一切就绪

Hello World From Groovy
[root@localhost ~]# vim Hello.groovy
[root@localhost ~]# more Hello.groovy 
println "Hello World From Groovy !"
[root@localhost ~]# groovy Hello
Hello World From Groovy !
Groovy语言特性

Groovy是轻量级的Java

Groovy的信噪比比Java高:较少的代码获得更多结果

GDK = Groovy JDK:通过向JDK的各种类中添加便捷方法,Groovy扩展了JDK形成了GDK库

return语句可选,分号结尾可选

方法和类默认public

导航操作符可帮助实现对象引用不为空时方法才会被调用

Groovy不强迫捕获自己不关心的异常,没捕获的异常自动传到高层

静态方法内可使用this来引用Class对象,因此可以链式调用!

两大优点:表现力 + 简洁!!!

从Java到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", {...})
后记

作者更多的原创文章在此,欢迎观赏

My Personal Blog

作者更多的SpringBt实践文章在此:

Spring Boot应用监控实战

SpringBoot应用部署于外置Tomcat容器

ElasticSearch搜索引擎在SpringBt中的实践

初探Kotlin+SpringBoot联合编程

Spring Boot日志框架实践

SpringBoot优雅编码之:Lombok加持

如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:

利用K8S技术栈打造个人私有云 连载文章

从一份配置清单详解Nginx服务器配置

Docker容器可视化监控中心搭建

利用ELK搭建Docker容器化应用日志中心

RPC框架实践之:Apache Thrift

RPC框架实践之:Google gRPC

微服务调用链追踪中心搭建

Docker容器跨主机通信

Docker Swarm集群初探

高效编写Dockerfile的几条准则

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68795.html

相关文章

  • 函数式编程思维在三行代码情书中的应用

    摘要:函数式编程概述如今主流的编程语言,函数式编程范式或多或少都融入其中成了标配,或者说主流语言都在进行函数式方面的扩充,这是一个大趋势。 showImg(https://segmentfault.com/img/remote/1460000015089083); 函数式编程概述 如今主流的编程语言,函数式编程范式或多或少都融入其中成了标配,或者说主流语言都在进行函数式方面的扩充,这是一...

    DC_er 评论0 收藏0
  • Capsule:开源的 JVM 应用部署工具

    摘要:如果期望应用程序正常地运行,编码和部署过程都是重中之重。但应用程序对环境的要求非常少只需一个和一个内核,然而意想不到是,目前为止尚不存在一个通用的应用部署工具机制。当下,经过一年的发展,正式发布一个简单健壮且灵活的应用部署工具。 【编者按】本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验。通过这篇文章,Ron 向大家详...

    yangrd 评论0 收藏0
  • 国外程序员整理的Java资源大全

    摘要:日期和时间处理日期和时间的函数库。使用中可观察序列,创建异步基于事件应用程序的函数库。为分布式系统提供延迟和容错处理。发布使用本机格式分发应用程序的工具。将程序资源和打包成和的本机文件。图像处理用来帮助创建评估或操作图形的函数库。 好资源要分享原文 译者 唐尤华 翻译自 github akullpp 构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Mave...

    chengtao1633 评论0 收藏0
  • #yyds干货盘点# Spring Boot的前世今生以及它和Spring Cloud的关系详解。

    摘要:经过年时间的发展,到目前为止,最新稳定版为版本。的发展刚出生的时候,引起了很多开源社区的关注,并且也有个人和企业开始尝试使用。通过项目搭建过程来对比的差异和优势。当然它的作用不仅于此,后续会逐步揭开它的真实面目。而和就相当于当年的和的关系。 要了解Spring Boot的发展背景,还得从2004年Spring ...

    番茄西红柿 评论0 收藏2637
  • Java软件架构师需要掌握的开源工具

    摘要:软件架构师需要掌握的开源工具的是当前敏捷开发领域最重要的工具之一。主要用于持续自动地构建测试软件项目,如与。监控一些定时执行的任务。是应用程序最好的软件测试框架之一。是一种自由和开放源码的类操作系统 Java软件架构师需要掌握的开源工具1. JIRAAtlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误...

    genefy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<