想从 Java 语法练到有边界检查的小业务,不一定先搭 Spring Boot。Homann Software 新公开的一份英文教程,把购物报价拆成基础版和结构版,练习包免费直下,附 MIT 许可。在 JDK 25 下编译运行了两版程序,包内的 27 项基础检查和 23 项结构版检查全部通过。
这份资料免费到哪一步
这是 Enrico Homann 在作者原站发布的入门教程,不是 Oracle 官方课程。教程原页标题为 Java for Beginners in 2026: From Your First Program to Tested Business Rules。页面发布元数据换算为北京时间是 2026 年 11 月 6 日。
- 获取:原页末尾 Sources and downloads 提供下载,也可直接打开作者域名下的 Java beginner lab ZIP。下载未要求注册、绑卡或兑换码。
- 内容:英文图文教程、15 个 Java 源文件、两阶段运行说明,以及可编辑的 PlantUML、BPMN 文件。
- 免费边界:公开阅读与下载的学习材料,不是带证书、学分的课程项目。页面未标限免截止日期,当前可直接下载。
- 运行门槛:按作者完整教程及给定编译命令使用 JDK 25 或更新版本;Hello.java、Basics.java 使用 Java 25 已正式支持的精简源文件、实例 main 与 IO.println,无需 --enable-preview。这个门槛针对完整教程,不表示两阶段报价类本身只能在 Java 25 上编写。练习本身不依赖 Maven、外部库、数据库、Docker 或 API Key。
同一笔报价,分两次理解 Java
第一阶段从精简的 Hello.java 开始,再用 Line、Quote 两个 record 表达商品行和报价。金额统一用欧分整数表示,商品小计低于 5000 欧分时收 490 欧分运费,达到 5000 欧分就免运费。这是教程虚构的业务规则,不是某家商店的收费标准。
它没有只测一笔正常订单。源码里的检查覆盖 4999、5000、5001 三个边界,还会拒绝空购物篮、负价格和整数溢出。零元商品可以存在,但仍可能产生运费。比起只输出一个总价,这些条件更接近业务代码真正需要说清的地方。
第二阶段放在 structured 目录。同一套报价逻辑加上 package、enum、interface 和构造器传参。配送方式变成标准、加急、自提三种;加急固定收 990 欧分,自提不收运费。Checkout 接收 ShippingPolicy,检查程序会换上另一种运费实现,验证替换确实生效。这里没有 Spring 容器,依赖就是普通构造器参数。
运行核验:JDK 25 下两版检查都通过
此次在 Linux 环境使用 Eclipse Temurin JDK 25,运行的是从作者 ZIP 解压的现成源码,没有改写测试。实际版本输出如下:
openjdk 25.0.5 2026-10-20 LTS
OpenJDK Runtime Environment Temurin-25.0.5+8 (build 25.0.5+8-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.5+8 (build 25.0.5+8-LTS, mixed mode, sharing)
javac 25.0.5
解压目录中的第一阶段命令如下。out 已存在时无需再创建:
mkdir -p out
javac --release 25 -d out Line.java Quote.java Checkout.java Shop.java CheckoutTest.java
java -cp out Shop
java -cp out CheckoutTest
实际 Shop 输出原文:
Subtotal: 2800 cents
Shipping: 490 cents
Total: 3290 cents
随后检查程序的末行原文:
27 checks passed
第二阶段从解压目录进入 structured,单独编译到自己的 out。两版不要混用 classpath:
cd structured
mkdir -p out
javac --release 25 -d out @sources.txt
java -cp out com.homannsoftware.shop.app.Shop
java -cp out com.homannsoftware.shop.StructuredTest
实际结构版 Shop 输出原文:
STANDARD: 3290 cents
EXPRESS: 3790 cents
COLLECTION: 2800 cents
结构版检查程序的末行原文:
23 structured checks passed
这 50 项是作者练习包自带的可执行检查,不是新增的独立测试集,也不是 JUnit 测试报告。这里验证了当前下载包在上述 JDK 环境下的运行结果,没有验证支付、并发或生产系统能力。
许可允许改代码,不等于整篇网页随意转载
ZIP 根目录的 LICENSE 明确写有 MIT License,版权标识为 Copyright (c) 2026 Homann Software。对该软件及随附文档,MIT 允许使用、复制、修改和分发,也允许商业使用;分发副本或实质部分时须保留版权声明与许可文本,作者不提供担保。
这项核验针对下载包,不能据此把网页全文、页面插图一并当成 MIT 授权内容。文章保留原作者入口,不搬运教程全文或图片。
包内 UML 和 BPMN 用来解释结构与流程,其中 BPMN 声明为不可执行流程。报价程序也没有税费计算、支付、库存、持久化或配送下单功能,下载到的不是一套可上线的商城。
一起交流
分享你的思考,让讨论更进一步。