红帽公司计划将 Ceylon 语言移交至 Eclipse
基金会,目前该提案已获批准,Eclipse
Ceylon 项目也已被创建。

图片 1

图片 2

背景:

Eclipse Ceylon 是一门现代的静态类型编程语言,支持与 Java, Android 和
JavaScript
虚拟机的交互操作。该语言具有非常独特和十分优雅的静态类型系统、灵活和可读性好的语法、强大的模块结构、模块化
SDK,与原生 Java 和 JavaScript 的平滑交互操作,除了这些,还包括 Maven 和
npm,以及优秀的命令行工具和全功能 IDE。

Ceylon 语言由一个完整,但可读性非常好的规范进行定义,它在 2013
年发布了首个 1.0 版本,拥有一个非常活跃的用户群体,他们大多数通过 Gitter
进行互动。

Ceylon 项目的技术水平已经显著领先了 Java/C#
语言家族,在一般的静态类型语言领域也是如此。 Ceylon
项目首创的创新已经在其他新型编程语言的系统类型中得到了应用。Ceylon
还拥有比任何编程语言都先进和干净整合的模块系统。

目前,Ceylon 使用 Apache
License-2.0 和 Eclipse
Public License
1.0 双许可证授权。不过具体还是取决所使用的不同的组件。

Ceylon是Gavin
King的作品,这是一个可运行于Java和JavaScript虚拟机的、高可读的、模块化的、面向对象的静态类型编程语言,其融合了Java、C、Smalltalk以及函数式语言的特性,试图解决Java语言中的一些问题。Gavin
King近日发布了Ceylon
1.0正式版本
,这意味着其语言规范、编译器和IDE都到达了生产标准。Ceylon的语言特性Ceylon语言的主要特点如下:高度可读性,极力避免和消除潜在的有害架构一个强大的类型系统,结合了子类型、参数化多态性和声明位置变量,包括集和交集类型,并使用主要类型用于局部类型推断和依赖流的类型归类。独特的函数和元组类型,可以实现强大的抽象针对模块定义和模块间依赖定义的先进的架构一个非常灵活的语法,支持类似于树形的结构表达方式完全具体化的泛型类型,支持JVM和JavaScript虚拟机,还包括一个独特的类型安全的元模型。详细语言特性:Ceylon语言包及工具此次发布的1.0版本中包括:一个完整的语言规范,定义了Ceylon的语法和语义,便于开发者学习一个命令行工具集,包括针对Java和JavaScript的编译器、文档编译器、支持在JVM和Node.js上执行模块化程序一个功能强大的模块架构,可用于组织代码、管理依赖、在运行时隔离模块语言模块,这是Ceylon语言的重要组成部分,是Ceylon
SDK跨平台的基础一个全功能的基于Eclipse的集成开发环境发布日志:Ceylon的目标像其他JVM语言一样,Ceylon也被誉为“Java的替代者”,对此,Gavin
King表示:引用Ceylon不是Java,它是深受Java影响的一种新语言,它的设计者是Java的坚定支持者。Java不会很快消亡,没有哪种语言能够取代它。Gavin
King表示,开发Ceylon的初衷是为了扩展Java,而不是取代Java,Gavin认为Java中有许多问题,包括泛型等特性的复杂性、设计粗糙且晦涩难懂的JDK、粗劣的注解语法、不完善的块结构、对XML的依赖性等等,因此他希望开发一种新型语言来解决这些问题。一些示例代码Ceylon的Hello
World代码:

约一个月前,我们介绍了Red Hat旗下JBoss工程师Gavin
King的新作品——Ceylon语言的首个里程碑版本的发布,现在,该语言项目又到达了它的另一个里程碑——Gavin
King近日在博客宣布,Ceylon
IDE首个版本亦已发布。Ceylon是一个针对在团队环境中写大型程序的编程语言,该语言意图消除目前Java存在的问题。Gavin描述了他对Ceylon的目标:运行在JVM之上,静态类型,自动内存管理,内置模块化。Ceylon
IDE是一个Eclipse插件。Gavin
King写道:引用它是一个功能完善的Ceylon开发环境,如同你们在Java
IDE中所使用的,功能包括交互的错误报告、增量构建、语法高亮、提示、快速修复、重构、搜索、向导、鼠标帮助、调试等等。但是它还一个重要功能是Java
IDE中所没有的:深度集成Ceylon的模块及模块库结构。详细的内容可以查看功能介绍。Ceylon
IDE项目以EPL 1.0许可证开源,代码托管于Github。Ceylon IDE
M1发布说明:文档:

项目路线安排:

初始的贡献将于 2017 年 Q2
到来,然后会发布第一个版本,不过还不知道第一个版本是被命名为 1.3.3 还是
1.4.0。(关于包命名的要求 Eclipse
需要考虑到二进制兼容性,避免次要版本号间的冲突)

将来的工作

  • 研究对在 ECJ 上的 JVM 后端进行重新调整

  • 完成高阶泛型的实现

  • 研究增加对 async/await 的支持

  • 完成与 TypeScript 的互操作

  • 通过延长二进制包的生成来提高 Eclipse 插件的响应速度

  • 研究对 Eclipse Che 的支持

void hello() { writeLine( "Hello World." );}

项目托管:

Eclipse 表示希望将把项目托管在 GitHub 上并使用 GitHub 的 issue
功能,因为他们在这里已有丰富的贡献,而且所有用户都喜欢使用 GitHub 和
issue 功能。

来自:https://projects.eclipse.org/

一个简单的函数:

function distance(Point from, Point to) { return ((from.x-to.x)^2 + (from.y-to.y)^2)^0.5;}

一个简单的类:

class Counter(Integer initialValue=0) { variable value count = initialValue; shared Integer currentValue { return count; } shared void increment() { count++; } }

官方网站:地址: