锡兰达到1.0最近引起了我的注意。最有趣的功能是可以同时为JVM和Javascript引擎(node.js,浏览器)进行编译,因此从一开始就可以在服务器后端和浏览器中运行的Web应用程序之间共享代码。

我已经开始查找文档,以详细了解如何使用Ceylon创建WAR可部署应用程序,其中我有一些REST端点将内容提供给浏览器。尽管这将是我的最终目标,但我并不期望获得Spring WebMVC的支持。令我惊讶的是,我在该主题中没有发现任何有用的东西。当我尝试以我描述的方式定位诸如Jetty或Tomcat之类的Servlet引擎时,是否有任何建议使用Ceylon?

现在,我正在Java应用程序中执行以下操作:


创建一个Maven Webapp项目
将JQuery Javascript客户端代码和其他静态内容放入src / main / webapp
将一些Spring MVC控制器写入服务器JSON资源


如果将客户代码也从Ceylon代码转换过来,那么类似的事情也很好。正如我所见,锡兰使用了它自己的项目布局和构建系统,尽管我更愿意使用Maven或Gradle来避免过多地偏离现有项目。

最佳答案

既然该语言及其编译器的版本已经达到1.0,我们就可以将一些注意力转移到诸如Web框架之类的事物的开发上。目前,Ceylon还没有完整的Web框架。

它的功能是:


一个基于JBoss Undertow的简单HTTP服务器,作为模块ceylon.net的一部分。这使得创建一个小型Web服务器非常容易,尤其是与ceylon.html一起呈现HTML页面时。
Julien Viet的vert.x bridgepromises module,它们为vert.x提供了包装。
红帽OpenShift的盒式磁带,可让您在红帽云上部署锡兰Web应用程序。


我了解这不是您如何在传统servlet引擎上运行Ceylon的问题的完整解决方案。事实是,您实际上可以将已编译的Ceylon模块档案存档,将其嵌入.war中,并在Tomcat或Jetty或JBoss或任何其他内部使用它。毕竟,.car只是带有一些额外元数据的.jar。这样做的问题是,您将失去使用ceylon run时通常具有的Ceylon模块运行时的优势。您需要:


手动确保模块使用的所有依赖项在.war中都可用,并且
您将不会获得类加载器隔离。


如果您可以忍受,那就去吧。会的。但是从我的角度来看,我们的愿景是摆脱传统的servlet引擎,并在模块运行时之上运行Undertow(ceylon.net)或vert.x之类的东西。请记住,我们正在讨论的“模块运行时”仅仅是JBoss模块,它是JBoss本身的微小核心。

07-28 13:08