Compact Java App – 像写 Python 一样写 Java
项目地址: https://github.com/alchem-x/compact-sb
什么是 Compact Java App ?
Compact Java App 是基于 Java 25 新特性( JEP 512 )的编程方式,让你可以像写 Python 一样写 Java 程序:
// 传统的 Java Hello World
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
// Compact Java App Hello World
void main() {
IO.println("Hello, World!");
}
核心优势
- ✅ 零样板代码 – 无需类声明、public static void main 等繁琐语法
- ✅ 自动导入 – 自动导入 java.base 所有常用类
- ✅ 简洁 I/O – 新的 IO 类简化控制台输入输出
- ✅ 平滑演进 – 可随时扩展到完整 Java 程序
- ✅ 原生性能 – 编译后与传统 Java 完全等效
当前项目介绍
这个仓库演示了 Compact Java App 的实际应用 – 一个轻量级的 Web 服务器实现。
项目结构
compact-sb/
├── Lu.java # 紧凑 Java App 主程序
├── CompactSB.java # Web 服务器核心
├── lib/ # 依赖库
└── README.md
快速开始
- 确保 Java 25+已安装
java -version # 需要 Java 25 或更高版本
- 运行应用
java Lu.java && java -cp "lib/*" CompactSB.java
- 访问 Web 服务
打开浏览器访问 http://localhost:8080/
核心代码示例
Lu.java – 紧凑 Java App 的精髓:
void main() {
// 简洁的 Web 服务器启动
IO.println("Starting Compact Web Server...");
// 自动导入所有 java.base 类
var server = new Server();
server.start(8080);
IO.println("Server running at http://localhost:8080/");
}
为什么选择 Compact Java App ?
- 教学友好 – 第一天就能写出实用的程序
- 脚本化 – 用 Java 写脚本,享受强类型和优秀性能
- 零配置 – 无需复杂项目结构和构建工具
- 生产就绪 – 可平滑扩展到企业级应用
与传统 Java 对比
| 特性 | 传统 Java | Compact Java App |
|---|---|---|
| Hello World | 5 行,4 个概念 | 3 行,1 个概念 |
| 依赖管理 | 需要 Maven/Gradle | 直接运行源文件 |
| 学习曲线 | 陡峭 | 平缓 |
| 开发速度 | 慢 | 快速 |
| 运行时性能 | 优秀 | 同样优秀 |
应用场景
- 🎓 编程教学 – 让学生快速看到成果
- 🚀 快速原型 – 验证想法的最佳选择
- ⚙️ 系统脚本 – 替代 Shell 脚本的安全选择
- 📊 数据处理 – 处理 CSV 、JSON 等数据文件
- 🌐 Web 服务 – 如本项目的轻量级服务器
技术细节
- 隐式类声明 – 源文件自动转换为 final 类
- 实例 main 方法 – 无需 static 修饰符
- 自动导入 – java.base 模块 54 个包自动可用
- IO 简化 –
IO.println()替代System.out.println()
下一步计划
这个项目展示了 Compact Java App 在 Web 开发中的应用。未来可以:
- 添加更多路由处理功能
- 集成模板引擎
- 支持静态文件服务
- 添加数据库连接示例
- 创建 RESTful API 演示
相关资源
- 本项目 GitHub 仓库 – 源代码和示例
- JEP 512 官方文档 – 技术规范
- OpenJDK 25 下载 – 获取 Java 25
Compact Java App 让 Java 重新变得简单优雅,同时保持其强大的生态系统。未来已来,让我们一起拥抱这个全新的 Java 时代! 🚀
本项目是 Compact Java App 理念的实践演示,展示了如何用简洁的代码构建实用的应用程序。
Leave a Reply Cancel reply