Fork me on GitHub

Java Next: Groovy、Scala or Clojure?

Java 下一代: 选择您的下一个 JVM 语言
如果任意 Java 下一代语言都适合作为您使用的下一代语言,那么您会如何选择?本文调查了会对这个重要决定产生影响的各个因素。
Java 下一代: 克服同义词干扰
上一期 Java 下一代文章(“函数式编码风格”)对比和比较了 Scala、Groovy 和 Clojure 中的函数式编码风格。在本文中,系列作家 Neal Ford 将会更深入地剖析 Java 下一代语言中的过滤、映射和缩减(reduce)功能。文中提供的一系列简短的编码示例可帮助您整理这 3 种语言在命名这些重要的函数结构的方式上的比较容易混淆的区别。
Java 下一代: 没有继承性的扩展,第 2 部分
Java 语言受制于扩展机制的固有限制,主要依靠继承和接口。Groovy、Scala 和 Clojure 提供了其他许多扩展替代方案。这期文章进一步探索了 Clojure 将协议用作扩展机制的方法。
Java 下一代: 没有继承性的扩展,第 1 部分
Groovy、Scala 和 Clojure 提供了许多扩展机制,但继承几乎是 Java 语言的惟一选择。这一期文章将介绍类别类、ExpandoMetaClass、隐式转换和协议,借助它们来使用 Java.next 语言扩展 Java 类。
Java 下一代: Groovy、Scala 和 Clojure
本文开启了一个崭新的 Neal Ford developerWorks 系列,该系列对三种下一代 JVM 语言进行了深入比较:Groovy、Scala 和 Clojure。在第 1 部分中,将了解这些语言的相似性和差异,不管您现在是否继续选择 Java 作为主要编程语言。
Java 下一代: Groovy、Scala 和 Clojure 中的共同点,第 3 部分
本文是由三个部分组成的介绍 Clojure、Scala 和 Groovy 的共同点的系列文章的最后一篇,调查了这些语言如何处理异常、表达式和 null —— 这些都是 Java 语言容易出问题的地方。每种 Java 下一代语言都通过突出语言特征的独特实现消除了 Java 语言的瑕疵。
Java 下一代: 内存化和函数式协同
Scala 和 Clojure 都是函数式语言,而 Groovy 通过库包含了许多函数特性。这一期的 Java 下一代文章将探讨如何在 Java 下一代语言中实现内存化,以及如何使用函数组合特性来实现简洁性。
Java 下一代: 使用 Java 8 作为 Java 下一代语言
这一期的 Java 下一代文章将通过调查了解 Java 8 版本是否是您的下一个编程语言的合理候选。本文将介绍 lambda 代码块和 streaming API 如何将 Java 升级为一种现代语言。
Java 下一代: 混入和特征
Java 语言的主要范式(面向对象与单继承)有效地模拟了大多数编程问题(但不是所有编程问题)。Java 下一代语言以多种方式扩展此范式,包括混入(mixin)和特征(trait)。本期 Java 下一代文章定义了混入和特征所共享的机制,并深入探讨了 Groovy 中的混入和 Scala 中的特征之间的细微差别。
Java 下一代: 函数式编码风格
所有 Java 下一代语言都包括函数式编程结构,让您可以从一个更高的抽象层面来思考问题。然而,语言间术语的不同使得难以看到类似的结构。本期文章将展示常见的函数式编程结构在 Java 下一代语言中的表示方式,指出那些功能在实现细节上的一些细微差别。
Java 下一代: 对比并发性
或许 Java 下一代语言之间的最明显的区别在于线程、并发性和并行性。本文将介绍让 Scala、Groovy 和 Clojure 中现有的函数代码并行化的一些简单方法,然后还会分析 Scala 中的 actor 并发模型。
Java 下一代: 局部套用和部分应用
所有 Java 下一代语言都包括局部套用(currying)和部分应用,但以不同的方式实现它们。本文将介绍这两种技术和它们之间的区别,并显示它们在 Scala、Groovy 和 Clojure 中的实现细节(和实际应用)。
Java 下一代: Groovy、Scala 和 Clojure 中的共同点,第 2 部分
与 Java 语言相关的常见抱怨包括,简单的任务涉及到太多的步骤,默认设置有时难以理解。所有 3 种 Java 下一代语言在这些领域都采取了更加明智的方法。这一期 Java 下一代展示 Groovy、Scala 和 Clojure 如何消除 Java 语言的瑕疵。
Java 下一代: Clojure 中的并发性
Clojure 拥有所有 Java 下一代语言中最激进的并发性方法。本期将深入探讨 Clojure 中的并发性的一些方面,包括 epochal 时间模型和软件事务内存。
Java 下一代: Groovy、Scala 和 Clojure 中的共同点,第 1 部分
Java 下一代语言(Groovy、Scala 和 Clojure)的共同点多于不同点,主要集中于很多功能和方便性上的共同点。本期文章探究它们各自如何克服 Java 语言中长期存在的一个缺点 -- 无法重载操作符。还要讨论关联性和优先级等相关概念。
Java 下一代: 没有继承性的扩展,第 3 部分
Java 下一代语言(Groovy、Scala 和 Clojure)以多种方式弥补了 Java 语言的扩展限制。本期 Java 下一代文章将介绍通过 Groovy 的元编程工具可以提供的一些令人感到惊讶的扩展功能。
函数式思维: 对调度(dispatch)的反思
面向 Java 平台的下一代语言提供了比 Java 语言更灵活的方法调度机制。在这一期的 “函数式思维” 专题文章中,Neal Ford 将探讨 Scala 和 Clojure 等函数语言中的调度机制,展示执行代码的新的思维方式。
服务数据对象简介
如果您认为 J2EE 编程模型和 API 迫使开发人员在特定于技术的配置、编程和调试上浪费了太多的时间,那么欢迎您阅读本文。很多 Java 开发人员都怀疑如何能以统一的方式访问异构的数据,并对各种提出要解决这一问题的编程框架感到失望。在本文中,Java 开发人员 Bertrand Portier 和 Frank Budinsky 将介绍使用服务对象数据(SDO)的下一代数据编程。
函数式思维: 函数设计模式,第 3 部分
Gang of Four 的解释器设计模式 (Interpreter design pattern) 鼓励在一个语言基础上构建一个新的语言来实现扩展。大多数函数式语言都能够让您以多种方式(如操作符重载和模式匹配)对语言进行扩展。尽管 Java 不支持这些技术,下一代 JVM 语言匀支持这些技术,但其具体实现细则有所不同。在本文中,Neal Ford 将探讨 Groovy、Scala 和 Clojure 如何通过以 Java 无法支持的方式来实现函数式扩展,从而实现解释器设计模式的目的。
posted @ 2015-07-07 11:31  Nick.Chung  阅读(461)  评论(0编辑  收藏  举报