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版下载

百科推荐

腾讯视频

腾讯视频

360杀毒

360杀毒

爱奇艺

爱奇艺

金山毒霸

金山毒霸

快吧游戏

快吧游戏

WPS Office

WPS Office

360安全浏览器

360安全浏览器

福昕PDF编辑器

福昕PDF编辑器

2345加速浏览器

2345加速浏览器

腾讯电脑管家

腾讯电脑管家

360安全卫士

360安全卫士

QQ浏览器

QQ浏览器