先了解这张认证
Oracle Certified Professional: Java SE 17 Developer (1Z0-829) 是 Oracle 当前主推的 Java 专业级认证,对应 Java 17 LTS。Java 17 是 Spring Boot 3.x、Jakarta EE 10、Quarkus 3 的最低要求版本 — 换句话说,2024 年之后所有新的企业 Java 项目基本都跑在 Java 17 或 21 上,1Z0-829 考的就是"现代 Java 开发者应该会什么"。
考试 50 题、90 分钟、68% 通过线、$245 USD。对比老的 1Z0-808(Java 8 入门级,70 题/150 分钟/65%),1Z0-829 题量少但时间更紧 — 平均每题不到 2 分钟,而且考点深度完全不同。它不再是"能看出这段代码编译报错"的语法题,而是"Records 的 canonical constructor 里能不能修改字段"、"Sealed interface 的 permits 子类是否必须在同一个模块里"、"Pattern matching for instanceof 的作用域规则"这类真正考 Java 17 新特性掌握度的题。
考纲覆盖 17 个主题域,重点集中在:Records(紧凑构造、不可变性)、Sealed Classes(permits、与 pattern matching 的配合)、Pattern Matching for instanceof、Switch Expressions(yield、多 label case、穷尽性检查)、Text Blocks、Lambdas & Streams 深度用法、Modules(JPMS:requires、exports、opens、services)、Concurrency(CompletableFuture、并发集合、Thread 新 API)、NIO.2、Localization、Secure Coding。Modules 和 Concurrency 是失分重灾区。
和 1Z0-808(Java 8 OCA)的本质区别:808 是入门证,证明你"会 Java 语法";829 是专业证,证明你"能写现代 Java 生产代码"。Oracle 从 Java 11 开始取消了"Associate + Professional"两级结构,829 直接就是 OCP 级别,没有预备证要求 — 但实战上没有 2 年以上 Java 经验硬考 829 通过率很低。
考试档案
- 考试代码
- 1Z0-829
- 发证机构
- Oracle
- 题型
- 单选题 / 多选题
- 考试语言
- English / 日本語
- 证书有效期
- 长期有效
- 考试费
- $245
你会学到的技能
学完能做什么
- 获得 Oracle 1Z0-829 官方认证
- 掌握考试核心领域的知识和最佳实践
- 具备实际项目中应用相关技术的能力
- 提升 Oracle 技术领域职业竞争力
适合这样的你
- Oracle 技术相关从业人员
- 希望获得 Oracle 1Z0-829 认证的 IT 专业人员
- 数据库管理员和开发人员
- 云架构师和运维工程师
- 希望提升 Oracle 技术能力的从业者
开始前需要什么
- 具备相关 Oracle 技术的基础知识
- 建议有一定的实践经验
- 了解基本的数据库或云计算概念
一步一步,准备好考试
7 个章节 · 学习路径
安排你的备考
- 课程学习时长
- 20h
- 有相关实操经验
- 6-10 周
- 从基础开始
- 16-24 周
- 建议日投入
- 2-2.5h
备考支持
- 7 个系统化学习章节,覆盖考试核心领域
- 148 精选练习题,每题附详细解析
- 仿真模拟考试(50 题/90 分钟)
- 错题本 + 智能复习,薄弱环节针对性突破
- 学习进度可视化追踪
- 同步 Oracle 官方最新考纲
1. 第一阶段:Java 17 新特性专项(3-4 周)
这是 829 和 808 最大的分水岭。必须吃透 Records(紧凑构造器能校验但不能赋值给非 final 字段外的任何东西,因为 canonical constructor 自动赋值)、Sealed Classes(permits 子类必须 final/sealed/non-sealed 三选一,且必须和 sealed 类在同一模块里)、Pattern Matching for instanceof(绑定变量的作用域按流敏感分析)、Switch Expressions(yield 用于代码块返回、穷尽性检查强制 default 或覆盖所有 sealed 子类)、Text Blocks(缩进计算规则、转义 \s 保留空格)。建议直接读 JEP 文档(JEP 395 Records、JEP 409 Sealed、JEP 406 Pattern Matching),比二手教程准确得多。
2. 第二阶段:JPMS 模块系统(2-3 周)
829 的失分重灾区。必须彻底搞懂 module-info.java 的五大指令:requires(可传递 transitive、静态 static)、exports(可限定 to 某模块)、opens(反射访问)、uses(服务消费)、provides...with(服务提供)。重点区分:exports vs opens(编译期 vs 运行期反射)、automatic module vs unnamed module(classpath 回退行为)、split package 为什么在模块系统里被禁。配合 jdeps、jlink 工具实际操作一遍,不要只看文档。
3. 第三阶段:Streams + Concurrency 深度(3-4 周)
Streams 要会写 collect(groupingBy(..., counting()))、flatMap 展开嵌套结构、reduce 的三参数版本(identity、accumulator、combiner)。Concurrency 考点集中在 CompletableFuture(thenApply vs thenCompose、exceptionally vs handle)、ConcurrentHashMap 的 compute/merge 原子操作、ExecutorService 的 shutdown vs shutdownNow、Fork/Join 框架。Thread 的 interrupt 机制每次必考一题。
4. 第四阶段:Enthuware 模考冲刺(2-3 周)
Enthuware 的 OCP 17 题库(约 $15 USD)仍然是金标,题目难度和真考几乎一致(有些还更难)。建议做 6-8 套模考,稳定 75% 以上再去考。重点做错题复盘,每道错题在 IDE 里跑一遍验证,用 jshell 快速测试 Records/Sealed 的边界行为。考前 3 天只刷错题,不做新题。
这张认证的职业价值
这张证值不值,完全取决于你所在的技术栈方向。
值得考的人:已经在写 Java 2-5 年的中级开发者,团队正在从 Java 8/11 迁移到 Java 17,或者想跳槽到一个明确使用 Spring Boot 3 的团队。1Z0-829 能强制你系统学完 Records、Sealed Classes、Pattern Matching 这些新特性 — 很多人平时写 Java 17 的代码,但其实只是用 Java 17 跑 Java 8 的写法。考完这张证至少能保证你真的在用"Java 17 的方式"写代码,这在技术面试的 code review 环节很加分。
犹豫值得的人:自学转码者。问题不是证本身,而是现代 Java 岗位几乎全部要求 Spring Boot 3 + JPA + 微服务实战经验。你花 3 个月考 829 不如花 3 个月做 2 个 Spring Boot 3 完整项目 + 部署到 AWS/GCP。招聘方 100% 更看重后者。如果你已经有项目经验,再补这张证会锦上添花。
不值得考的人:非 Java 技术栈的工程师(Python/Go/Node 主栈)、资深 Java 架构师(10+ 年经验,简历不缺背书)、目标是做 Android 的开发者(Android 用的是 Java 语法子集 + Kotlin,这张证考的 JPMS/CompletableFuture 基本用不到)。
和 1Z0-808 的取舍:如果你是 2025-2026 年才开始学 Java 的新人,直接冲 829,跳过 808。808 考的 Java 8 语法在现代企业里虽然还在用(存量系统),但已经不是"值得专门考证"的方向。唯一例外是你目标进澳洲四大行/政府老系统部门 — 那里 808 的存量认知度仍然更高。
Spring 认证 vs Oracle Java 认证:VMware 的 Spring Certified Professional(Spring Certified Professional 2024)在现代 Java 就业市场上比 Oracle Java 认证更有用。如果你只能选一张证,优先 Spring;如果能考两张,先 Spring 再 829。
- 澳洲
- AUD 110,000 – 160,000
- 美国
- USD 120,000 – 180,000
- 中国
- CNY 250,000 – 500,000
- 新加坡
- SGD 90,000 – 140,000
备考时,做好这些事
- **50 题 / 90 分钟 = 每题 108 秒**:比 808 紧张得多。看到超过 20 行的代码题先 mark 跳过,第一遍优先做新特性的概念题和短代码题攒分,长题第二遍回头做。
- **OnVUE 在线监考**:1Z0-829 支持线上监考,房间 360 度扫描、桌面只能有白纸+笔。网络断线超过 30 秒可能判作弊,务必用有线网络+备用热点。
- **jshell 是你的备考神器**:Java 17 的 jshell 支持所有新特性,Records、Sealed、Pattern Matching 的边界行为用 jshell 5 秒就能验证,比打开 IntelliJ 快得多。备考全程让 jshell 常驻终端。
- **重点刷 Modules 和 Concurrency**:这俩是 829 失分率最高的两个域。Enthuware 的 Last Day 模式里这两个域错的要单独整理到错题本,每题都在 IDE 里真实跑一遍。
- **考前 3 天读 JEP 而不是教材**:JEP 395(Records)、JEP 406(Pattern Matching)、JEP 409(Sealed Classes)、JEP 361(Switch Expressions)这几篇 JEP 文档比任何二手教材都精确。考题里的"陷阱"几乎都能在 JEP 的 Specification 章节里找到原话。
这些误区要避开
- **Sealed classes 必须和 permits 子类在同一模块** — 如果项目未模块化(unnamed module),permits 的子类必须在同一包里;如果模块化了,必须在同一命名模块里。跨模块的 sealed 继承是编译错误。另外 permits 子类三选一:`final`(不可再继承)、`sealed`(继续限制)、`non-sealed`(开放继承)。漏掉这三个修饰符之一直接编译失败。
- **Record canonical constructor 的赋值规则** — 紧凑构造器(compact constructor)里可以校验和修改参数(`if (x < 0) throw ...; x = Math.abs(x);`),但**不能**显式赋值给 this 的字段(`this.x = x;` 是编译错误),因为 JVM 会在构造器末尾自动做所有字段赋值。这和普通类的构造器行为完全相反,考试必考。
- **Pattern matching for instanceof 的作用域是流敏感的** — `if (obj instanceof String s && s.length() > 0)` 里的 `s` 只在 && 之后的分支和 if body 内可见;`if (!(obj instanceof String s)) return; // s here is visible!` 这种反向判断后 s 反而在下面可见。考题经常用 else 分支或 return 后的代码测试你对"作用域穿透"的理解。
- **Modules vs Classpath 的回退行为** — 模块化 JAR 放到 classpath 上会变成 unnamed module,所有 exports 失效(等于全开放);非模块化 JAR 放到 module path 上会变成 automatic module,模块名从 MANIFEST 的 Automatic-Module-Name 或文件名推导。这俩方向的混用规则每次必考一道理解题。
- **var 的局部类型推导限制** — `var x = null` 编译错误(无法推导)、`var arr = {1,2,3}` 编译错误(数组初始化器必须明确类型)、`var` 不能用于 lambda 参数以外的方法参数、不能用于字段、不能用于方法返回类型。但 `var` **可以**用于 lambda 参数(Java 11+)且此时可以加注解:`(@NonNull var x) -> x.length()`。
- **Switch expression 的穷尽性检查** — 对 sealed 类型做 switch 表达式时,如果 permits 的所有子类都被覆盖,编译器不要求 default 分支;如果新增一个 permits 子类但没更新 switch,会编译报错。这是 sealed + switch 组合的核心价值。但对普通类型(如 int、String)做 switch 表达式,必须有 default 或覆盖所有 enum 常量。
- **CompletableFuture 的 thenApply vs thenCompose** — thenApply 接收 `Function<T, R>` 返回 `CompletableFuture<R>`;thenCompose 接收 `Function<T, CompletableFuture<R>>` 返回 `CompletableFuture<R>`(扁平化,类似 flatMap)。用错会导致 `CompletableFuture<CompletableFuture<String>>` 这种嵌套地狱。考题经常给一段链式调用让你选输出类型。
报名之前,你可能想问
1Z0-829 考试难度如何?
1Z0-829 考试包含约 50 道题,考试时间 90 分钟,需要达到 68% 的通过分数。建议系统学习并配合大量练习题备考。
考试费用和有效期是多少?
1Z0-829 考试费用为 $245 USD。Oracle 认证通常没有固定有效期,但建议定期更新以保持技术最新。
如何报名参加考试?
可以通过 Oracle University 官网或 Pearson VUE 考试中心报名。支持线上监考和线下考试中心两种方式。
听听学过的人怎么说
评价加载中…
我们团队正在从 Spring Boot 2 升 3,老板要求核心开发者都考 829。备考最大收获不是"通过考试"而是强制自己真的学完 Sealed Classes 和 Pattern Matching — 之前一直以为自己会,做模考发现根本没理解作用域规则。考完之后 code review 里能看出很多同事写的"Java 17 代码"其实还是 Java 8 的思路。
Tom H.
澳洲某保险公司 Senior Java Dev(4 年 Java 经验) · 82% · 10 周
国内大厂对 Oracle 认证的认可度不高,我考主要是因为要去新加坡面试。事实证明有用 — 新加坡的面试官在看到 OCP 17 之后,技术面直接跳过了基础轮,进入系统设计环节。这张证在海外求职的"信号价值"比国内强很多。
K. Wang
中国某互联网大厂 Java 技术专家 · 76% · 8 周
我踩过的最大坑是轻视 JPMS 模块系统 — 平时工作根本不用 module-info.java,我备考时也没怎么看,结果考试里模块题占了 8-10 题,错了一半。建议不管你工作中用不用模块,考前必须把 requires transitive、exports to、provides...with 这些指令练熟。
Ravi S.
印度 → 美国 H1B Java Dev · 71% · 12 周
从第一章,开始你的备考。
前 2 章免费试学 · 完整备考 $39 起