ruby - 选择工具集 : scala, ruby​​、java 等

标签 ruby scala groovy

<分区>

我是一个从头开始新开发项目的团队的一员。 目前它是基于爱好,但我们的目标是让它成为我们的生活 在1-2年的时间范围内。 我们是来自多种语言和技术的高级开发人员 过去几年主要关注 Java。

现在,我们正在考虑选择工具集和语言( future 是 从头开始时很亮)。 我们希望能够有效地使用现代架构并拥有 在 Java 和其他基于 JRE 的技术方面拥有丰富的经验。

简而言之,该项目包含大量 I/O、数据库和一个不错的 UI 需要基于网络并且感觉非常高效。

一种方法是使用经典 Java 并使用 GWT(或 GWT 之上的层)构建 UI, 另一个是 Scala + lift。

然后还有其他基于Ruby、Groovy等的技术。

那么我的问题是:您会选择什么作为新的长期工具 项目给出以上。例如,Scala 会留下来还是其中之一 那些只是暂时炒作的人?

对于从头开始的大型项目,您还考虑了哪些其他技术?

最佳答案

可能你最大的二进制选择是你是否决定留在Java Virtual Machine (JVM)通过 Java 或编译成字节码的其他语言之一,或者转移到其他平台,可能是 Ruby 或 Python(这可能会带来使用不同架构/操作系统的复杂性)。就个人而言,我决定我非常想坚持使用 JVM,因此您的语言选择将是...

斯卡拉

我所能提供的只是我自己的 Java 背景经验:迁移到 scala 很容易,因为它与 Java 生态系统的自然集成以及继续使用几乎相同的工具集的能力以同样的方式

关于最后一点,我的意思是 scala 的静态类型特性意味着所有重构和代码导航机会仍然对开发人员可用,但 scala 的类型推断意味着它没有不必要的冗长类型声明你的代码。

我仍然可以使用我最喜欢的东西,比如 SpringantIDEA,我仍然可以使用我写过的所有库在 Java 中(这是选择一种与 Java 集成的语言而不是像 Ruby、Smalltalk 或 Python 这样的全新语言的争论)。

从 scala 是否作为一种 JVM 语言存在的角度来看,这是我最关心的。但是想想有多少关于 SO 的问题被标记为 Jython (161), JRuby (176), clojure (388) 和 Groovy (661),假设您希望留在 JVM 上。不仅是scala现在远远领先于这些 (815),但它正在以相当快的速度增长。

最后,虽然我没有使用过 Lift,但一位同事对它印象深刻(如果我正在编写 Web 应用程序,我可能会看看它)。我发现胖客户端替代方案(scala swing)非常有用(无论如何都比原始 swing 好!)。

常规

值得注意的是,Groovy 的创建者 recently said如果他知道 Scala 的存在,他就不会费心去创建 Groovy!

JRuby/Jython

我将这两种语言混为一谈,因为它们都代表了将动态语言的语法移植到 JVM 上的尝试。除非您已经熟悉该语法,否则您为什么要费心走这条路呢?我必须说,SO 统计数据(上图)并不表明这些数据目前具有势头。

我还认为,从静态编译语言转向动态语言是一大步,您可能会对自己错过的东西感到惊讶(在重构和开发助手等方面)——您可能也关心这个事实这些语言的解释性质makes them over an order of magnitude slower than Scala .

Clojure

我对 clojure 没有真正的看法,只是说它具有命令式背景,它的语法很可怕,而且它的流程非常陌生。 functional paradigm 给我留下了更深刻的印象 但我觉得 Clojure 对我来说太过分了;如果我以前没有 LISP 的经验,我将成为语言中的一条鱼。/Scheme .

关于ruby - 选择工具集 : scala, ruby​​、java 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2229166/

相关文章:

linux - 配置 Jenkins 在构建时通过构建参数以编程方式确定从属?

ruby - 试图弄清楚我应该使用什么样的关系

ruby - 如何使用每个迭代器获取数组索引或迭代次数?

Ruby 在虚拟机上运行缓慢取决于虚拟化引擎

java - 在scala中使用泛型创建java匿名类的问题

java - 如何将包注释从 java 转换为 scala

groovy - groovy 脚本文件的命名约定

java - 如何使用 PBKDF2 在 Java 和 Ruby 中生成相同的安全哈希

scala - 异构树的类型级展平

jenkins - 检查资源是否被锁定