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

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

  •  
  •   Cbdy · 2 天前 · 4966 次点击

    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 理念的实践演示,展示了如何用简洁的代码构建实用的应用程序。

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

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

    这命名多少带点对 Java 的怨念了😂
    chenzw2
        39
    chenzw2  
       14 小时 13 分钟前
    java25 jvm 内存占用多大?和 python 比呢?
    fbu11
        40
    fbu11  
       14 小时 10 分钟前
    不如直接上 kotlin 得了
    var
        41
    var  
       12 小时 58 分钟前
    这一点来说 C# 已经完成学习模仿再超越了。
    sky3hao9
        42
    sky3hao9  
       7 小时 0 分钟前
    别再整语法糖了, 累了
    ysy950803
        43
    ysy950803  
       3 小时 43 分钟前
    Pava ?哈哈哈!
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1411 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:44 · PVG 00:44 · LAX 09:44 · JFK 12:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.