Groovy For Mac

Groovy For Mac V2.4.0

软件大小:30.20MB
软件类型:国产软件
软件语言:简体
软件授权:免费软件
软件分类: 开发软件
支持系统:
  • Groovy For Mac

Groovy For Mac      Groovy For Mac是款适合编程人员们使用的JVM开发语言工具。Groovy For Mac最新版拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变得非常简单。并且Groovy For Mac还可以支持对对象进行布尔求值,支持函数式编程,不需要main函数。

{mac1}

软件功能

      1、一些新的运算符。

      2、默认导入常用的包。

      3、断言不支持jvm的-ea参数进行开关。

      4、支持对对象进行布尔求值。

      5、支持函数式编程,不需要main函数。

      6、类不支持default作用域,且默认作用域为public。

      7、groovy中基本类型也是对象,可以直接调用对象的方法。

      8、受检查类型异常(Checked Exception)也可以不用捕获。

      9、支持单元测试和模拟(对象),可以 简化测试。

      10、无缝集成 所有已经存在的 Java对象和类库。

      11、 Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变得非常简单。

      12、在开发Web,GUI,数据库或控制台程序时 通过 减少框架性代码 大大提高了开发者的效率。

      13、直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。

      14、 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征,例如动态类型转换、闭包和元编程(metaprogramming)支持。。

      15、为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。

      16、 支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让代码变得易于阅读和维护。

Groovy For Mac

软件优势

      1、语法简洁,可读性强,并且很容易上手

      2、集成性强,与Java语言或者一些第三方库无缝接入

      3、脚本测试,可以写一些简单的、可维护的测试用例,来完成自动化构建任务

      4、功能强大,具有闭包特性,自动构建,元编程,函数式编程,Optional类型以及静态编译的功能

      5、DSL语言编写,语法灵活,扩展性强,使项目具有高级配置与可定制的机制,可读性强的特点

      6、完整的生态系统,涉及Web开发、reactive应用,并发性、异步的库、测试框架、构建工具(Build Tools)、代码分析、GUI构建

Groovy For Mac

常见问题

      问:为什么Groovy For Mac每执行一次脚本,都会生成一个脚本对应的class对象?

      答:一个ClassLoader对于同一个名字的类只能加载一次,都由GroovyClassLoader加载,那么当一个脚本里定义了C这个类之后,另外一个脚本再定义一个C类的话,GroovyClassLoader就无法加载了。为什么这里会每次执行都会加载?

      这是因为对于同一个groovy脚本,groovy执行引擎都会不同的命名,且命名与时间戳有关系。当传入text时,class对象的命名规则为:"script" + System.currentTimeMillis() + Math.abs(text.hashCode()) + ".groovy"。这就导致就算groovy脚本未发生任何变化,每次执行parse方法都会新生成一个脚本对应的class对象,且由GroovyClassLoader进行加载,不断增大perm区。

      问:Groovy For Mac为什么InnerLoader加载的对应无法通过gc清理掉?

      答:大家都知道,JVM中的Class只有满足以下三个条件,才能被GC回收,也就是该Class被卸载:1. 该类所有的实例都已经被GC,也就是JVM中不存在该Class的任何实例;2. 加载该类的ClassLoader已经被GC;3. 该类的java.lang.Class对象没有在任何地方被引用,如不能在任何地方通过反射访问该类的方法。

      在GroovyClassLoader代码中有一个class对象的缓存,进一步跟下去,发现每次编译脚本时都会在Map中缓存这个对象,即:setClassCacheEntry(clazz)。每次groovy编译脚本后,都会缓存该脚本的Class对象,下次编译该脚本时,会优先从缓存中读取,这样节省掉编译的时间。这个缓存的Map由GroovyClassLoader持有,key是脚本的类名,这就导致每个脚本对应的class对象都存在引用,无法被gc清理掉。

Groovy For Mac下载地址

mac版下载

百科推荐