Java 11
Java11中针对HTTP Client有大的升级改动,本着该系列博客是面向Java Web编程者的,我觉得需要来介绍一下其标准 HTTP Client的升级,顺便介绍一下其他的新特性。
本文为Java 11 新特性介绍的学习总结
HTTP Client Update
HTTP Client在Java 9中引入并进行不断的升级,终于在Java 11中完成了标准化。现在的HTTP Client完全支持异步非阻塞。
新版的HTTP Client包名改为java.net.http
,并提供了对HTTP/2等业界前沿标准的支持(Goodbye,HttpURLConnection!),并在这种支持中广泛使用了Java 9中引入的Flow API,体现了响应式编程的思想,提高了HTTP标准类库的拓展性。
HttpClient client = HttpClient.newBuilder()
.version(Version.HTTP_2)
.followRedirects(Redirect.SAME_PROTOCOL)
.proxy(ProxySelector.of(new InetSocketAddress("www-proxy.com", 8080)))
.authenticator(Authenticator.getDefault())
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
Advanced Java launcher
Java 11中的Java启动器能够支持运行单一文件的Java源代码,源代码会直接在内存中编译,然后在解释器中执行,但是所有的类需要在一个文件中定义。
Java 10中就支持启动*.class文件、*.jar中的主类、模块主类,而Java 11支持直接指定文件中的类。如果HelloWorld.java中包含一个hello.World类,以下命令将启动该类:
javac HellowWorld.java
java -cp . hello.World
其同于:
java HelloWorld.java