【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )

简介: 【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )

文章目录

一、Groovy 支持 Java 语法

二、Groovy 支持 Java 虚拟机

三、Groovy 语言是 动态语言

四、Groovy 扩展 JDK

五、Groovy 编译时元编程





一、Groovy 支持 Java 语法


Groovy 语言与 Java 语言可以无缝衔接 , 在 Groovy 中 , 可以 完全使用 Java 语法进行开发 ;


从 " 能否使用 Java 语法 " 角度出发 , Groovy 语言比 Kotlin 语言更方便 , Kotlin 中无法使用 Java 语法 , 而 Groovy 可以 , 因此 Java 开发者直接就可以进行 Groovy 开发 ;






二、Groovy 支持 Java 虚拟机


Groovy 语言是 基于 Java 虚拟机的 ;


Groovy 即可以实现 面向对象 编程开发 , 又可以进行 独立脚本开发 ;






三、Groovy 语言是 动态语言


Groovy 是一门 动态语言 , 与之相对的 , Java 是一门静态语言 ; 具体就是 在声明变量前 , Java 语言必须声明该变量的类型 , 而在 动态语言中 , 在 运行时才检查变量类型 , 声明变量时 , 可以暂时不指定变量类型 ;



Groovy 使用 def 声明变量 , 在声明时 , 可以暂时不指定变量类型 ;


动态语言 中 变量的具体类型 , 取决于为其赋值的类型 , 如果为 变量设置 字符串 , 则该变量就是字符串类型 ; 如果为 变量 赋值 1 , 则该变量的类型就是 int 类型 ;



Kotlin 也是一门动态语言 , 使用 var 声明变量 ;






四、Groovy 扩展 JDK


在 Groovy 中 , 可以使用 JDK 中的所有 API , 同时还可以对 JDK 中的 API 进行扩展 ;


如 : 在 Java 中读取文件 , 首先要创建 File 对象 , 然后获取输入流 FileInputStream , 使用缓冲区读取 , 这个操作步骤很繁琐 ;


对上述 File 读取文件进行 API 扩展 , 可以使用一行代码 , 读取文件中的数据 , 相当于开发了一个读取文件的工具类 ;






五、Groovy 编译时元编程


Groovy 可以实现 编译时元编程 , 类似于编译时技术 APT 中的 注解处理器 ;


在编译工程时 , 可以动态执行 注入方法 , 拦截方法 , 合成方法 , 委托方法 等 操作 ;


如 : 编译时 , 从服务器获取一个方法 , 借助 Groovy 元编程 , 可以将该方法动态地插入到 Groovy 方法中执行 ;



一些收费的 API 函数库 , 可以借助该方法 , 实现 API 的加密操作 ; 如 : 编译时 , 从服务器获取密钥 , 对比本地的密钥是否合法 , 确定是否要进行后续编译过程 ;


目录
相关文章
|
7月前
|
存储 Java 容器
Java基本语法详解
本文深入讲解了Java编程的基础语法,涵盖数据类型、运算符、控制结构及数组等核心内容,帮助初学者构建坚实的编程基础。
|
6月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
470 1
Redis-常用语法以及java互联实践案例
|
6月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
192 1
|
8月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
372 3
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
8月前
|
人工智能 安全 Java
Go与Java泛型原理简介
本文介绍了Go与Java泛型的实现原理。Go通过单态化为不同类型生成函数副本,提升运行效率;而Java则采用类型擦除,将泛型转为Object类型处理,保持兼容性但牺牲部分类型安全。两种机制各有优劣,适用于不同场景。
351 24
|
7月前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
450 0
|
8月前
|
存储 安全 Java
从基础语法到实战应用的 Java 入门必备知识全解析
本文介绍了Java入门必备知识,涵盖开发环境搭建、基础语法、面向对象编程、集合框架、异常处理、多线程和IO流等内容,结合实例帮助新手快速掌握Java核心概念与应用技巧。
186 0
|
存储 缓存 算法
JVM简介—1.Java内存区域
本文详细介绍了Java虚拟机运行时数据区的各个方面,包括其定义、类型(如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和直接内存)及其作用。文中还探讨了各版本内存区域的变化、直接内存的使用、从线程角度分析Java内存区域、堆与栈的区别、对象创建步骤、对象内存布局及访问定位,并通过实例说明了常见内存溢出问题的原因和表现形式。这些内容帮助开发者深入理解Java内存管理机制,优化应用程序性能并解决潜在的内存问题。
648 29
JVM简介—1.Java内存区域
|
8月前
|
人工智能 Java
java中static关键字简介
`static`关键字用于修饰类的成员变量和方法,使其属于类而非对象。静态成员可通过类名直接访问,无需实例化对象。静态方法只能访问静态成员,不能直接访问非静态成员或使用`this`关键字。此外,静态代码块在类首次加载时执行且仅执行一次,适用于初始化操作。
223 0
|
12月前
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。