Java 标签

云原生时代,Java 的危与机

  |   0 评论   |   0 浏览

Java 诞生距今已有 25 年,但它仍然长期占据着“天下第一”编程语言的宝座。只是其统治地位并非坚不可摧,反倒可以说是危机四伏。云原生时代,Java 技术体系的许多前提假设都受到了挑战,目前已经有可预见的、足以威胁动摇其根基的潜在可能性正在酝酿。同时,像 Golang、Rust 这样的新生语言,以及 C、C++、C#、Python 等老对手也都对 Java 的市场份额虎视眈眈。面对危机,Java 正在尝试哪些变革?未来,Java 是会继续向前、再攀高峰,还是由盛转衰? 在今天由极客邦科技举办的QCon全球软件开发大会2020(深圳站)上,远光软件研究院院长、《深入理解 Java 虚拟机》系列书籍作者周志明发表了主题演讲《云原生时代的 Java》,以下内容为演讲整理。 今天,25 岁的 Java 仍然是最具有统治力的编程语言,长期占据编程语言排行榜的首位,拥有一千二百万的庞大开发者群体,全世界有四百五十亿部物理设备使用着 Java 技术,同时,在云端数据中心的虚拟化环境里,还运行着超过两百五十亿个 Java 虚拟机的进程实例 (数据来自Oracle的WebCast)。 以上这些数据是 ....

Java泛型类型擦除

  |   0 评论   |   0 浏览

1.Java泛型的实现方法:类型擦除 大家都知道,Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。 如在代码中定义 List<Object>和 List<String>等类型,在编译后都会变成 List,JVM看到的只是List,而由泛型附加的类型信息对JVM是看不到的。Java编译器会在编译时尽可能的发现可能出错的地方,但是仍然无法在运行时刻出现的类型转换异常的情况,类型擦除也是Java的泛型与C++模板机制实现方式之间的重要区别。 1-2.通过两个例子证明Java类型的类型擦除 例1.原始类型相等 public class Test { public static void main(String[] args) { ArrayList<String> list1 = new ArrayList<Str....

Java 14 新特性

  |   0 评论   |   0 浏览

发布了名为Java 14的Java新版本,其中包括许多新功能,工具,安全性,调试和更新的文档方面的改进。 但是,Oracle还向您提供Java的较旧版本,因为它具有向后兼容性,因此您以前的代码仍可以在较旧的版本上运行,并且Java 14的语法与Java 8或9并不是完全不同的,它只是新版本 对前一个进行了一些改进 1. switch表达式优化 Switch Expression (JEP 361) 一直以来,Java都是使用类C++、C的switch表达式,在Java 12,13中对switch表达式做了一些优化,作为预览版本引入,直到Java14正式引入进来。 让我们来看一下,在Java 14之前如何写switch表达式。 tags.switch (day) { case 1: System.out.println("Let's meet!"); break; case 2: break; case 3: System.out.println("Let's meet!"); break; case 4: break; case 5: System.out.println("Let's....

Java 8 过滤两个list的相同项

  |   0 评论   |   0 浏览

假如有两个list,list1=[1, 2, 4, 5],list2=[2, 4, 6, 7],求相同项 方法一 List<Integer> availablePoiList = requestPoiList.stream().filter(requestPoi -> memberPoiIdList.stream().anyMatch(availablePoi -> availablePoi.equals(requestPoi))).collect(Collectors.toList()); 方法二 List<Integer> availablePoiList = requestPoiList.stream().filter(memberPoiIdList::contains).collect(Collectors.toList()); 第二种方法简洁了很多,刚开始不会用lambda,写出来比较长,后面找到了contains方法。