「groovy相比java」什么叫groove
今天给各位分享groovy相比java的知识,其中也会对什么叫groove进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、groovy classloader 和java一样吗
- 2、Java和Groovy的区别
- 3、编码角度上看,有了groovy为什么还要用java?
- 4、Java程序员为什么学习Groovy
- 5、Assert 在Java和Groovy中的区别 / 蓝讯
groovy classloader 和java一样吗
不一样,groovy相当于java的扩展,但有些指令作了改变,在groovy中的写法与java中的写法不一致,这样的代码要改写。
所以说,groovy不能百分百load java编译的class。java肯定不能load groovy编译的class.
Java和Groovy的区别
Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。
Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby 与 Groovy 不同,因为它的语法与 Java 语法差异很大。)
编码角度上看,有了groovy为什么还要用java?
很多语言可以去学习,私下写的应用也可以用,但是对于企业来说,安全,稳定,类库强大,groovy可能比Java编码更友好,但是对于企业来说切换到这个,并不会对公司的现有业务效率具有质的变化或提升,那么就没必要放弃一门的时间历史悠久而去切换到一门未知的语言上
Java程序员为什么学习Groovy
现在流行script语言,就是代码不编译,到运行的时候再编译。这样的优点是不用重新发布就可以直接修改代码。立刻生效。特别适合j2ee应用。把一段经常改动的部分改成groovy就好了。需要修改直接改一下,方便多了。当然为了性能,一般是在java中调用groovy。
java本身支持调用多种script语言,例如javascript之类。相比之下,groovy最接近java语言,程序员学习时需要花费的时间最少。所以学的人用的多一点。
Assert 在Java和Groovy中的区别 / 蓝讯
与 Java 的区别
Groovy 试图尽可能地让 Java 开发者快速适应。在设计 Groovy 时,我们努力不让用户感到惊讶,即遵循“最小惊讶”原则,特别是针对那些此前有 Java 开发背景的 Groovy 初学者。
下面讲讲 Groovy 与 Java 的主要不同点。
1. 默认导入
下面这些包和类都是默认导入的,也就是说,不用再显式地使用 import 语句了:
java.io.*
java.lang.*
java.math.BigDecimal
java.math.BigInteger
java.net.*
java.util.*
groovy.lang.*
groovy.util.*
2. 多重方法
在 Groovy 中,调用的方法将在运行时被选择。这种机制被称为运行时分派或多重方法(multi-methods),是根据运行时实参(argument)的类型来选择方法。Java 采用的是相反的策略:编译时根据声明的类型来选择方法。
下面的 Java 代码可以用 Java 和 Groovy 来编译,但两种编译结果截然不同:
int method(String arg) {
return 1;
}
int method(Object arg) {
return 2;
}
Object o = "Object";
int result = method(o);
用 Java 编译的结果如下:
assertEquals(2, result);
用 Groovy 编译的结果则为:
assertEquals(1, result);
产生差异的原因在于,Java 使用静态数据类型,o 被声明为 Object 对象,而 Groovy 会在运行时实际调用方法时进行选择。因为调用的是 String 类型的对象,所以自然调用 String 版本的方法。
3. 数组初始化表达式
在 Groovy 中,{...} 语句块是留给闭包(Closure)使用的,这意味着你不能使用以下这种格式来创建数组:
int[] array = { 1, 2, 3}
正确的方式是这样的:
int[] array = [1,2,3]
4. 包范围可见性
在 Groovy 中,如果某个字段缺失了修饰符,并不会导致像在 Java 中那样形成包的私有字段:
class Person {
String name
}
相反,它会用来创建一个属性(property),也就是一个私有字段(private field),以及一个关联的 getter 和一个关联的 setter。
在 Groovy 中创建包私有字段,可以通过标注 @PackageScope 来实现。
class Person {
@PackageScope String name
}
5. ARM 语句块
ARM(Automatic Resource Management,自动资源管理)语句块从 Java 7 开始引入,但 Groovy 并不支持。相反,Groovy 提供多种基于闭包的方法,效果相同但却合乎习惯。例如:
Path file = Paths.get("/path/to/file");
Charset charset = Charset.forName("UTF-8");
try (BufferedReader reader = Files.newBufferedReader(file, charset)) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
可以写成下面这样的代码:
new File('/path/to/file').eachLine('UTF-8') {
println it
}
或者,如果你想让它更接近于 Java 的惯用形式,可以这样写:
new File('/path/to/file').withReader('UTF-8') { reader -
reader.eachLine {
println it
}
}
关于groovy相比java和什么叫groove的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。