第1章 - Lua 是什么?
嗨,朋友!我是长安。
今天我来跟你聊聊 Lua 这门语言。作为一个 Java 程序员,我第一次接触 Lua 的时候,真的被它惊艳到了——原来一门语言可以这么小巧、这么高效!
🤔 Lua 的前世今生
Lua(发音:卢阿,葡萄牙语中"月亮"的意思)诞生于 1993 年的巴西,由里约热内卢天主教大学的三位教授创造。
它的设计目标只有一个:轻量、可嵌入。
🌟 Lua 有多小?
来看一组数据:
| 对比项 | Java (JDK) | Lua |
|---|---|---|
| 安装包大小 | ~150MB+ | ~500KB |
| 解释器大小 | JVM 很大 | ~250KB |
| 语法关键字 | 50+ 个 | 21 个 |
| 数据结构 | 非常丰富 | 1 个(Table) |
| 启动速度 | 较慢 | 极快 |
没错,Lua 的整个解释器只有 250KB 左右,比一张图片还小!
🎯 Lua 的核心特点
1. 轻量级 ⚡
Lua 是世界上最轻量的脚本语言之一,整个源码只有 2 万多行 C 代码。
2. 可嵌入 🔌
Lua 天生就是为了嵌入其他程序而设计的。你可以把 Lua 嵌入到:
- C/C++ 程序
- Java 程序(通过 LuaJ)
- Redis 服务器
- Nginx 服务器(OpenResty)
- 游戏引擎(Unity、Cocos2d 等)
3. 速度快 🚀
Lua 的运行速度在脚本语言中名列前茅,LuaJIT 甚至可以接近 C 语言的速度。
4. 简单易学 📖
只有 21 个关键字,语法简洁明了,Java 程序员一两天就能上手。
📊 Java vs Lua 核心对比
| 特性 | Java | Lua |
|---|---|---|
| 类型系统 | 静态类型 | 动态类型 |
| 编译方式 | 编译为字节码 | 解释执行 / JIT |
| 运行环境 | JVM | Lua 解释器 |
| 面向对象 | 类为基础 | 基于 Table 和元表 |
| 内存管理 | GC | GC |
| 并发模型 | 多线程 | 协程 |
| 包管理 | Maven/Gradle | LuaRocks |
| 应用场景 | 企业级应用 | 嵌入式脚本 |
💡 Java 程序员学 Lua 的优势
作为 Java 程序员,你已经有了很好的编程基础,学 Lua 会非常快:
- 变量、函数、循环 — 概念完全一样,只是语法不同
- 面向对象 — Lua 用 Table 实现,思想和 Java 类似
- GC 机制 — Lua 也有垃圾回收,你不用手动管理内存
注意
Lua 和 Java 最大的区别是:Lua 是动态类型语言。变量不需要声明类型,一个变量可以随时改变类型。对于习惯了强类型的 Java 程序员来说,这是需要适应的地方。
🚀 一个快速对比
Java 版 Hello World:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Lua 版 Hello World:
print("Hello, World!")
就一行!是不是很简洁?😄
📝 小结
- Lua 是一门轻量级、可嵌入的脚本语言
- 它只有 21 个关键字,非常容易学习
- Java 程序员学 Lua 有天然优势,核心概念都是相通的
- Lua 在 Redis 脚本、规则引擎、游戏开发、高性能网关 等场景广泛应用
➡️ 下一步
准备好了吗?下一章我们来 搭建 Lua 开发环境,5 分钟就能写出你的第一个 Lua 程序!
💪 练习题
- Lua 诞生于哪一年?它的名字是什么意思?
- Lua 有多少个关键字?
- 列举 3 个 Lua 的典型应用场景。
- Java 和 Lua 在类型系统上最大的区别是什么?
答案提示
- 1993 年,葡萄牙语中"月亮"的意思
- 21 个关键字
- Redis 脚本、游戏脚本、OpenResty 网关(答案不唯一)
- Java 是静态类型,Lua 是动态类型
