Groovy

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(为什么Groovy)
(DSL)
(未显示1个用户的34个中间版本)
第10行: 第10行:
  
 
[[Grails]]
 
[[Grails]]
 +
 +
==简介==
 +
Apache Groovy
 +
 +
Groovy 语言核心由 [https://github.com/apache/groovy/tree/master/src/main/java Java] 语言编写而成。
  
 
==新闻==
 
==新闻==
 +
*[https://www.oschina.net/news/96828/groovy-2018-roadmap Groovy 2018 Roadmap:下一步主打 lambda 和模块化] (2018.06.07)
 +
*The Groovy project graduated on 2015-11-18
 
*[http://incubator.apache.org/projects/groovy.html Groovy进入Apache项目孵化阶段]
 
*[http://incubator.apache.org/projects/groovy.html Groovy进入Apache项目孵化阶段]
 +
 +
==版本==
 +
*4.0.x
 +
*[https://docs.groovy-lang.org/docs/groovy-3.0.7/ 3.0.x]
 +
*2.6.x
 +
*[https://docs.groovy-lang.org/docs/groovy-2.5.14/ 2.5.x]
  
 
==为什么Groovy==
 
==为什么Groovy==
第18行: 第31行:
 
* 因为[[Java]]动态语言;
 
* 因为[[Java]]动态语言;
 
* 因为[[Domain-specific language|DSL]](Groovy是Java平台的DSL,它是有限领域的Java开发的理想选择;可以将Groovy视为 “简略的Java语言” 更能说明Groovy与Java语言之间的关系);
 
* 因为[[Domain-specific language|DSL]](Groovy是Java平台的DSL,它是有限领域的Java开发的理想选择;可以将Groovy视为 “简略的Java语言” 更能说明Groovy与Java语言之间的关系);
* 因为[[Moqui]]
+
* 因为[[Gradle]], [[Moqui]] 等优秀项目;
 
* 因为[https://github.com/apache/groovy Apache顶级项目]。
 
* 因为[https://github.com/apache/groovy Apache顶级项目]。
  
第24行: 第37行:
 
===OS X===
 
===OS X===
 
通过[[Homebrew]]安装groovy
 
通过[[Homebrew]]安装groovy
  brew install groovy
+
  $ brew install groovy
 +
$ brew upgrade groovy
 
通过port安装groovy
 
通过port安装groovy
 
  sudo port install groovy
 
  sudo port install groovy
第30行: 第44行:
 
  sudo port upgrade groovy // 升级到新版本
 
  sudo port upgrade groovy // 升级到新版本
 
  groovysh // Groovy Shell
 
  groovysh // Groovy Shell
 +
 
===Linux===
 
===Linux===
 
  wget http://dist.groovy.codehaus.org/distributions/groovy-binary-1.5.1.zip
 
  wget http://dist.groovy.codehaus.org/distributions/groovy-binary-1.5.1.zip
第51行: 第66行:
 
显示结果
 
显示结果
 
  Hello World!
 
  Hello World!
 +
 +
==指南==
 +
通过 [https://groovyconsole.appspot.com/ Groovy web console] 快速熟悉 Groovy
 +
 +
$groovysh
 +
 +
定义方法
 +
groovy:000> def hello(name) {
 +
groovy:001> println("Hello $name")
 +
groovy:002> }
 +
groovy:000> hello("Huihoo")
 +
定义类
 +
groovy:000> class Foo {
 +
groovy:001> def bar
 +
groovy:002> def baz() {
 +
groovy:003> :display
 +
  000> class Foo {
 +
  001> def bar
 +
  002> def baz() {
 +
groovy:003> :show variables
 +
 +
$groovyConsole
  
 
==Examples==
 
==Examples==
 
Groovy 入门经典 (Groovy Programming) 的[http://docs.huihoo.com/groovy/Groovy-Programming-Book-Examples.zip 随书例子]
 
Groovy 入门经典 (Groovy Programming) 的[http://docs.huihoo.com/groovy/Groovy-Programming-Book-Examples.zip 随书例子]
 +
 
==Modules==
 
==Modules==
 
* COM Scripting — script Windows ActiveX and COM components with Groovy
 
* COM Scripting — script Windows ActiveX and COM components with Groovy
第83行: 第121行:
 
* Maven Plugin — Integration of Groovy with Maven
 
* Maven Plugin — Integration of Groovy with Maven
 
   
 
   
 +
==DSL==
 +
[[Domain-specific language|DSL]]
 +
*[http://www.craigburke.com/groovy-dsl/ Practical and Stupidly Impractical Groovy DSLs]
 +
 +
==IDE==
 +
*[https://github.com/groovy/groovy-eclipse Eclipse Groovy Development Tools] [[Eclipse]]
 +
 +
==问题==
 +
Groovy常见问题
 +
 +
Groovy控制台不能“记住”任何变量,总是报“unknown property”?
 +
groovy:000> := interpreterMode
 +
groovy:000> def x = "huihoo"
 +
===> huihoo
 +
groovy:000> x
 +
===> huihoo
 +
 
==项目==
 
==项目==
 
*[https://github.com/kdabir/awesome-groovy Awesome Groovy] [[image:awesome.png]]
 
*[https://github.com/kdabir/awesome-groovy Awesome Groovy] [[image:awesome.png]]
 +
*[https://github.com/apache/groovy/tree/master/subprojects Groovy sub projects]
 
*[[Grails]]
 
*[[Grails]]
 
*[[Gradle]]
 
*[[Gradle]]
第90行: 第146行:
 
*[[sdkman]]
 
*[[sdkman]]
 
*[[ratpack]]
 
*[[ratpack]]
 +
*[https://github.com/jenkinsci/jenkins-scripts jenkins-scripts]
 +
*[https://github.com/JFrogDev/artifactory-user-plugins Groovy user plugins] for Artifactory.
 +
*[https://github.com/gaelyk/gaelyk Gaelyk] is a lightweight Groovy toolkit for Google App Engine Java.
 +
*[https://github.com/geb/geb Geb] is a browser automation solution.
 +
*[https://github.com/SmartThingsCommunity/SmartThingsPublic SmartThings]
 +
 +
==文档==
 +
[https://github.com/GR8Conf GR8Conf] dedicated to the Groovy Ecosystem
 +
*[http://docs.huihoo.com/javaone/2015/CON3346-Building-DSLs-in-Groovy-the-2016-Way.pdf Building DSLs in Groovy the 2016 Way]
 +
*[http://docs.huihoo.com/javaone/2015/CON2591-The-Epic-Groovy-Puzzlers-Season-II-The-Revenge-of-the-Parentheses.pdf The Epic Groovy Puzzlers S02: The Revenge of the Parentheses]
 +
 +
==图集==
 +
<gallery>
 +
image:apache-groovy-users.png|Groovy用户
 +
image:groovy-keywords.png|Groovy关键字
 +
image:groovy-math-operations-resulting-types.png|数学操作结果类型
 +
image:Groovy-Interceptions.png|拦截器
 +
image:GroovyConsole.png|GroovyConsole
 +
image:Groovy-AST-Browser.png|AST浏览器
 +
image:Groovy-Object-Browser.png|对象浏览器
 +
image:smartthings-architecture.png|SmartThings
 +
image:smartthings-demo-app.png|SmartThings
 +
</gallery>
  
 
==链接==
 
==链接==
第103行: 第182行:
 
*[http://www.ibm.com/developerworks/cn/java/j-pg/ 实战Groovy系列]
 
*[http://www.ibm.com/developerworks/cn/java/j-pg/ 实战Groovy系列]
  
{{comment}}
 
  
 
[[category:programming language]]
 
[[category:programming language]]
 
[[category:java]]
 
[[category:java]]
 +
[[category:apache]]

2021年1月12日 (二) 03:50的版本

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 Groovy Thanks, Wikipedia.
Groovy-90x90.png

Groovy于2003年8月由James Strachan(与Bob McWhirter开发,开发以开放源代码的形式进行。“Java是非常强大而且优秀的语言,但源代码量往往很大”(Strachan)。而脚本语言的优点就是简单方便,在Java中描述非常复杂的部分,如果使用脚本语言可以提高效率。不过,目前的脚本语言中还存在问题,“要想使脚本与Java应用共存,必须通过脚本生成Java的字节码,而如果语法差异很大开发人员就很费劲。我们还希望使用J2EE与J2SE的API”(Strachan)。但符合这一要求的脚本语言并不存在。“因此通过开发人员,使Java的开发和运行环境更加符合‘groovy’”(Strachan)。如果使用Groovy,有时开发时间要比Java缩短一半。由于Groovy的代码中也有描述Java代码的机制,因此两者合用非常容易。

Groovy不仅继承了Java的语法,还吸取了Ruby、Python、Perl等其他脚本语言的特征。如List(列表)与数组等使用特有的语法,提高了描述效率。在会议中,使用从列表中收录的多个字符串中搜索4个字符以下的字符串并显示出来的处理,演示了Groovy的效率。在Java中必须要15 行以上,在Groovy中4行便可以描述。

当然与Java相比,Groovy也有不足之处,比如性能,目前“根据不同的使用方法,为Java的20~90%左右。今后还将进行细节调整”(开发 Groovy的Rod Cope)。此外Groovy还存在不支持内隐类(Inner Class)、调试(Debug)有困难等课题。不过“对小型且不太关键的系统特别有效。也非常容易掌握,因此请务必试一试”(Cope)。Groovy 的运行环境可以从官方网站下载。

Grails

目录

简介

Apache Groovy

Groovy 语言核心由 Java 语言编写而成。

新闻

版本

为什么Groovy

  • 因为JVM
  • 因为Java动态语言;
  • 因为DSL(Groovy是Java平台的DSL,它是有限领域的Java开发的理想选择;可以将Groovy视为 “简略的Java语言” 更能说明Groovy与Java语言之间的关系);
  • 因为Gradle, Moqui 等优秀项目;
  • 因为Apache顶级项目

安装

OS X

通过Homebrew安装groovy

$ brew install groovy
$ brew upgrade groovy

通过port安装groovy

sudo port install groovy
groovy -v
sudo port upgrade groovy // 升级到新版本
groovysh // Groovy Shell

Linux

wget http://dist.groovy.codehaus.org/distributions/groovy-binary-1.5.1.zip
GROOVY_HOME=C:\groovy-1.5.1\ or /usr/local/groovy-1.5.1
add path %GROOVY_HOME%\bin or %GROOVY_HOME%/bin
groovyConsole.bat
In the top part of the window of the groovyConsole, type the following
println "Hello, World!" 
type <CTRL-R>
groovy> println "Hello, World!"

安装成功

测试

class Greet {
    def name
    Greet(who) { name = who[0].toUpperCase() +  who[1..-1]}
    def salute() { println "Hello $name!" }
    }
    g = new Greet('world')
    g.salute()

显示结果

Hello World!

指南

通过 Groovy web console 快速熟悉 Groovy

$groovysh

定义方法

groovy:000> def hello(name) {
groovy:001> println("Hello $name")
groovy:002> }
groovy:000> hello("Huihoo")

定义类

groovy:000> class Foo {
groovy:001> def bar
groovy:002> def baz() {
groovy:003> :display
 000> class Foo {
 001> def bar
 002> def baz() {
groovy:003> :show variables

$groovyConsole

Examples

Groovy 入门经典 (Groovy Programming) 的随书例子

Modules

  • COM Scripting — script Windows ActiveX and COM components with Groovy
  • Gant
  • GFreeMarker — an integration of the FreeMarker template engine for Groovy
  • Google Data Support — makes using the Google Data APIs easier from within Groovy
  • Gram — a simple xdoclet-like tool for processing doclet tags or Java 5 annotations
  • GraphicsBuilder — GraphicsBuilder is a Groovy builder for Java 2D
  • Grapplet
  • Griffon — Dekstop Enhancements for Groovy
  • Groosh — Provides a shell-like capability for handling external processes.
  • Groovy Jabber-RPC — allows you to make XML-RPC calls using the Jabber protocol
  • Groovy Monkey — is a dynamic scripting tool for the Eclipse Platform
  • Groovy SOAP — create a SOAP server and make calls to remote SOAP servers using Groovy
  • GroovyLab — Provides a domain specific language (DSL) for math engineering (matlab-like syntax).
  • GroovySWT — a wrapper around SWT, the eclipse Standard Widget Toolkit
  • GroovyWS — GroovySOAP replacement that uses CXF and Java5 features
  • GSP — means GroovyServer Pages, which is similar to JSP (JavaServer Pages)
  • GSQL — supports easier access to databases using Groovy
  • JideBuilder — JideBuilder is a Groovy builder for the open source JIDE Common Layer
  • Native Launcher — a native program for launching groovy scripts
  • Windows NSIS-Installer — a Windows-specific installer for Groovy
  • Windows Services — framework for Groovy-based WinNT (Windows) Services
  • WingSBuilder — WingsBuilder is a Groovy builder for the wingS Framework
  • XMLRPC — allows you to create a local XML-RPC server and/or to make calls on remote XML-RPC servers
  • Grails — a Groovy-based web framework inspired by Ruby on Rails
  • GORM — the Grails Object-Relational Mapping persistence framework
  • GroovyPlugin — A Groovy plugin for JSPWiki
  • Maven Plugin — Integration of Groovy with Maven

DSL

DSL

IDE

问题

Groovy常见问题

Groovy控制台不能“记住”任何变量,总是报“unknown property”?

groovy:000> := interpreterMode
groovy:000> def x = "huihoo"
===> huihoo
groovy:000> x
===> huihoo

项目

文档

GR8Conf dedicated to the Groovy Ecosystem

图集

链接

Groovy.png
分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱