本周在安特卫普举行的Devoxx会议上,发布了两种全新的语言:Google的Dart SDK 1.0和Red Hat的Ceylon 1.0。 从一开始,许多人就将锡兰(Ceylon)视为对Java平台的明显威胁(线索就在此)。 但这真的是Red Hat的意图吗? 创造者Gavin King从最早的开发阶段就一直坚信,其意图始终是创建可以与Java一起运行的东西,但被设计为一种用于学习并基于Java的成功和失败的语言和用于商务计算的SDK。 我们赶上了King,以了解本周发布会的全部消息,其背后的工作以及接下来在Red Hat塔楼酝酿的一切。
JAX:首先,祝贺本周在Devoxx上Ceylon的发布!
国王:谢谢! 会议上肯定有很多嗡嗡声–对我们来说真的很好。
锡兰发展的动力是什么?
显然,在最初构想该语言时,我在平台的Java EE方面与JCP进行了大量合作,并且已经与EJB,CDI等认证一起工作了多年。平台上的其他技术。 而且,您知道,尤其是在我从事CDI的时期,我到了点,我们正在对编程模型和用户体验进行渐进式改进–我怎么说?收益递减的序列。
我想,我越来越感兴趣的问题,实际上让我更沮丧的是,在语言层面上的问题更多。 我遇到的限制是在库框架级别无法解决的问题。
因此,我想这是关于如何启用更好的编程模型的一套想法,尤其是对于那些正在构建框架和库以及更多通用代码的人们的更好的编程模型。 显然,自那时以来,这个概念以不同的方式发展,但我想那仍然是其中的很大一部分。
您希望通过该项目解决的最大问题是什么?
嗯,最大的限制因素之一是,一旦您想要在Java世界中定义用户界面或某种结构化的数据集配置,或类似的东西,或构建或类似的东西,您必须离开Java语言,转而使用其他语言,例如XML。 而且,如果您正在为Web浏览器编写用户端代码,那就更糟了,因为整体“写一次,在任何地方运行”之类的事情立即失败了。
Java已经取得了巨大的成功,奇妙,奇妙的语言-但是,最初的愿景在到达时就失败了。 因此,一旦您想缩小与基于Web的客户端的距离,您就会发现自己不得不离开Java语言并用JavaScript或类似的语言编写东西。 如今的Java应用程序由几种相互协作的语言组成,这不一定是一件坏事,但是问题是您失去了静态类型,失去了工具支持。
像我这样的Java开发人员非常喜欢拥有出色的工具,并拥有能够帮助我们维护,重构和更改代码的工具。 离开Java并开始必须使用XML或JavaScript之后,我们真的很强烈地感到从工具级别上失去了支持。
回到您本周收到的反馈–许多评论员都将锡兰称为“ Java杀手”。 这是您过去否认的事情,但是您可以看到人们为什么这么认为吗?
好吧,我的意思是,显然,Ceylon当然可以与Java作为一种语言竞争,而我们在这方面要走得更远。 不仅是一种语言,而且是一组平台库。 所以……从某种意义上说,它是一个竞争者,但我的意思是,我几乎荒谬地说:“我们将与Java竞争”,这是一个由多种技术共同作用的惊人生态系统。
您知道吗,我更喜欢将其视为Java生态系统的一部分,对吗? 当然,就在JavaScript环境中进行操作而言,我们超越了Java生态系统-但您知道,我们将自己与其他语言一起视为JVM生态系统的一部分。
对于我们来说,与其他语言的互操作性(从Java和JavaScript开始)-但我希望将其扩展到与JRuby和Groovy的互操作性-我们希望成为这个世界的一部分,并与其他技术一起工作。 实际上,我希望实际上,在不久的将来,任何Ceylon应用程序都将由Java和Ceylon以及JavaScript的混合物组成。
尽管您说这是一种免费的竞争对手,但您为什么决定将其命名为锡兰?
嗯,锡兰最初是RedHat内部一个秘密项目的名称。 这是在Java上演的戏剧,Java是印度尼西亚的一个岛屿,在殖民时期是咖啡的来源,而锡兰是印度洋上的另一个茶源。 因此,它来自–这是一个戏。
它从来都不是编程语言的名称,但是有点卡住了。 当我提议更改它并说出我们的名字时,我的同事转过身说:“不,不,不! 我们喜欢那个! 不要更改它,”所以…。
除了命名问题之外,开发锡兰最大的挑战是什么?
我的意思是,很显然,这已经是四年的艰苦努力,这是一项巨大的事业和软件工程挑战。 它有很多困难的部分。
设计一种用于静态类型语言的类型系统,如果您现在想要一种最先进的静态类型语言,那您就会知道类型系统设计中涉及的概念性工作–确实有很多技术和深入的思考需求涉及到这一点,这发生了好几年。
在实际开发和编写代码方面,到目前为止,我们编写的最困难的部分是编译器的一部分,该编译器采用Ceylon代码模型并将其转变为Java的抽象,Javac可以为该抽象并生成代码。在Ceylon语言与JVM用户模型之间进行映射,转换,映射的JVM。 这绝对是最具挑战性的部分,我们为最终完成这项工作感到非常欣慰。 那真的是花了两年的时间。
那么,现在已经完成了核心工具,您对未来版本的计划是什么?
Ceylon 1.1版本将全部与性能增强有关。 我们希望尽快发布该语言的有效版本,而我们没有时间专注于一些与性能相关的问题。 因此,我们计划在未来的三,四个月左右(即明年年初)发布的下一个版本将涉及性能优化,而不是生成的结果代码以及编译器,尤其是在IDE中构建性能。
对于开发人员而言,在IDE中编写和构建代码时,这非常重要-快速且快速,我们正在为此努力。
其次,重点从开发语言转变为人们用来构建应用程序的库和框架的开发。 显然,我们这里有一些东西,一些基本的东西,但是现在那里将有更多的工作要做。 构建系统说,我们的SDK大部分已经由外部RedHat社区贡献者构建,他们突然出现并对一个特定的问题非常感兴趣。 而且会有更多的东西,并且Red Hat将在这些东西上投入更多,当然,这也将吸引来自锡兰团队以外的很多人。
Ceylon确实看起来很像Java –与JVM上的其他语言相比,您认为它与众不同吗?
我想在这种对话水平下,我总是要指出三点。 首先,JVM的大多数语言都是动态类型的,或者大多数流行的语言都是动态类型的,因此,事实是它是一种非常静态的类型语言,非常安全的类型,甚至比其他静态类型的语言还要多。
其次,Ceylon内置了模块化,这是Java长期以来一直希望实现的目标,但是Devoxx的最新消息是,实质上已经放弃了向Java用户,Java应用程序提供模块化的计划,并且如果我们正确理解的话,当前Java平台的模块化将仅专注于Java SDK本身。 我们一直期望最初的Java 8在平台级别提供模块化,但是这还没有发生,而且看起来也不会再发生了。 此时,Ceylon提供了基于该语言级别的独特模块化,并将它们集中到IDE和运行时中。
与其他可用选项相比,使用模块等要容易得多。 结果,如果您要建立一个同时使用Maven和OSGI和Eclipse的Java应用程序,那么如果要这样做,将花费一周的工作效率。 锡兰则免费提供。
除此之外,我们还有一个非常特殊的类型系统。 它很简单,但是却非常有表现力和功能,我们认为人们真的会喜欢它。
最后,展望未来,您是否认为展望未来,Red Hat将开始在锡兰进行更多编码?
对我们来说,第一步是将我们在JBoss生态系统中拥有的部分组件作为应用程序服务器组件交付,重新打包,使其模块化,并为Ceylon平台制造这些模块。
同时,我们采用了锡兰,并且正在将其部署到Openshift。 一旦拥有了CBolon和JBoss所具备的功能,那么它将变得更加有趣-我们可以在Ceylon中做什么,而现在可以在JBoss中做什么?
人们经常问我,RedHat是否使用Ceylon来构建内部项目,而我总是有点像,我不太了解,我们没有内部项目,我们是产品公司!
翻译自: https://jaxenter.com/another-day-another-java-menace-ceylon-has-landed-107129.html