9

最近 Ceylon 达到 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 代码转置,类似的事情也会很棒。正如我所见,Ceylon 使用它自己的项目布局和构建系统,尽管我更乐意使用 Maven 或 Gradle 来避免过多地偏离现有项目。

4

3 回答 3

13

现在该语言及其编译器已经达到 1.0,我们可以将部分注意力转移到 Web 框架之类的开发上。目前,Ceylon 还没有一个完整的 Web 框架。

它所拥有的是:

  1. 一个基于 JBoss Undertow 的简单 HTTP 服务器,作为模块的一部分ceylon.net。这使得创建小型 Web 服务器变得非常容易,尤其是与ceylon.html渲染 HTML 页面结合使用时。
  2. Julien Viet 的vert.x 桥接器和promises 模块,它为 vert.x 提供了一个包装器。
  3. Red Hat 的 OpenShift 盒式磁带,可让您在 Red Hat 的云上部署 Ceylon Web 应用程序。

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

  • 手动确保您的模块使用的所有依赖项在.war, 和
  • 你不会得到类加载器的隔离。

如果你能忍受它,那就去吧。它会起作用的。但在我看来,我们的愿景是摆脱遗留的 servlet 引擎,ceylon.net在模块运行时之上运行诸如 Undertow ( ) 或 vert.x 之类的东西。请记住,我们谈论的这个“模块运行时”无论如何只是 JBoss 模块,JBoss 本身的微小核心。

于 2013-11-18T12:02:14.803 回答
4

Ceylon 自己的 Web 服务器上有初步工作:

还有一些简单的例子/演示/测试:

于 2013-11-18T11:29:56.257 回答
3

我意识到这是一个老问题,但是当我只是在寻找相同的问题时,差不多 2 年后,似乎有人正在建造一个(称为 Cayla):

https://github.com/vietj/ceylon-cayla

于 2015-08-05T14:17:44.387 回答