1.1 Java怎么还在变

编程语言就像生态系统一样,新的语言会出现,旧语言则被取代,不同的语言有不同的适用方面。

  • C和C++运行时占用资源少,常用于构建操作系统和各种嵌入式系统;但构建的程序安全性不佳,容易导致程序意外崩溃,暴露安全漏洞;
  • Java和C#等安全型语言常用于业务应用开发;

在过去15年的时间里,Java使用占比较高,编程语言的流行度详见TIOBE排行榜

1.1.1 Java在编程语言生态系统中的位置

编程语言始终聚焦于更快、更为简洁、更易于维护的方式解决现有或者新的编程问题。

  1. 早期支持互联网applet和嵌入式应用,使Java在市场中占有一席之地;
  2. 随着机器性能提高,程序员时间更为宝贵,加上面向对象模型的大受欢迎,Java变得更为流行;
  3. Java编译成JVM字节码,一次编写,到处运行,扩展支持Scala或Groovy运行;

Java 8提供了更多的编程概念和工具,下面探讨三个编程概念背后的思想:

  1. 流处理;
  2. 行为参数化;
  3. 纯函数;

1.1.2 流处理

流是一系列数据项,一次只生成一项。

程序从输入流中读取数据项,处理后将数据项写入输出流。

一个程序的输出流可以作为另一个程序的输入流。

Linux/Unix中的管道|,连接指令,起始从标准输入stdin读取数据,最终把结果写入标准输出stdout。

例如cat file1 file2 | tr "[A-Z]" "[a-z]" | sort | tail -3

Java 8在java.util.stream中添加了Stream API,通过方法链接,形成复杂的流水线。

1.1.3 用行为参数化把代码传递给方法

在Unix示例中,基于sort命令使用自定义排序。

Java8之前,定义一个新类,实现排序方法,使用新类对象排序。

class Xxx {
    public int compareUsingCustomerId(String inv1, String inv2) {
    
    }
}
  1. 使用函数引用Xxx::compareUsingCustomerId;
  2. 若函数只使用一次,写成lambda表达式使用;

1.1.4 并行与共享的可变数据

纯函数/无副作用函数/无状态函数:不修改共享的可变数据,方便并行处理。

因为同步迫使代码按照顺序执行,与并行处理的宗旨相悖。

行为参数化和没有共享的可变数据是函数式编程范式的基石。

1.1.5 Java需要演变

Java的演变:

  1. 引入泛型,使用List而不只是List,能在编译时发现更多错误,且代码更易读;
  2. 使用for-each循环,而不用暴露Iterator迭代器写法;
  3. Java8的函数式编程,以及Stream API。

Java 8的演变反映了从之前侧重改变现有值的经典面向对象思想,转向函数式编程领域

语言需要不断改进以跟进硬件的更新或满足程序员的期待。

引用

  1. TIOBE排行榜
posted @   蒋智  阅读(7)  评论(0)    收藏  举报
编辑推荐:
· MySQL索引完全指南:让你的查询速度飞起来
· 一个字符串替换引发的性能血案:正则回溯与救赎之路
· 为什么说方法的参数最好不要超过4个?
· C#.Net 筑基-优雅 LINQ 的查询艺术
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
阅读排行:
· 我用这13个工具,让开发效率提升了5倍!
· Coze工作流实战:一键生成鸡汤视频——厉害的人,早已戒掉情绪
· 商品中心—15.库存分桶扣减的技术文档
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
· C++服务开发环境-万事开头难
点击右上角即可分享
微信分享提示

目录导航