写点什么

Ceylon 1.0 Beta 版发布,正式版呼之欲出

  • 2013-11-10
  • 本文字数:2428 字

    阅读完需:约 8 分钟

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

2013-11-10 23:15944
用户头像

发布了 88 篇内容, 共 266.5 次阅读, 收获喜欢 8 次。

关注

评论

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

springboot整合redis基础示例

(-0 , +0)

eBPF动手实践系列二:构建基于纯C语言的eBPF项目

阿里云大数据AI技术

运维 C语言 ebpf 企业号 5 月 PK 榜

Java面试通关:阿里内部实战模拟面试精讲题库,竟被上传GitHub!

Java你猿哥

Java redis JVM java面试 Java基础知识点

100万数据,如何快速的导入数据库?

NineData

数据库 开发者 数据导入 数据导出 NineData

Prompt工程师指南[高阶篇]:对抗性Prompting、主动prompt、ReAct、GraphPrompts、Multimodal CoT Prompting等

汀丶人工智能

人工智能 自然语言处理 深度学习 ChatGPT prompt learning

智慧工业园三维可视化安全生产管控系统

2D3D前端可视化开发

物联网 可视化 智慧园区 智慧化工园区 工业组态

用 Tensorflow.js 做了一个动漫分类的功能(二)

北桥苏

JavaScript node.js tensorflow

如何在 Windows10 下运行 Tensorflow 的目标检测?

北桥苏

深度学习 tensorflow 目标检测

如何将训练好的Python模型给JavaScript使用?

北桥苏

Python tensorflow AI

火山引擎DataLeap数据调度实例的 DAG 优化方案 (一):问题与需求分析

字节跳动数据平台

数据平台 DAG DataLeap

什么是策略模式?如何在Java项目中引入策略模式来优化代码结构

(-0 , +0)

用 Tensorflow.js 做了一个动漫分类的功能(一)

北桥苏

JavaScript tensorflow

Prompt工程师指南[应用篇]:Prompt应用、ChatGPT|Midjouney Prompt Engineering

汀丶人工智能

人工智能 自然语言处理 ChatGPT MidJourney prompt learning

MVP发布后,接下来该做什么?

敏捷开发

项目管理 Scrum MVP 最小可用产品

在GitHub被疯抢的这份阿里内部绝密Java面试八股文手册有多强?

Java你猿哥

Java MySQL 面试 JVM Java八股文

Nautilus Chain 或成未来最好的链上隐私生态

西柚子

MySQL 服务器演化分析

Andy

关于Tensorflow!目标检测预训练模型的迁移学习

北桥苏

Python 深度学习 tensorflow 目标检测

SpringBoot整合MybatisPlus基础教程

(-0 , +0)

springboot Mybatis Plus

Tensorflow.js 视频图片多目标检测

北桥苏

JavaScript 深度学习 tensorflow

探索将大语言模型用作推荐系统

Baihai IDP

人工智能 推荐系统 企业号 5 月 PK 榜 大语言模型 LLMs

Java常见集合类型及其异同点,简单使用

(-0 , +0)

Java 集合

javaweb脚手架springboot基础入门

(-0 , +0)

如何用 ModelScope 实现 “AI 换脸” 视频

北桥苏

Python ModelScope

Tensorflow.js 对视频 / 直播人脸检测和特征点收集

北桥苏

JavaScript tensorflow

Windows10上CUDA9.0+CUDNN7.0.5的完美安装教程

北桥苏

深度学习 cuda cudnn

简单聊聊MySQL索引优化的内容

(-0 , +0)

一把王者的时间,带你吃透Java面试八股文(2023最新整理)

Java你猿哥

Java 面试 微服务 Spring Boot mybatis

数说热点|社恐人群运动健身指南:不想去健身房,那就在家找面墙

MobTech袤博科技

Java中常见集合类核心源码阅读

(-0 , +0)

Java 源码 集合

2023企业数智化财务创新峰会西安站圆满举办!

用友BIP

智能会计 价值财务

Ceylon 1.0 Beta版发布,正式版呼之欲出_Java_张龙_InfoQ精选文章