在经历了 3 年多的开发历程之后, Ceylon 现已呼之欲出。 Ceylon 1.0 Beta 版实现了完整的语言规范,提供了在 Java 与 JavaScript 虚拟机上执行 Ceylon 程序的能力,并且可以与针对这些平台所编写的原生代码进行交互。
Ceylon 是个开放源代码、社区参与构建的语言、平台与 SDK,面向业务计算,它主要是由来自于 Red Hat 的 Gavin King (Hibernate 框架创始人、Seam 框架负责人)进行设计的。从 2011 年开始进行开发,它可以运行在 Java 与 JavaScript 虚拟机之上,并且几乎消除了客户端与服务器之间的语言差异。
Ceylon 的灵活性让业界分析师们认为它将成为“Java 杀手”,Gavin King 也曾对这个论点做出过如下的回复:
首先,我从来也没有将 Ceylon 看作是 Java 杀手或是下一代的 Java 语言。我的意思是说 Ceylon 并不是 Java,它是一门深受 Java 影响的全新编程语言,由那些喜欢 Java 的人开发并设计出来的。Java 并不会在短时间内消亡,因此没人能够干掉它。
为什么要开发一门新的语言呢?Ceylon 的创建源自多种因素,不过 Gavin King 在其博客上写到,最重要的原因在于人们发现使用 Java 的继承语法来定义用户界面以及结构化数据实在是太困难了。Ceylon 开发社区也在利用这个机会编写一个全新的 SDK,试图解决 Java SDK 中过时的类库所带来的诸多问题。
Gavin King 继续说到:
我们在过去的十年中一直在为 Java 设计和构建框架与库,因此深知它的限制所在,对此也感到非常沮丧。我认为 Java 中很难解决的头号技术问题(或许也是其他现有的 JVM 语言存在的问题)就是使用类型安全与继承语法来定义用户界面和结构化数据的问题。如果这个问题没有解决方案,那么 Java 只能继续深陷在 XML 的泥潭之中。 不过我们很多的沮丧并不仅仅在于 Java 语言本身。Java SE SDK 中那些过时的类库存在太多的问题,开发一个优秀的 SDK 是 Ceylon 项目首先要实现的需求。
虽然 Ceylon 与 Java 存在很多相似之处与不同之处,不过最重要的差别在于类型系统。在你学习编程时,类型是首先要学习的东西。让人惊讶的是,这门语言并没有我们大多数人都习以为常的原生类型和数组。Ceylon 使用了集合的并集与交集的概念进行表达,让编译器自动确定类型。这样,语法本身就非常具有可读性了,特别是对于大型团队来说更是如此。如果想要了解新特性的完整列表,请参阅 http://ceylon-lang.org/documentation/。
有人可能会说从头开始创建一门全新的语言和 SDK 实在是一项太过于庞大的任务了。实际上,我们并不是完全从头开始的:我们可以重用 Java 生态圈中基于开源许可的大量代码。想想看,有 Open JDK 的,JBoss 的,当然还有 Eclipse 的。Ceylon 的目标并不是要实现整个 SDK、编译器以及 IDE。这对于像 Red Hat 这样规模的公司来说并不是一个无法完成的任务。当然了,我们也并不是完全由自己来做这件事的,如果没有社区的帮助和参与,这样的项目就没那么有趣了。
Ceylon 的官方站点列出 Ceylon 具有如下特性:
- 强大:Ceylon 拥有强大的静态类型系统,可以防止很多 Bug 的产生,你可以通过 Ceylon 轻松进行表达:并集类型、交集类型、高阶函数、掺元继承以及枚举类型等等。
- 可读性:我们在阅读别人代码上所花费的时间要超过自己编写代码的时间。因此,Ceylon 非常强调可读性,通过高度有规则的语法、支持树形结构以及优雅的语法糖来做到这一点。
- 可预测性:Ceylon 通过清晰度来控制复杂性。语言极力避免会引起混乱的那些隐式特性。编译器遵循着简单、直观的准则同时会生成有意义的错误提示信息。
- 平台:Ceylon 是个完整的平台,拥有一个现代化的 SDK。它能运行在 Java 与 JavaScript 虚拟机之上,填平了客户端与服务器之间的沟壑。Ceylon 完全能够与 Java 及 Java SDK 进行交互。
- 模块化:模块化是语言、SDK 与工具非常核心的一个组成部分。编译器会生成模块归档,然后通过下一代的仓库架构 Ceylon Herd 进行分发。
- 工具:静态类型是促成杀手级工具产生的一个强有力的技术。Ceylon 带有一个功能完善的命令行工具集、一个完整的基于 Eclipse 的 IDE,提供了搜索、重构、快速修复、辅助功能、自动完成、调试等诸多功能。
此次发布主要包含如下特性:
- 完整的语言规范,定义了可供专业开发者所用的 Ceylon 语言的语法和语义。
- 一个命令行工具集,包含了针对 Java 与 JavaScript 的编译器、一个文档编译器,并
- 且支持在 JVM 与 Node.js 上执行模块化程序。
一个强大的模块架构,用于代码组织、依赖管理以及运行期的模块隔离。 - 一个语言模块,这是最小的 Ceylon SDK 的跨平台基础。
与此同时,Ceylon 团队还发布了 Ceylon IDE 1.0 Beta 版,这是功能完善的基于 Eclipse 的集成开发环境的最新版。
语言的新特性
此次发布引入了如下新的语言特性,同时还修复了不少 Bug:
- 注解与注解约束
- 一个类型安全的元模型
- “静态”方法与属性引用
- 可以操纵资源的 try 语句
- switch 语句中可以支持字符串、整型以及字符
- 字符串与字符字面值中可以支持具名的 Unicode 字符
- ** 乘法运算符
- 非空的 variadic 参数
- 用于调用继承接口成员的新的改进语法
感兴趣的读者还可以在这里了解到语言的全部新特性。
IDE 的新特性
此次发布的 IDE 增强了性能,同时也修复了不少 Bug:
- 支持在模块运行期装载 Ceylon 程序
- 粘贴时的自动导入以及自动缩进
- 集成 Eclipse 内建的文件与包重构功能
- 内联的“链接模式”重命名,并且支持对文档中所引入的字符串的重命名
- 改进了自动完成功能,包括“链接模式”的参数完成
- 与 Eclipse 合并视图更好的集成
- 与命令行工具集配置文件格式的集成
- 增加了几处新的辅助功能,包括快速增加与修改导入
- 一个新的编辑器首选项页面
社区
Ceylon 社区站点提供了文档以及关于快速上手的信息,地址是 http://ceylon-lang.org。
SDK
针对 1.0 Beta 版重新编译的平台模块位于共享的社区仓库中,地址是 http://modules.ceylon-lang.org。
源代码
Ceylon 的源代码、规范等内容位于 GitHub 上,地址是 https://github.com/ceylon。
问题
Bug 与建议等信息都位于 GitHub 的问题追踪器上,地址是 http://ceylon-lang.org/code/issues。
评论