Compact Java App - 像写 Python 一样写 Java
项目地址: 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 服务
打开浏览器访问 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 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 理念的实践演示,展示了如何用简洁的代码构建实用的应用程序。

还没有像 c#那样可以直接省略 main😉

java 都精简成这样了,spring 这种框架是打算继续 java kotlin 两脚走路吗?

感觉像是 AI 写的,是不是该举报一下?

java 的繁复从来都不是语法简洁不简介

而是输出个 helloworld 都得整个 hanlder provider

原来计划是用 println("Hello, World!");,现在还有加上 IO.

Java 总是想办法精简这种无关紧要、用 IDE 一键生成不用自己写的代码( record 、psvm 、sout ),根本解决不了什么痛点

我不想写 py 味的 Java ,就像有人不想写 Java 味的 Go

MAKE JAVA GREAT AGAIN

已经进化到了 notepad.exe 无法编写的程度,可喜可贺

#6 方便用 jsh 写脚本?运维表示一个语言像之前的 Java 那样又臭又长的,我基本不会用。

Java Is BAck

一个编程语言好与不好不是看语法糖多少,少写一个 calss 一个 function 关键字有什么实际意义吗?反而徒增理解难度

导入第三方库,以前 maven 配一下就好了,现在还得手动下载 jar 包放 lib 下面,倒退了属于是

我感觉函数式比面向对象, 难多了

我还以为有强制缩进然后去掉花括号了呢…

确实,这些根本就无关紧要,还有用 java 写脚本,一点都不现实,谁家 linux 自带 jdk

强制缩进就有点背祖了吧

至少现在对你的工作毫无意义!

java 本来可以作为各种脚本语言的运行态的, 以前有个 Jython 的, 直接在 java 中写 python 混搭, 最后编译为 java class , 就像 grovvy 和 kotlin , 可惜最后这个项目好像太监了。
不然还是挺不错的。

我对 SB 两个字母总有误解

刚从 C#转到 Java 时最不习惯就是字串比较要写成 string1.eqauls(string2)
后面来几个新人也要解释一番

随地大小写

SB = Spring Boot, Java 世界最流行的开发框架