V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cbdy
V2EX  ›  Java

Java 25 后的时代:像写 Python 一样写 Java

  •  
  •   Cbdy · 22 小时 55 分钟前 · 3007 次点击

    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
    

    快速开始

    1. 确保 Java 25+已安装
    java -version  # 需要 Java 25 或更高版本
    
    1. 运行应用
    java Lu.java && java -cp "lib/*" CompactSB.java
    
    1. 访问 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 ?

    1. 教学友好 - 第一天就能写出实用的程序
    2. 脚本化 - 用 Java 写脚本,享受强类型和优秀性能
    3. 零配置 - 无需复杂项目结构和构建工具
    4. 生产就绪 - 可平滑扩展到企业级应用

    与传统 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 开发中的应用。未来可以:

    1. 添加更多路由处理功能
    2. 集成模板引擎
    3. 支持静态文件服务
    4. 添加数据库连接示例
    5. 创建 RESTful API 演示

    相关资源


    Compact Java App 让 Java 重新变得简单优雅,同时保持其强大的生态系统。未来已来,让我们一起拥抱这个全新的 Java 时代! 🚀

    本项目是 Compact Java App 理念的实践演示,展示了如何用简洁的代码构建实用的应用程序。

    35 条回复    2025-09-28 23:08:35 +08:00
    codehz
        1
    codehz  
       22 小时 33 分钟前 via Android
    还没有像 c#那样可以直接省略 main😉
    Tomatopotato
        2
    Tomatopotato  
       15 小时 34 分钟前
    java 都精简成这样了,spring 这种框架是打算继续 java kotlin 两脚走路吗?
    beginor
        3
    beginor  
       15 小时 19 分钟前 via Android
    感觉像是 AI 写的,是不是该举报一下?
    realpg
        4
    realpg  
    PRO
       15 小时 11 分钟前   ❤️ 4
    java 的繁复从来都不是语法简洁不简介

    而是输出个 helloworld 都得整个 hanlder provider
    CodeCodeStudy
        5
    CodeCodeStudy  
       13 小时 59 分钟前
    原来计划是用 println("Hello, World!");,现在还有加上 IO.
    NotFoundEgg
        6
    NotFoundEgg  
       13 小时 49 分钟前
    Java 总是想办法精简这种无关紧要、用 IDE 一键生成不用自己写的代码( record 、psvm 、sout ),根本解决不了什么痛点
    banmuyutian
        7
    banmuyutian  
       13 小时 29 分钟前
    我不想写 py 味的 Java ,就像有人不想写 Java 味的 Go
    MRongM
        8
    MRongM  
       13 小时 21 分钟前
    MAKE JAVA GREAT AGAIN
    xiangyuecn
        9
    xiangyuecn  
       13 小时 21 分钟前
    已经进化到了 notepad.exe 无法编写的程度,可喜可贺
    huangsijun17
        10
    huangsijun17  
       13 小时 20 分钟前   ❤️ 1
    @NotFoundEgg #6 方便用 jsh 写脚本?运维表示一个语言像之前的 Java 那样又臭又长的,我基本不会用。
    xgdgsc
        11
    xgdgsc  
       13 小时 14 分钟前 via Android
    Java Is BAck
    AutumnVerse
        12
    AutumnVerse  
       13 小时 14 分钟前 via iPhone
    一个编程语言好与不好不是看语法糖多少,少写一个 calss 一个 function 关键字有什么实际意义吗?反而徒增理解难度
    sagnitude
        13
    sagnitude  
       13 小时 12 分钟前
    导入第三方库,以前 maven 配一下就好了,现在还得手动下载 jar 包放 lib 下面,倒退了属于是
    pandaPapa
        14
    pandaPapa  
       13 小时 7 分钟前
    我感觉函数式比面向对象, 难多了
    chendy
        15
    chendy  
       13 小时 4 分钟前
    我还以为有强制缩进然后去掉花括号了呢…
    spritecn
        16
    spritecn  
       13 小时 3 分钟前
    @NotFoundEgg 确实,这些根本就无关紧要,还有用 java 写脚本,一点都不现实,谁家 linux 自带 jdk
    spritecn
        17
    spritecn  
       13 小时 3 分钟前
    @chendy 强制缩进就有点背祖了吧
    mingtdlb
        18
    mingtdlb  
       13 小时 2 分钟前
    至少现在对你的工作毫无意义!
    lchynn
        19
    lchynn  
       13 小时 2 分钟前
    java 本来可以作为各种脚本语言的运行态的, 以前有个 Jython 的, 直接在 java 中写 python 混搭, 最后编译为 java class , 就像 grovvy 和 kotlin , 可惜最后这个项目好像太监了。
    不然还是挺不错的。
    iflyapi
        20
    iflyapi  
       12 小时 53 分钟前
    我对 SB 两个字母总有误解
    tzengshinfu
        21
    tzengshinfu  
       12 小时 43 分钟前
    刚从 C#转到 Java 时最不习惯就是字串比较要写成 string1.eqauls(string2)
    后面来几个新人也要解释一番
    cooldong287671
        22
    cooldong287671  
       12 小时 39 分钟前
    随地大小写
    Cbdy
        23
    Cbdy  
    OP
       12 小时 12 分钟前
    @iflyapi SB = Spring Boot, Java 世界最流行的开发框架
    Cbdy
        24
    Cbdy  
    OP
       12 小时 7 分钟前
    @sagnitude 我添加了 Lu.java ( Lib Update ),以便根据 lib.txt 自动下载依赖到 lib ,Maven/Gradle 是更强大的构建工具,但也引入了新的概念,这个 Compact Java App 是用来写一点示例代码、教学代码、小脚本的
    EthanZC
        25
    EthanZC  
       12 小时 0 分钟前
    Scala YYDS
    JsonNode
        26
    JsonNode  
       11 小时 52 分钟前
    啰里啰嗦,不如 groovy
    Ayanokouji
        27
    Ayanokouji  
       11 小时 43 分钟前
    直接上 kt 吧,语法比 python 优雅,还能完美使用 java 生态
    cookii
        28
    cookii  
       11 小时 37 分钟前 via Android
    java 的问题是运行时太重。。。
    spritecn
        29
    spritecn  
       6 小时 46 分钟前
    @JsonNode java8 尤其 11 后,groovy 的使命就结束了
    spritecn
        30
    spritecn  
       6 小时 36 分钟前
    @JsonNode groovy 发了 5.0,甚至连个像样的资讯都没有
    JsonNode
        31
    JsonNode  
       6 小时 36 分钟前
    @spritecn #29 Java 的裹脚布时代不结束,groovy 的使命就不会结束
    JsonNode
        32
    JsonNode  
       6 小时 33 分钟前
    @spritecn #30 一个 String Templates 都能难产好几年,不知道有什么技术难题没解决
    guyeu
        33
    guyeu  
       5 小时 59 分钟前   ❤️ 1
    您是否在找:JBang
    wuyiccc
        34
    wuyiccc  
       42 分钟前
    那我为什么不用 python ?
    Cooky
        35
    Cooky  
       刚刚
    非要折腾干脆 clojure
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2574 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:08 · PVG 23:08 · LAX 08:08 · JFK 11:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.