目前市场上主流的稳定版当然还得属Java 8和Java 11,而目前大部分公司的生产环境还是Java 8居多。
所以如果从自学角度出发,我觉得这两个版本都OK,其他中间的一些比如Java 9、Java 10这些非稳定版就不用考虑了。
Java11 vs Java8

Java 11相对于Java 8确实有一部分进化,除了有很多内部的升级(比如开销和时延更低的GC、TLS1.3加持等等)之外,对于初学使用者来说也有一些语言使用层面的进化。
变量类型

新版Java引入了一个全新的动态类型关键字var,用var来定义的局部变量不用写具体类型,编译器能根据=右边的实际赋值来自动推断出变量的类型:

var name = "lukis-tsai";
var list = List.of("lukis", "tsai", "handsome");
// var 在for循环更加简单,在处理一些复杂的结构时也更简洁,如: List<List<String>>
for(var item : list) {System.out.println(item);
}

1 var只能在方法里定义,不允许定义类的成员变量

2 var定义的变量需要初始化,一旦赋值后,重新赋不同类型的值是不行的

3 var每次只能定义一个变量,不能复合声明变量
官方HTTP Client加持

现在java11自带HTTP Client了,位于java.net.http包下,支持发送同步、异步的HTTP请求

同步请求:

var request = HttpRequest.newBuilder().uri( URI.create("https://blog.csdn.net") ).GET().build();

// 同步请求方式,拿到结果前会阻塞当前线程

var httpResponse = HttpClient.newHttpClient().send( request, HttpResponse.BodyHandlers.ofString());

异步请求

CompletableFuture<String> future = HttpClient.newHttpClient().sendAsync( request, HttpResponse.BodyHandlers.ofString() ).thenApply( HttpResponse::body );
System.out.println("摸鱼划水喝茶....");
future.get();

String处理增强

新版字符串String类型增加了诸如:isBlank()、strip()、repeat()等方便的字符串处理方法

String myName = " lukis-tsai ";System.out.println( "  ".isBlank()); // true
System.out.println( "  ".isEmpty()); // falseSystem.out.println( myName.strip());         // 去除空格
System.out.println( myName.stripLeading());  // 去除左空格
System.out.println( myName.stripTrailing() ); // 去除右空格
System.out.println( myName.repeat(2));       //  lukis-tsai  lukis-tsai

集合增强

主要是增加了诸如of()和copyOf()等方法用于更加方便的创建和复制集合类型

var list = List.of( "lukis", "tsai", "handsome" );
var conpyList = List.copyOf(list);
System.out.println(list);     // 打印 [lukis, tsai, handsome]
System.out.println(conpyList); // 打印 [lukis, tsai, handsome]var set = Set.of("lukis","tsai");
var copySet = Set.copyOf(set);
System.out.println(set);      // 打印 [lukis, tsai]
System.out.println(conpySet);  // 打印 [lukis, tsai]var map = Map.of("lukis","handsome","huahua","pretty");
var conpyMap = Map.copyOf(map);
System.out.println(map);      // 打印 {lukis=handsome, huahua=pretty}
System.out.println(copyMap);  // 打印 {lukis=handsome, huahua=pretty}

函数式编程增强

例如Stream 流增加了诸如takeWhile()和dropWhile()的截止结算方法

var list = List.of( "lukis", "huahua", "kimi" );// 从集合中依次删除满足条件的元素,直到不满足条件为止
var subList = list.stream().dropWhile( item -> item.equals("kimi") ).collect(Collectors.toList());
System.out.println(subList);  // 打印 ["lukis", "kimi"]// 从集合中依次获取满足条件的元素,知道不满足条件为止
var subList1 = list.stream().takeWhile( item -> item.equals("huahua") ).collect(Collectors.toList());
System.out.println( upListSub2 ); // 打印 ["huahua"]

文件读写增强
1、Files类增强

心心念的直接能把文件内容读取到String以及String回写到文件的功能终于支持了,可以通过Files类的静态方法writeString()和readString()完成

Path path = Paths.get("/Users/lukis/test.txt");
String content = Files.readString(path, StandardCharsets.UTF_8);
System.out.println(content);
Files.writeString( path, "王老七", StandardCharsets.UTF_8 );

2、InputStream增强

InputStream则增加了一个transferTo()方法,直接将数据丢到OutputStream去:

InputStream inputStream = new FileInputStream( "/Users/lukis/test.txt" );
OutputStream outputStream = new FileOutputStream( "/Users/lukis/test2.txt" );
inputStream.transferTo( outputStream );

支持源文件直接运行

这时候可以直接用java指令去运行Java源文件,直接省去以前javac编译源文件的过程

java HelloWorld.java

Java8 vs Java11相关推荐

  1. 1. Java8 vs Java11

    目前市场上主流的稳定版当然还得属Java 8和Java 11,而目前大部分公司的生产环境还是Java 8居多. 所以如果从自学角度出发,我觉得这两个版本都OK,其他中间的一些比如Java 9.Java ...

  2. 听说Java8和java11要收费了?程序员还有没有活路了

    9月20多号Oracle发布了java 11,同时也发布后续更新策略 突然发现,诶,java 11是收费的,诶,java 8好像也要收费了呢 那这是怎么收费的呢? 我查了一些资料,和一些别人整理的解读 ...

  3. java8升级java11到底敢不敢?

    2019独角兽企业重金招聘Python工程师标准>>> JDK 11 reached General Availability on 25 September 2018. JAVA_ ...

  4. jaxb java_jaxbapi的java8到java11迁移问题

    jakarta.xml.bind jakarta.xml.bind-api 2.3.3 org.glassfish.jaxb jaxb-runtime 2.3.2 当我们使用运行API项目时,一切都正 ...

  5. 再见了Java8,Java17:我要取代你

    此前,Java 之父高斯林曾经发文表示可以尝试升级到 JDK17,因为JDK17是一个比 Java8 更好的版本,发文如下: 简单翻译下就是: "对于那些仍然坚持使用 JDK8 的人,有一个 ...

  6. Spring Boot Serverless 实战系列“部署篇” | Mall 应用

    作者:西流 关注[Serverless]公众号,后台回复 "学习" 即可获得 Serverless 技术资源包! 导读: Spring Boot 是基于 Java Spring 框 ...

  7. 通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式)

    quic最先是由google提出并完善的,18年google cloud支持了quic协议,我尝试在google上部署一套自己的应用,并使其支持quic协议 google的文档还是非常完善的,只是类似 ...

  8. maven 项目管理和构建工具

    mvn 1. maven 是什么 2. maven能解决什么问题 3. maven 需要配置和下载 4. 使用eclipse创建maven项目 5. xml依赖配置 作用范围 6. maven的常用命 ...

  9. Java基础-Java概述(第一、二章)

    Java基础 文章目录 Java基础 1. Java概述(第一.二章) 1.1 Java基本介绍 1.2 Java的运行机制及运行过程 1.3 Java环境配置 1.4 Java快速入门 1.5 Ja ...

最新文章

  1. PostgreSql与sqlserver对比杂记
  2. Linux的经常使用命令(1) - 指定执行级别
  3. openMP 并行编程 基础
  4. 第七周实践项目3 负数把正数赶出队列
  5. java 定义一组常量用什么最好_Java语言中定义常量注意事项解析
  6. Airflow 中文文档翻译和改进活动 | ApacheCN
  7. JavaScript之BOM对象(JS函数作用域、window、history、location对象)
  8. 内核如何为系统调用的参数传递参数
  9. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)签到题F Fireworks
  10. matlab简单分析模拟滤波器 IIR
  11. centos 虚拟机 使用串口_vmware中的centos怎样扩充空间
  12. Pyhon3 批量合并哔哩哔哩缓存的m4s视频文件
  13. 内存Available 是怎么计算的
  14. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、conf.int参数为曲线添加置信区间、pval参数添加分组生存曲线p值
  15. DevExpress 报表 格式化
  16. Starbound正式版的Mod制作(二)nbsp;…
  17. 切换无线网卡失败服务器提示,电脑无线网卡切换为AP模式时提示ICS启动失败的解决方法...
  18. 发现一个美女,在黑夜中独自YY.
  19. Ubuntu20.02安装TPLink WDN7200H无线网卡
  20. android+高德地图教程,Android高德地图开发(三)地图简单操作

热门文章

  1. Android SearchView
  2. 【麦肯锡系列阅读笔记】学会提问
  3. 万字长文--详解AJAX(快速入门)
  4. 促双碳|智慧能源管理解决方案
  5. 为什么要在油气行业中应用 IoT?这 8 个应用场景告诉你 IoT 在油气行业中可以做什么...
  6. mysql replication slave_MySQL Replication,主从同步( Master-Slave)
  7. pytorch怎么下载?pytorch在哪里下载?
  8. vue 中 mixins 的使用
  9. 电脑c盘变红满了的清理方法
  10. 使用puppeteer 提示Error: Failed to launch the browser process解决办法