# Groovy 与java共事：无缝集成

**URL:** <https://www.isharkfly.com/t/groovy-java/6855>\
**Category:** 程序语言\
**Created:** [November 25, 2012, 2:59am UTC](https://www.isharkfly.com/t/groovy-java/6855 "2012-11-25T02:59:41Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [November 25, 2012, 2:59am UTC](https://www.isharkfly.com/t/groovy-java/6855/1 "2012-11-25T02:59:41Z")

</div>

与java的友好性有俩方面：与java运行时环境无缝集成和与java相似的语法。

无缝集成

如图显示groovy的集成情况：groovy运行在java虚拟机，java的类库也可以继续使用，Groovy仅仅是创建java类的一种新的途径——通过在运行时创建，groovy是使用了额外jar文件为依赖的java。

 ![](https://com-ossez-www-discourse.s3.dualstack.us-east-2.amazonaws.com/discourse-uploads/original/2X/4/4f43f17a8879e3e024a5c091466b8a07fc048b5a.png)

因此，从groovy 调用java 是没有任何问题的。

当使用groovy 开发的时候，你不需要得到任何通知就可以这样做，每一个groovy 的类型（groovy type）都是java.lang.Object 的子类。

每一个groovy 对象都是一个类的实例。

一个groovy date 对象是java.util.Date 的实例等等。

反向集成也是非常容易，假设一个groovy 类MyGroovyClass 被编译到一个以“.class”结尾的文件中，并且把它放在java 的classpath 中，那么你能在java 类中以一个类的形式使用这个groovy 类`new MyGroovyClass(); //create from java`换句话说，实例化一个groovy 类与实例化一个java 类是一样的，在这之后，一个groovy类就是一个java 类，你能在这个实例上调用类的方法，传参数给方法等等，JVM 根本不知道运行的代码是通过groovy 编写的。
