本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/11/ceylon1.0-beta-release


在经历了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。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐