一.安装教程
下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
step 1
step 2
step 3
在山区网络不好......玩两把单机 回来继续安装
step 4
下载好的jdk,双击即可安装
建议更改安装位置
step 5
继续点击下一步安装,最后关闭即可
step 6
环境变量配置
右击【此电脑】,点击【属性】,选择【高级系统设置】
【高级】--> 【环境变量】
如果针对用户,可以 用户变量 配置,这里在系统变量配置全局
点击【新建】 配置 JAVA_HOME 确定即可
双击【Path】或单击【编辑】配置 Path
点击新增,输入 %JAVA_HOME%\bin,确定
jdk9后不需要配置CLASSPATH变量
step 7
验证jdk安装是否成功
打开【命令提示符】
方式1.
方式2. win+r
输入 java -version ,若出现java版本信息则说明安装成功,如下图:
二.新特性
地址:http://openjdk.java.net/projects/
jdk12(GA 2019/03/19)
189: | Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) | Shenandoah:低暂停时间垃圾收集器(实验性) |
230: | Microbenchmark Suite | Microbenchmark套房 |
325: | Switch Expressions (Preview) | 切换表达式(预览) |
334: | JVM Constants API | JVM常量API |
340: | One AArch64 Port, Not Two | 一个AArch64端口,而不是两个 |
341: | Default CDS Archives | 默认CDS档案 |
344: | Abortable Mixed Collections for G1 | G1的可流动混合收集 |
346: | Promptly Return Unused Committed Memory from G1 | 从G1中立即返回未使用的已提交内存 |
a--切换表达式,省去 break
switch (day) {
case SATURDAY, SUNDAY -> log.info("去旅游");
case TUESDAY -> log.info("上班");
case THURSDAY -> log.info("上课");
}
String whereTo = switch (day) {
case SATURDAY, SUNDAY -> "去旅游";
case TUESDAY -> "上班";
case THURSDAY -> "上课";
};
jdk11(GA 2018/09/25)
181: | Nest-Based Access Control | 基于嵌套的访问控制 |
309: | Dynamic Class-File Constants | 动态类 - 文件常量 |
315: | Improve Aarch64 Intrinsics | 改进Aarch64内在函数 |
318: | Epsilon: A No-Op Garbage Collector | Epsilon:无操作垃圾收集器 |
320: | Remove the Java EE and CORBA Modules | 移除Java EE和CORBA模块 |
321: | HTTP Client (Standard) | HTTP客户端(标准) |
323: | Local-Variable Syntax for Lambda Parameters | 本地变量Lambda参数 |
324: | Key Agreement with Curve25519 and Curve448 | 与Curve25519和Curve448的密钥协议 |
327: | Unicode 10 | Unicode 10 |
328: | Flight Recorder | Flight Recorder(飞行记录器),基于OS、JVM和JDK的事件 产生的数据收集框架 |
329: | ChaCha20 and Poly1305 Cryptographic Algorithms | ChaCha20和Poly1305加密算法 |
330: | Launch Single-File Source-Code Programs | 启动单文件源代码程序 |
331: | Low-Overhead Heap Profiling | 低开销堆分析 |
332: | Transport Layer Security (TLS) 1.3 | 传输层安全性(TLS)1.3 |
333: | ZGC: A Scalable Low-Latency Garbage Collector(Experimental) | ZGC:可扩展的低延迟垃圾收集器(实验性) |
335: | Deprecate the Nashorn JavaScript Engine | 弃用Nashorn JavaScript引擎 |
336: | Deprecate the Pack200 Tools and API | 弃用Pack200工具和API |
a--字符串加强
// 复制
"Java".repeat(3); // "JavaJavaJava"
//统计 行数
"A\nB\nC\nA\nB\nC".lines().count(); // 6
jdk10(GA 2018/03/20)
286: | Local-Variable Type Inference | 局部变量类型推断 |
296: | Consolidate the JDK Forest into a Single Repository | 将JDK林合并到单个存储库 |
304: | Garbage-Collector Interface | 垃圾收集器接口 |
307: | Parallel Full GC for G1 | G1的并行全GC |
310: | Application Class-Data Sharing | 应用程序类 - 数据共享 |
312: | Thread-Local Handshakes | 线程局部握手 |
313: | Remove the Native-Header Generation Tool (javah) | 移除本机头生成工具(javah) |
314: | Additional Unicode Language-Tag Extensions | 附加的Unicode语言 - 标记扩展 |
316: | Heap Allocation on Alternative Memory Devices | 替代存储器设备上的堆分配 |
317: | Experimental Java-Based JIT Compiler | 基于Java的实验JIT编译器 |
319: | Root Certificates | 根证书 |
322: | Time-Based Release Versioning | 基于时间的发布版本控制 |
a--使用局部类型----var关键词定义
var list = new LinkedList<String>();
jdk9
102: | Process API Updates | 处理API更新 |
110: | HTTP 2 Client | HTTP 2客户端 |
143: | Improve Contended Locking | 改进竞争锁定 |
158: | Unified JVM Logging | 统一JVM记录 |
165: | Compiler Control | 编译器控制 |
193: | Variable Handles | 可变句柄 |
197: | Segmented Code Cache | 分段代码高速缓存 |
199: | Smart Java Compilation, Phase Two | 智能Java编译,阶段二 |
200: | The Modular JDK | 模块化JDK |
201: | Modular Source Code | 模块化源代码 |
211: | Elide Deprecation Warnings on Import Statements | 导入语句的Elide 弃用警告 |
212: | Resolve Lint and Doclint Warnings | 解决Lint和Doclint警告 |
213: | Milling Project Coin | 铣削项目硬币 |
214: | Remove GC Combinations Deprecated in JDK 8 | 删除GC组合JDK 8中不推荐使用 |
215: | Tiered Attribution for javac | javac的分层归因 |
216: | Process Import Statements Correctly | 正确处理导入语句 |
217: | Annotations Pipeline 2.0 | 注释管道2.0 |
219: | Datagram Transport Layer Security (DTLS) | 数据报传输层安全性(DTLS) |
220: | Modular Run-Time Images | 模块化运行时图像 |
221: | Simplified Doclet API | 简化的Doclet API |
222: | jshell: The Java Shell (Read-Eval-Print Loop) | jshell:Java Shell(读取 - 评估 - 打印循环) |
223: | New Version-String Scheme | 新的Version-String Scheme |
224: | HTML5 Javadoc | HTML5 Javadoc |
225: | Javadoc Search | Javadoc Search |
226: | UTF-8 Property Files | UTF-8属性文件 |
227: | Unicode 7.0 | Unicode 7.0 |
228: | Add More Diagnostic Commands | 添加更多诊断命令 |
229: | Create PKCS12 Keystores by Default | 默认创建PKCS12密钥库 |
231: | Remove Launch-Time JRE Version Selection | 删除启动时JRE版本选择 |
232: | Improve Secure Application Performance | 提高安全应用程序性能 |
233: | Generate Run-Time Compiler Tests Automatically | 自动生成运行时编译器测试 |
235: | Test Class-File Attributes Generated by javac | 测试类文件属性由javac生成 |
236: | Parser API for Nashorn | Nashorn的解析器API |
237: | Linux/AArch64 Port | Linux / AArch64端口 |
238: | Multi-Release JAR Files | 多版本JAR文件 |
240: | Remove the JVM TI hprof Agent | 删除JVM TI hprof代理 |
241: | Remove the jhat Tool | 删除jhat工具 |
243: | Java-Level JVM Compiler Interface | Java级JVM编译器接口 |
244: | TLS Application-Layer Protocol Negotiation Extension | TLS应用层协议协商扩展 |
245: | Validate JVM Command-Line Flag Arguments | 验证JVM命令行标志参数 |
246: | Leverage CPU Instructions for GHASH and RSA | 利用GHASH和RSA的CPU指令 |
247: | Compile for Older Platform Versions | 编译较旧的平台版本 |
248: | Make G1 the Default Garbage Collector | 使G1成为默认垃圾收集器 |
249: | OCSP Stapling for TLS | 针对TLS的OCSP装订 |
250: | Store Interned Strings in CDS Archives | 在CDS存档中存储间隔字符串 |
251: | Multi-Resolution Images | 多分辨率图像 |
252: | Use CLDR Locale Data by Default | 默认使用CLDR区域设置数据 |
253: | Prepare JavaFX UI Controls & CSS APIs for Modularization | 为模块化准备JavaFX UI控件和CSS API |
254: | Compact Strings | 紧凑字符串 |
255: | Merge Selected Xerces 2.11.0 Updates into JAXP | 将选定的Xerces 2.11.0更新合并到JAXP |
256: | BeanInfo Annotations | BeanInfo注释 |
257: | Update JavaFX/Media to Newer Version of GStreamer | 将JavaFX / Media更新到更新版本的GStreamer |
258: | HarfBuzz Font-Layout Engine | HarfBuzzFonts-Layout Engine |
259: | Stack-Walking API | Stack-Walking API |
260: | Encapsulate Most Internal APIs | 封装大多数内部API |
261: | Module System | 模块系统 |
262: | TIFF Image I/O | TIFF图像I / O |
263: | HiDPI Graphics on Windows and Linux | Windows和Linux上的HiDPI图形 |
264: | Platform Logging API and Service | 平台记录API和服务 |
265: | Marlin Graphics Renderer | Marlin图形渲染器 |
266: | More Concurrency Updates | 更多并发更新 |
267: | Unicode 8.0 | Unicode 8.0 |
268: | XML Catalogs | XML目录 |
269: | Convenience Factory Methods for Collections | 集合的便利工厂方法 |
270: | Reserved Stack Areas for Critical Sections | 保留关键部分的堆栈区域 |
271: | Unified GC Logging | 统一GC记录 |
272: | Platform-Specific Desktop Features | 特定于平台的桌面功能 |
273: | DRBG-Based SecureRandom Implementations | 基于DRBG的SecureRandom实现 |
274: | Enhanced Method Handles | 增强的方法句柄 |
275: | Modular Java Application Packaging | 模块化Java应用程序打包 |
276: | Dynamic Linking of Language-Defined Object Models | 语言定义的对象模型的动态链接 |
277: | Enhanced Deprecation | 增强的弃使 |
278: | Additional Tests for Humongous Objects in G1 | G1中的对象中的附加测试 |
279: | Improve Test-Failure Troubleshooting | 改进测试失败故障排除 |
280: | Indify String Concatenation | 表示字符串连接 |
281: | HotSpot C++ Unit-Test Framework | HotSpot C ++单元测试框架 |
282: | jlink: The Java Linker | jlink:Java链接器 |
283: | Enable GTK 3 on Linux | 在Linux上启用GTK 3 |
284: | New HotSpot Build System | 新的HotSpot构建系统 |
285: | Spin-Wait Hints | 旋转等待提示 |
287: | SHA-3 Hash Algorithms | SHA-3哈希算法 |
288: | Disable SHA-1 Certificates | 禁用SHA-1证书 |
289: | Deprecate the Applet API | 弃用Applet API |
290: | Filter Incoming Serialization Data | 过滤传入的序列化数据 |
291: | Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector | 弃用并发标记扫描(CMS)垃圾收集器 |
292: | Implement Selected ECMAScript 6 Features in Nashorn | 在Nashorn中实现选定的ECMAScript 6功能 |
294: | Linux/s390x Port | Linux / s390x端口 |
295: | Ahead-of-Time Compilation | 提前编译 |
297: | Unified arm32/arm64 Port | 统一arm32 / arm64端口 |
298: | Remove Demos and Samples | 删除演示和示例 |
299: | Reorganize Documentation | 重新组织文档 |
a--JShell:工具像脚本语言一样来运行,在控制台启动 jshell ,获取或校验某些表达式的值,省去main方法测试。
如:
b--允许接口定义私有方法,私有方法可以作为通用方法放在默认方法中调用。