GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Javaslang 3.0 之路

2016 年 11 月 21 日

Javaslang 是一个开源的函数式库,为 Java 8 及以上提供了持久化的数据类型和函数式的控制结构,最近,它发布了 3.0 版本的路线图,这个路线图规划到了2017 年的3 月份:

Javaslang 是由软件开发者 Daniel Dietrich 所创立的,为了配合 Java 8 的早期发布版本,它的第一次发布是在 2013 年。它借助 Java 8 的 lambdas 表达式基于函数式的模式来创建各种新特性,其意图在于通过函数式的集合库替代 Java 的标准集合。

在最近 jOOQ(Java Object-Oriented Querying API)的一次采访中,Dietrich 阐述了为 Java 添加对象 - 函数式(object-functional)编程风格的愿景:

我认为很多用户对 Java 8 总体上是失望的,那些已经非常熟悉更高级语言的用户感觉会更加强烈。Java 语言的架构做得已经很好了。Java 8 带来了一些突破性的新特性,比如 Lambdas、新的 Stream API 和 CompletableFuture。但是,从 API 的角度来看,这些新的抽象仅仅是以一种很差的方式集成到了语言中。

对象 - 函数式编程并不是什么新的概念。在两个领域,它都达到了最佳,也就是面向对象编程和函数式编程。在 JVM 之上,Scala 是更好的可选方案之一。Java 的 Lambdas 是一个推动型的特性,借助它,我们就可以创建类似于 Scala 的 Javaslang API。

Michael Feathers R7K Research & Conveyance 的创立者和主管,他曾经发推文说,“OO 通过封装可变部分使代码易于理解,而 FP 通过最小化可变部分使代码易于理解”。

在此之前的 2.0 发布版本

2.0 版本关注与 Java 8 的互操作性。它有 1900 个提交,重要的特性包括:

  • 用于并发编程的新接口, Future 和 Promise;
  • 新的模式匹配 API;
  • 新的集合类型。

最近的一篇 Javaslang 博客文章阐述了如何使用新的模式匹配API,并预览了即将发布的2.1.0 版本所新增的API 方法:

2017 年 3 月将要发布 3.0 版本

尽管 3.0 版本的变更集合已经进行了规划,但是依然欢迎开发社区参与 Javaslang 的 Gitter 讨论,详细阅读正式的提议列表并参与项目的贡献

Dietrich 与 InfoQ 进行了交流,讨论了如何迈向 3.0 版本:

InfoQ:Javaslang 与其他函数式库的差异在哪里呢,比如 jOOλ StreamEx Cyclops

Daniel Dietrich :Javaslang 致力于将 Scala 中尽可能多的好东西带到 Java 语言中。这是独特的卖点。没有必要重复发明轮子,也没有必要为已经解决的问题创建新的概念。通过将功能调整至 Scala 的水平,我们会从中受益,原因如下:

  • Scala 背后的一些基本理念对于 Javaslang 来说也是有效的,比如类似的持久化集合层级;
  • 学习曲线比较平滑,对于已经熟悉 Scala 的用户来说,使用 Javaslang 会非常容易。Scala 文档中的许多内容对于 Javaslang 来说也是有效的,尤其是如何通过集合库解决通用的问题(比如栈溢出);
  • Javaslang 比 Java 8 更加具有表述性 / 简洁,比 Java 8 的 Stream 可能也会更快(参见我们即将推出的 Vector 的测试基准: https://github.com/javaslang/javaslang/pull/1557 )。

jOOλ和 StreamEx 包含了工具性函数,它们会让 Java 8 Stream 的使用更加容易。但是,用户必须要编写没有必要的噪音代码。更多的代码行意味着可能会有更多的错误。

Cyclops 是一个分布式编程的库,但是没有 RxJava 和 Akka 那样流行。它就像一个函数式特性的游乐场,比如无栈递归以及取消 monadic 类型。这对于 Java 来说并不实用,这些特性我们有意不会包含在 Javaslang 的核心中。

InfoQ:Java 9 的延期发布,现在日程是在 2017 年的 7 月,会影响 Javaslang 3.0 在 3 月份的发布规划吗?

Dietrich:Javaslang 会保持对 Java 8 的向后兼容性。Java 10 中所包含的新的 Java 特性才会影响到 Javaslang API。所以,我目前看不出 Java 9 的延期会对 Javaslang 3.0 的发布日期会有什么影响。但是,路线图还是有了一些的变化。

InfoQ:对于 Javaslang 2.1.0 发布版本或者 Javaslang 3.0 的路线图你有什么更新要同我们分享吗?

Dietrich:Javaslang 新特性的开发和测试需要更多的时间。在年底,我们将会公开 Javaslang 2.1.0 的一个 BETA 版本。在 Javaslang 2.1.0 发布之后,才会启动 Javaslang 3.0 的工作,从而避免冲突所带来的损耗。为了补偿 3.0 版本所造成的延迟,在 2.1.0 版本中将会包含一些原本规划后续版本才提供的特性。完整的特性列表可以参见我们项目的站点,即 https://github.com/javaslang/javaslang

Javaslang 2.0.x 已经非常成熟了,所以我们将会花时间将 2.1.0 做好。我目前不能给出确切的发布日期,但是我建议我们的用户尽可能早地开始测试 BETA 版本和发布候选版本。

Javaslang 3.0 不会向后兼容 Javaslang 2.x。从用户的角度来说,业已依赖 Javaslang 的代码库会觉得即将推出的 2.1.0 会更有意思,而 3.0 发布版本则代表着 Javalsang 的未来。

相关资源

查看英文原文 The Road to Javaslang 3.0

2016 年 11 月 21 日 18:007698

评论

发布
暂无评论
发现更多内容

🚄【Redis 干货领域】帮你完全搞定Cluster原理(架构篇)

李浩宇/Alex

redis redis集群 5月日更 redis架构

陪伴才是最好的礼物

isMarukuru

520 单身福利 爱情故事

密码学基础

escray

极客时间 安全 学习笔记 5月日更 安全攻防技能30讲

Flink的程序结构

大数据技术指南

flink 5月日更

☕【JVM技术之旅】彻底弄清楚Minor GC和Major GC及Full GC

李浩宇/Alex

JVM 垃圾回收 GC 5月日更

filecoin会继续暴跌吗?filecoin下半年还会涨吗?

v:IPFS456

FIL币价格行情如何 filecoin会继续暴跌吗? filecoin还会继续涨吗

fil挖矿收益怎么计算?fil矿机1T一天可以挖多少币?

投资矿机v:IPFS1234

FIL矿机一天可以挖多少币 fil挖矿收益怎么计算

.Net Core Excel导入导出神器Npoi.Mapper

yi念之间

C# .net core npoi

ArrayList与LinkedList性能大PK

Damon

java基础 5月日更

天才第一步:Java零基础入门,就从这份阿里p7大佬分享的笔记学起

java专业爱好者

Java

梯度下降法 - DAY12

Qien Z.

5月日更 过拟合 梯度下降法

【TcaplusDB知识库】TcaplusDB表定义

tcaplus

数据库 游戏 TcaplusDB

加油!未来的每一天

Sherry

520单身福利 520 单身福利

网络攻防学习笔记 Day22

穿过生命散发芬芳

5月日更 网络攻防

感恩父母

若兮

520 单身福利

NLog整合Exceptionless

yi念之间

.net core exceptionless nlog

TcaplusDB · 美好小满,未来可期

tcaplus

数据库 游戏 TcaplusDB

WebContainers介绍:如何在浏览器运行原生的Nodejs

代码先生

webassembly 技术创新 前端技术 WebContainers StackBlitz.com

缅怀袁老

topsion

随笔杂谈

kube-controller-manager之PV Cotroller源码分析

良凯尔

Kubernetes 源码分析 Ceph CSI

聊聊一个普通程序员在520这天的心态

后台技术汇

520 单身福利

拿金钱考验人性|靠谱点评

无量靠谱

C语言不完全类型是什么?有什么用途?

不脱发的程序猿

C语言 C语言不完全类型

虽不能至,心向往之|靠谱点评

无量靠谱

低代码/无代码和简单API

APICloud

低代码

爱情从来都不是简单的事

阿泽🧸

520单身福利

TcaplusDB君 · 行业新闻汇编(5月20日)

TcaplusDB

数据库 nosql 安全 数据 TcaplusDB

加密货币终将替代黄金?总价值已接近私人持有黄金价值

CECBC区块链专委会

【TcaplusDB君 】 行业新闻汇编(5月20日)

tcaplus

数据库 游戏 TcaplusDB

架构实战营 模块四作业

netspecial

架构实战营

Python数据科学基础-Pandas介绍

五分钟学大数据

数据科学 5月日更

Javaslang 3.0之路-InfoQ