java - 为什么我要在 Java/Spring 上使用 Scala/Lift?

标签 java spring scala lift

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

7年前关闭。



Improve this question




我知道这个问题有点开放,但我一直将 Scala/Lift 视为 Java/Spring 的替代品,我想知道 Scala/Lift 相对于它的真正优势是什么。从我的角度和经验来看,Java Annotations 和 Spring 确实最大限度地减少了您必须为应用程序执行的编码量。 Scala/Lift 是否对此有所改进?

最佳答案

假设我们对 Scala 和 Java 同样熟悉,并忽略(巨大的)语言差异,除非它们与 Spring 或 Lift 相关。

Spring 和 Lift 在成熟度和目标方面几乎截然相反。

  • Spring比Lift大5岁
  • Lift 是整体式的,仅针对网络; Spring 是模块化的,针对 Web 和“常规”应用程序
  • Spring 支持大量的 Java EE 特性; Lift 忽略那些东西

  • 一句话,Spring是重量级的,Lift是轻量级的。有了足够的决心和资源,您就可以扭转局面,但这两者都需要很多。

    在使用这两个框架后,以下是我脑海中浮现的具体差异。这不是一个详尽的列表,无论如何我都无法编译。对我来说最有趣的是什么......
  • 查看理念

    Lift 鼓励在片段/操作方法中放置一些 View Material 。片段代码尤其会散布以编程方式生成的表单元素,<div> s, <p> s 等。

    这是强大而有用的,尤其是因为 Scala 具有内置的语言级 XML 模式。可以在 Scala 方法中编写内联 XML,包括括号中的变量绑定(bind)。这对于非常简单的 XML 服务或服务模型来说是令人愉快的——您可以在一个非常简洁的文件中生成一套 HTTP 响应操作,而无需模板或大量伴随的配置。缺点是复杂。根据您走多远, View 和逻辑之间的关注点要么模糊分离,要么没有分离。

    相比之下,Web 应用程序经常使用 Spring 会强制 View 和其他所有内容之间进行强分离。我认为 Spring 支持多种模板引擎,但我只在任何严肃的事情中使用过 JSP。使用 JSP 进行受 Lift 启发的“模糊 MVC”设计将是疯狂的。这对于大型项目来说是一件好事,因为阅读和理解的时间可能会让人不知所措。
  • 对象关系映射器选择

    Lift 的内置 ORM 是“Mapper”。有一个名为“Record”的即将推出的替代品,但我认为它仍然被认为是 pre-alpha。 LiftWeb Book 有关于使用 Mapper 和 JPA 的部分。

    电梯CRUDify功能虽然很酷,但仅适用于 Mapper(而非 JPA)。

    当然,Spring 支持 panoply of standard and/or mature database technologies .有效的词是“支持”。理论上,您可以将任何 Java ORM 与 Lift 结合使用,因为您可以从 Scala 调用任意 Java 代码。但是 Lift 只真正支持 Mapper 和(在较小程度上)JPA。此外,目前在 Scala 中使用非平凡的 Java 代码并不像人们想象的那样无缝。使用 Java ORM,您可能会发现自己要么在任何地方同时使用 Java 和 Scala 集合,要么在 Java 组件内外转换所有集合。
  • 配置

    Lift 应用程序几乎完全通过应用程序范围的“Boot”类方法进行配置。换句话说,配置是通过 Scala 代码完成的。这非常适合具有简短配置的项目,并且当进行配置的人可以轻松地编辑 Scala 时。

    Spring 在配置方面非常灵活。许多 conf 选项可以通过 XML 配置或注释来驱动。
  • 文档

    Lift 的文档还很年轻。 Spring 的文档非常成熟。没有比赛。

    由于 Spring 的文档已经井井有条且易于查找,因此我将查看我为 Lift 找到的文档。 Lift 文档基本上有 4 个来源:LiftWeb Book , API Docs , LiftWeb的Google group ,和“Getting Started”。还有一套很好的代码示例,但我不会将它们称为“文档”本身。

    API 文档不完整。 LiftWeb Book 已经出版在树上,但它也可以在线免费获得。它真的很有用,虽然它明显的说教风格有时让我很恼火。教程有点长,契约(Contract)有点短。 Spring 有一本合适的手册,而 Lift 却没有。

    但 Lift 确实有一组很好的例子。如果您喜欢阅读 Lift 代码和示例代码(并且您已经很了解 Scala),那么您可以在相当短的时间内解决问题。

  • 这两个框架都令人信服。有很多应用程序可供您选择并做得很好。

    关于java - 为什么我要在 Java/Spring 上使用 Scala/Lift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2683914/

    相关文章:

    java - Android Javascript 接口(interface)失败

    java - 如何在android中动态设置布局

    java - 您能否在将数据库上传到我的网站时在 Java 应用程序与 Access 数据库之间创建连接

    测试中的 Spring bean

    scala - Scala:构建特征和类的复杂层次结构

    java - firebase facebook 登录时出现身份验证失败错误

    spring - 我们应该在哪里使用@Transactional,Service层在哪里?

    java - 无法使用 Spring 执行器 - 创建 bean CacheMetricsRegistrarConfiguration 时出错

    scala - Cats-Effect 和 IO monad

    scala - 重写 scala 代码以使其更实用