你提到 Java 11,我可以帮你整理一个 Java 11 的全面概览,涵盖新特性、安装、开发注意点和使用场景。下面是详细内容:
一、Java 11 简介
- 发布时间:2018 年 9 月
- 类型:长期支持版本(LTS,Long-Term Support)
- 特点:
- 移除了一些旧 API(如
Java EE和CORBA模块) - 引入新的标准 API 和工具
- 更注重 性能、安全和现代化开发体验
- 移除了一些旧 API(如
二、Java 11 新特性(重点)
1. 字符串增强
String新方法:isBlank()→ 判断是否为空白lines()→ 按行分割字符串为 Streamstrip() / stripLeading() / stripTrailing()→ 去除空白(比 trim 更智能)repeat(int)→ 重复字符串
示例:
String text = " Hello\nWorld ";
text.lines().forEach(System.out::println);
System.out.println(" ".isBlank()); // true
2. 集合增强
List.of() / Set.of() / Map.of()→ 轻松创建不可变集合
List<String> list = List.of("A", "B", "C");
Map<String, Integer> map = Map.of("x", 1, "y", 2);
3. Lambda 与 Optional 改进
Optional.isEmpty()→ 检查是否为空- 支持更灵活的流式操作
4. 新 HTTP 客户端 API
- 完全替代
HttpURLConnection - 支持异步请求和 HTTP/2
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
5. 局部变量类型推断(var)改进
- Java 10 引入的
var在 Java 11 中可用于 lambda 参数(部分场景)
var list = List.of(1, 2, 3);
list.forEach((var item) -> System.out.println(item));
6. JEP 321:HTTP Client 标准化
- 支持同步和异步请求
- 支持 WebSocket
7. 运行时动态类文件打包
- 可以直接用
java命令运行单个.java文件
java HelloWorld.java
- 无需先编译成
.class
三、Java 11 移除或弃用的特性
Java EE模块(java.xml.bind,java.activation等)CORBA模块Pack200工具
开发中如果用到这些,需要单独引入依赖(Maven 或 Gradle)。
四、安装与使用
- 下载 JDK 11(推荐 OpenJDK 或 Oracle JDK)
- 配置环境变量
JAVA_HOME - 验证:
java -version
# java version "11.0.x"
五、适合使用场景
- 企业级应用(LTS 支持)
- Web 服务、微服务开发
- 新项目可以直接使用新 API,提高开发效率
- 弃用老旧模块,减少维护负担
发表回复