Java语言可以说它的生态体系是非常完善的,在这个完善的生态体系里面,衍生出Groovy的动态语言。Groovy相比较Java语言而言,
它更加轻量级。Groovy是基于Apache2.0许可协议进行了开源,有着和Python一样的动态语言特性以及优雅。在该文章体系里面,详细的
介绍Groovy的环境搭建以及案例的编写。
到https://groovy.apache.org/download.html下载Groovy的最新版本,依据使用的平台进行下载,本人是基于mac电脑,所以文章中
的案例截图都是基于mac的平台来进行的。下载最新的版本后,进行解压,然后加入到环境变量里面。在mac中,环境变量的文件名称为
.bash_profile,把Groovy加到环境变量的文件里面,内容具体为:
#groovy
export PATH=$PATH:/Applications/devOps/tools/groovy-3.0.2/bin
见如下截图信息:
然后对文件.bash_profile进行加载,命令为:source .bash_profile。在控制台输入命令groovy --version,如果环境搭建正确,就会显示出groovy
的版本信息,如下图所示:
在控制台输入groovysh,进入到groovy的命令行里面,如下图所示:
在如上的截图信息中,可以看到,我们输出了学习编程语言最常用的一句话“世界您好!”,同时编写了一个循环的案例。可以看到,在Groovy的
动态语言里面,循环的输出是很优雅的。当然对于输出的部分,可以使用()也可以不使用,总之来说都是可以的,如下图所示:
下面说明在Init里面创建Groovy的工程,首先打开该IDE后,安装Groovy的插件,安装插件的方式其实是非常简单的,在IDE的plugins里面,输入
groovy就会搜索到对应的插件,然后安装成功后重新启动IDE。如下图所示:
插件安装成功后,在Init的IDE里面点击新建工程,在新建工程的页面点击Groovy,如下图所示:
在如上的截图中,JDK的版本切记选择1.8.X的版本,这是因为最新的Groovy只支持1.8的版本,如果选择的是JDK11以及JDK12,编写的代码执行后,就
会出现如下的错误信息:
错误信息: Information:Groovyc: While compiling groovyStack:java.lang.NoClassDefFoundError: Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/JAXBContext at org.codehaus.groovy.vmplugin.v8.Java8.configureClassNode(Java8.java:458) at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:274) at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:396) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.scan(AbstractExtensionMethodCache.java:116) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.getMethods(AbstractExtensionMethodCache.java:97) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.getMethodsFromClassLoader(AbstractExtensionMethodCache.java:73) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:115) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.get(AbstractExtensionMethodCache.java:51) at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.findMacroMethods(MacroCallTransformingVisitor.java:119) at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.visitMethodCallExpression(MacroCallTransformingVisitor.java:90) at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:76) at org.codehaus.groovy.ast.CodeVisitorSupport.visitExpressionStatement(CodeVisitorSupport.java:117) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitExpressionStatement(ClassCodeVisitorSupport.java:200) at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40) at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:164) at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69) at org.codehaus.groovy.ast.MethodCallTransformation.visit(MethodCallTransformation.java:49) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:336) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:880) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:650) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:627) at org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper.compile(GroovyCompilerWrapper.java:62) at org.jetbrains.groovy.compiler.rt.DependentGroovycRunner.runGroovyc(DependentGroovycRunner.java:108) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.jetbrains.groovy.compiler.rt.GroovycRunner.intMain2(GroovycRunner.java:90) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovycInThisProcess(InProcessGroovyc.java:157) at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.lambda$runGroovyc$0(InProcessGroovyc.java:76) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835)
关于如上的错误信息不再详细的解释,点击next后,填写工程的名称,然后点击Finish,至此Groovy的工程创建完毕。创建后的工程如
下图所示:
右键src,新建Groovy Class,如下图所示:
创建Index.groovy,编写如下的代码:
class Hello { public static void main(String[] args) { println("Hello Groovy!") } }
在IDE中,右键点击Run,执行后就会打印“Hello Groovy!”的信息,如下图所示:
当然也可以创建groovy的脚本,也是在新建中,点击Groovy Script,创建的新脚本输入如下代码,如下图所示:
右键执行后,输出如下的信息:
谢谢您的阅读,后续会逐步的介绍。您也可关注本人的微信公众号,谢谢!