2017-06-06 67 views
1

我们(我的团队)开始使用云托管的基于Web的应用程序。我们开始使用Scala + Play作为服务器端Web应用程序。由于没有人知道我的团队中的Scala(以前的Java/Java Script/Python/C++经验),我们所有人都在经历一个陡峭的学习曲线。花了几周的时间学习Scala的基础知识之后,我们以play-scala-starter为例作为基础。团队成员花了几天时间创建访问mysql数据库的原型GET + POST API处理程序。 考虑到Scala的重大努力和花费的时间,为了比较,一个团队成员在半天(4-5小时)内使用node.js构建了相同的原型功能。这是我们所有人的启示。为了补充说明,互联网充满了企业级应用程序中使用的node.js成功案例(请注意,无论如何,我们将使用基于JS的框架,例如Angular,React等)。 现在作为一个团队,我们正在讨论下一个方法 - play + scala或node.js.我们不希望根据短期收益做出决定,或者避免在加速阶段进行最初的斗争。这就是为什么在这里发布这个问题来获得真实世界的见解。如果这是一个错误的地方提出这样的问题,那么请建议适当的问题。由于它是'讨论'类型,很可能这个问题将被关闭。 注意:这篇文章不是批评任何方法。所以提前道歉。对Play + Scala与JavaScript的使用缺乏实际见解

+1

我认为比原型设计速度更重要的一个指标是重构 - 大代码库速度,这是一个好的类型系统对于 – nafg

+0

至关重要https://developers.redhat.com/blog/2015/04/22/scala-vs -node -js-as-a-restful-backend-server/ – sjrd

回答

2

这是您在“快速浏览Scala并构建原型”时应该期待的内容。斯卡拉是一项长期投资。如果你想获得它的类型系统,表现力和函数式编程概念的所有好处,几周后我会花费更多的时间(我已经做了近三年,现在仍然在学习)。

我工作在一个成功的初创公司,它的后端是用NodeJS编写的,因为它和你描述的一样,但现在他们正在Scala中做所有的新东西(不是Play,而是更多的面向FP框架Finch;但是我在前两个工作中一直在使用Play,它绝对不是最普遍的Scala Web框架,那么绝对在顶端附近)。所以不要担心,它在生产中非常重要。例如,我的favourite chess portal完全在Play堆栈中完成。还有很多其他的three years ago,到目前为止这个列表肯定要大得多(当然,这些只是最受欢迎的列表;还要注意,这是专门声明使用Play框架的人的列表,因为Scala列表一般会包括许多其他巨头,如Twitter,Coursera,Soundcloud,Spotify,Foursquare,Netflix,AirBnB,Quora,Tumblr,eBay等)。

当做得对,函数式编程(哦,是顺便说一句,我甚至没有考虑OOP风格的Scala)为您提供了很多安全性和安全性。你知道那句老话 - “我曾经觉得自己像JS的专家,但没有任何工作,现在我觉得自己像一个哈斯克尔的业余爱好者,但一切正常。”但是与Haskell相比,我觉得Scala拥有更多的吸引力。我理解你的担心,当你谷歌的东西与NodeJS相关,然后相同的斯卡拉,但相信我,一旦你开始你会意识到,斯卡拉有一个大的社区,各种博客/论坛/ stackoverflow和huge ecosystem

就NodeJS本身而言,您会发现与Play有很多相似之处,它们都是异步事件驱动的框架。但是谈论JS作为一种语言,如果你花时间在Scala上精通它,你会问自己,你怎么可能没有它的某些方面,特别是它的类型系统(TypeScript吸引btw)。

我知道我是主观的,但它是一个基于意见的问题。它应该(也可能会)被标记为过于宽泛/不具有建设性/偏离主题/不清楚,但我决定鼓励你们做出长期的良好决定。找一些额外的时间,通过good introductory book,报名参加Coursera course(昨天开始),下个月的这个时候你会对此感觉更加自信。当然,如果明天你需要一个原型,一个月是很长的一段时间,但如果时间真的很关键,那么我总是会建议采用你最熟悉的技术,然后试验一个更轻松的项目。否则,你不仅会感到沮丧,而且会产生一个糟糕的产品。

+0

slouc:你解决了我的主要问题。我同意Scala在短期原型设计中不需要考虑。是的,像往常一样,今天要面对压力。然而,我们作为一个团队决定与Scala合作,因为它提供了与Node相比的长期优势。我们故意避免使用Java,因为太多的锅炉代码和可伸缩性限制(Java8可能会解决这些问题中的一些)。主要有两件事让我们放慢了脚步: 1.斯卡拉语言本身的浩大 2.大多数时候,Google并没有像Node或Java那样返回建议。 感谢细节。 – NKM

+0

@NKM斯卡拉确实是一个相当广泛的语言。我列出的资源(书籍和课程)由Scala自己创建,他们会带你走上最有意义的道路,使学习曲线尽可能愉快。如果您通过这些资源投入以下六周的时间来学习Scala,那么您将会处于顶峰。一旦你完成了,你将完全有能力在Play中编写高质量的网络服务。你会发现越来越先进的概念,但只是一次一个,这将是一个有趣和有益的过程。 – slouc

+0

除了这个堆栈溢出论坛,gitter聊天室和scala用户论坛(scala-lang)是否还有其他我不知道的社区论坛? – NKM

0

一般来说,如果您是新手语言:预计时间。所以我并不感到奇怪,在Node.js中做原型的速度更快。

我的建议:在这种情况下坚持Java。如果你来自C++/Java/JS,这会更容易。

从技术角度来看,我不会推荐nodejs:它有可扩展性问题,并且Play基于Akka构建,因此您可以免费获得所有Akka的好东西。以另一种语言获得这种权利是很困难的。如:真的很难。

总之:从Play Java开始,稍后再转到Scala。

+0

除了上面在我的评论中提到的原因,我们会坚持Java。 – NKM