Answers:
可能最简单的方法是首先仅将Scala用于测试。在这种情况下,您甚至不必告诉您的老板:-)如果他问,请告诉他“那只是我的私人测试用例,使用Scala如此容易和快捷得多”。一旦您(和您的组织)对Scala有了足够的经验,就可以开始将其用于“真实”代码。
让您的老板阅读以下经历:
我目前正在Scala中从事大部分工作。(我应该提到,自从前一段时间发明车轮以来,Scala是最好的东西。:-D)
以我的拙见,这是唯一一种真正使人们能够选择最佳方法来完成任务的语言,而无需在(更多)面向对象方法和(更多)功能方法之间进行不必要的区分。
看看以前声称类似这样的语言,我基本上可以看到两个相互竞争的语言设计阵营:
从面向对象的角度来看,函数式编程最近获得了一些关注,并认为:“嗯,我们并不真正了解该函数式东西,但让我们在语言中添加一些奇特的语法糖,因此我们可以断言它是函数式的太!” (例如:Java,Python)
然后来自功能方面的人认为:“嗯,我们的功能方法远胜于其他任何方法,而且面向对象的废话很烦人,但让我们在语言中添加一些其他关键字,这肯定会使我们的语言逃脱学术界!!” (例如:F#,OCaml)
Scala的设计师统一了双方的许多方法,并创建了一种设计良好的语言,以我的拙见,这是与其他语言的最大区别,因此决定采用“法兰克斯坦”方法进行编程语言设计。
我只用Lift做过较小的事情,也只用过Rails和Django的肤浅经验,我不得不承认,在大多数时候,我想知道为什么Lift中的某些东西与我的预期有所不同,这是由于我的期望是有缺陷,Lift的方法更为出色。
Lift当然不是“轻松介绍Scala”,但是了解Lift的工作原理几乎与之前学习Scala一样有意义。
在没有任何逻辑的情况下拥有“干净”视图的能力是对其他声称相同但又不足的框架的一项重大改进。Scala的XML文字支持使您可以验证响应的格式是否正确:编译器将在编译时证明您仅向客户端发出格式正确的XML。
如果您要构建外观,感觉和行为类似于“真实”桌面应用程序的Web应用程序,而无需自己编写大量代码,那么Lift是可行的技术,并且是目前唯一的真正方法。
[ 来源 ]
在过去的两年中,我们在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编写测试-这样,您就可以熟悉该语言,增强对它的信心,而不必克服对立即将运行时添加到生产服务器中的任何担忧。
请勿寻求新技术的许可。如果您必须:-)最好请求宽恕
我正在Scala中为Java应用程序编写测试,并同意这是一个不错的起点。我的测试覆盖面更好,因为它可以更快,更轻松地编写它们(而且由于我使用了Scala,因此我愿意将精力更多地集中在编写测试上)。
我也已经开始专门在Scala中进行原型设计和一次性POC。我试图使管理人员和主管尽可能地意识到我曾经将Scala用于这些一次性操作,并强调由于Scala,我能够快速启动并运行某些东西。我们需要(嗯,有点需要)一个Web应用程序来跟踪我们的节日派对白象游戏-与Scalatra和MongoDB一起工作1.5小时,而我的整个部门都在看这个应用程序并询问它。让我们面对现实吧,您将永远不会向经理描述该语言更具表现力或它的并发模型好得多的地方。但是,如果您向他们展示,您可以更快地完成更多工作,那么您会收获更多。
但是我认为最大的问题是使开发人员对Scala感到兴奋。我敢肯定,我们所有人都与不积极跟上新技术的开发人员一起工作,有时候,很难使这些人对做新的事情感到兴奋(为什么,我真的不明白)。向那些人展示Scala的一些好处(尝试REPL)是关键。如果让足够多的开发人员对生产力的相同收益进行讨论,那么您的组织中很有可能会正式采用Scala。
宣传并推动基层工作是2011年的主要目标。我们将看到效果如何,因为我等不及要使用Scala进行大部分工作的那一天了。
我想知道为什么选择其中一个?为什么决定放弃Java并一路使用Scala?
没有完美的工作工具。没有理由将一种语言的专业知识完全抛弃,而用另一种语言代替。
我不想(不再)在一家专注于一种语言或环境的公司工作。最好了解很多事情,并为工作选择合适的工具。
紧接着,要使您的组织完全转换到Scala也是很困难的。相反,我会尝试在Scala中完成一些项目(甚至项目的一部分),而不是采用全有或全无的方法。例如,您可以选择使用Specs2测试Java代码,与普通的旧JUnit相比,Specs2的语法非常漂亮-它也不复杂,令人困惑且难于使用Scala代码和范例,只是围绕定义应用程序行为的语法糖。