您如何鼓励您的组织从Java迁移到Scala?[关闭]


15

是否有人组织开始从Java迁移到Scala?如果是,您该怎么做?我怎样做才能鼓励我的同事也这样做?


请加Scala和迁移到标签,如果你有权力这样做
南大

9
也许您应该解释原因
TheLQ

您需要足够的内部知识来确保“足够高”的总线系数。

Answers:


15

可能最简单的方法是首先仅将Scala用于测试。在这种情况下,您甚至不必告诉您的老板:-)如果他问,请告诉他“那只是我的私人测试用例,使用Scala如此容易和快捷得多”。一旦您(和您的组织)对Scala有了足够的经验,就可以开始将其用于“真实”代码。


这些正是我从C#到F#迁移的想法。
GregC 2011年

7

从公司的角度来看,如果没有明显的优势可以迁移到Scala,那么最好还是继续使用Java。对于他们来说,雇用Java程序员来构建和维护应用程序比较容易。在Scala中执行所有操作后,您可能会离开:-)没有冒犯之处:-)


1
纯Java将保留下来。Scala可能会也可能不会。现在说还为时过早。

“雇用Java开发人员更容易”也许是正确的。但是,雇用“容易雇用”的人可能不是完成项目的最便宜的方法。
凯文·克莱恩

7

让您的老板阅读以下经历:

  1. 我目前正在Scala中从事大部分工作。(我应该提到,自从前一段时间发明车轮以来,Scala是最好的东西。:-D)

    以我的拙见,这是唯一一种真正使人们能够选择最佳方法来完成任务的语言,而无需在(更多)面向对象方法和(更多)功能方法之间进行不必要的区分。

    看看以前声称类似这样的语言,我基本上可以看到两个相互竞争的语言设计阵营:

    • 从面向对象的角度来看,函数式编程最近获得了一些关注,并认为:“嗯,我们并不真正了解该函数式东西,但让我们在语言中添加一些奇特的语法糖,因此我们可以断言它是函数式的太!” (例如:Java,Python)

    • 然后来自功能方面的人认为:“嗯,我们的功能方法远胜于其他任何方法,而且面向对象的废话很烦人,但让我们在语言中添加一些其他关键字,这肯定会使我们的语言逃脱学术界!!” (例如:F#,OCaml)

    Scala的设计师统一了双方的许多方法,并创建了一种设计良好的语言,以我的拙见,这是与其他语言的最大区别,因此决定采用“法兰克斯坦”方法进行编程语言设计。

  2. 我只用Lift做过较小的事情,也只用过Rails和Django的肤浅经验,我不得不承认,在大多数时候,我想知道为什么Lift中的某些东西与我的预期有所不同,这是由于我的期望是有缺陷,Lift的方法更为出色。

    Lift当然不是“轻松介绍Scala”,但是了解Lift的工作原理几乎与之前学习Scala一样有意义。

    在没有任何逻辑的情况下拥有“干净”视图的能力是对其他声称相同但又不足的框架的一项重大改进。Scala的XML文字支持使您可以验证响应的格式是否正确:编译器将在编译时证明您仅向客户端发出格式正确的XML。

  3. 如果您要构建外观,感觉和行为类似于“真实”桌面应用程序的Web应用程序,而无需自己编写大量代码,那么Lift是可行的技术,并且是目前唯一的真正方法。

[ 来源 ]


3

在过去的两年中,我们在guardian.co.uk上取得了长足的进步-我们的开放平台基于Scala构建,我们的核心CMS(最初为Java)正在逐步合并更多Scala(我们即将从Maven到SBT进行构建),这是一次很棒的体验-确实使我们的开发人员感到振奋,其中一些人对Java感到有些厌倦:)

我鼓励您阅读有关过渡的这两篇文章,并可以将它们用作您尖尖的头发的佐证:

http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala

http://www.infoq.com/articles/guardian_scala

一些快速提示:

  • 首先用Scala编写测试-这样,您就可以熟悉该语言,增强对它的信心,而不必克服对立即将运行时添加到生产服务器中的任何担忧。

  • 请勿寻求新技术的许可。如果您必须:-)最好请求宽恕


+1!“不要寻求新技术的许可。如果必须的话,最好请原谅:-)”
Giorgio

2

这个问题与另一个问题吻合。那就是,迁移到Scala可以为哪些种类或项目提供附加值?我每天做Java工作,但梦见我可以“生气”使用Scala的那一天。

有几个回答我自己的问题:

  • 基于Actor的并发将带来巨大收益的问题(Akka)

  • Web应用程序通过COMET(提升)将数据推送到它们

还有其他见解或更好的经验吗?


1

我正在Scala中为Java应用程序编写测试,并同意这是一个不错的起点。我的测试覆盖面更好,因为它可以更快,更轻松地编写它们(而且由于我使用了Scala,因此我愿意将精力更多地集中在编写测试上)。

我也已经开始专门在Scala中进行原型设计和一次性POC。我试图使管理人员和主管尽可能地意识到我曾经将Scala用于这些一次性操作,并强调由于Scala,我能够快速启动并运行某些东西。我们需要(嗯,有点需要)一个Web应用程序来跟踪我们的节日派对白象游戏-与Scalatra和MongoDB一起工作1.5小时,而我的整个部门都在看这个应用程序并询问它。让我们面对现实吧,您将永远不会向经理描述该语言更具表现力或它的并发模型好得多的地方。但是,如果您向他们展示,您可以更快地完成更多工作,那么您会收获更多。

但是我认为最大的问题是使开发人员对Scala感到兴奋。我敢肯定,我们所有人都与不积极跟上新技术的开发人员一起工作,有时候,很难使这些人对做新的事情感到兴奋(为什么,我真的不明白)。向那些人展示Scala的一些好处(尝试REPL)是关键。如果让足够多的开发人员对生产力的相同收益进行讨论,那么您的组织中很有可能会正式采用Scala。

宣传并推动基层工作是2011年的主要目标。我们将看到效果如何,因为我等不及要使用Scala进行大部分工作的那一天了。


1

我想知道为什么选择其中一个?为什么决定放弃Java并一路使用Scala?

没有完美的工作工具。没有理由将一种语言的专业知识完全抛弃,而用另一种语言代替。

我不想(不再)在一家专注于一种语言或环境的公司工作。最好了解很多事情,并为工作选择合适的工具。

紧接着,要使您的组织完全转换到Scala也是很困难的。相反,我会尝试在Scala中完成一些项目(甚至项目的一部分),而不是采用全有或全无的方法。例如,您可以选择使用Specs2测试Java代码,与普通的旧JUnit相比,Specs2的语法非常漂亮-它也不复杂,令人困惑且难于使用Scala代码和范例,只是围绕定义应用程序行为的语法糖。


0

一个好的方法是演示同一程序的两个版本。通过这样做,您可以(在实践中)向您的同事展示Scala的表现力。对其他问题(XML,并发等)执行相同的操作可以证明使用Scala而不是Java来解决特定问题的好处。

当然,不要指望迁移会在一天内发生。您可能会低估许多问题:学习曲线,现有代码库等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.