先学java还是scala_java – 我应该学习Scala吗?

>可移植性:至少我希望Linux和Windows。关于手机,有没有人成功地让它运行在那里?

是。在Android上有一些关于Scala的运动。至于J2ME,我在这方面看到了一些东西,但不是很多。在源代码库上有一些与J2ME相关的代码。我不知道它是多么可行,但它看起来对我没有太多的需求。

我还会提到在Scala-Lang上有一个关于所需目标平台的池,J2ME是其中之一,在图腾柱上非常低。

> C兼容性:我可以将C代码与Scala混合吗? (JNI 2)

以及你可以混合C与Java,无论什么是值得的。如果你没有任何经验,你可以阅读Java资源,因为它们中的任何内容都适用于Scala,没有任何更改(除了Scala语法)。

>编程范例:我现在不愿意切换到FP。我可以首先使用OO和程序与一些FP,然后改变比例,因为我学习?

当然,是的。 Scala走出来的方式,以确保你不需要编程的功能风格。这是Scala从功能性人士的主要批评,事实上:一些不认为一种语言功能,除非它强迫程序员写功能风格。

无论如何,你可以去做事情你的方式。我打赌,但是,你会拾起功能习惯,甚至没有意识到他们是功能。

也许你可以在我自己的博客中看看Matrices系列写一个Matrix类。即使它看起来像标准的OO代码,它是,事实上,非常实用。

>工具链成熟度:你对IDE和调试器的经验是什么?我现在使用Eclipse,它似乎确定。

IDEA(IntelliJ),NetBeans和Eclipse都对Scala有很好的支持。看起来IDEA是最好的,NetBeans / Eclipse保持青蛙跳跃,虽然NetBeans肯定比Eclipse更稳定。另一方面,对Eclipse的支持正在采取一个非常有前途的路线,应该会在未来6个月左右产生结果 – 这只是一个碰撞的路线。 🙂

对于这些环境,Scala工具的一些有趣的迹象是,开发中的Eclipse插件使用AOP与整个IDE更无缝地合并,NetBeans插件在Scala中被完全重写,并且在IDEA上有一个Scala Power Pack支持将Java代码转换为Scala代码。

EMACS有很多针对Scala的工具,很多小型编辑器也支持它。我很喜欢jEdit对小程序和脚本的支持,例如。

还有很好的Maven支持 – 事实上,安装Lift的标准方法是安装maven,然后构建一个Lift原型。这将拉入一个适当的Scala版本。有一个scala:cc目标,也将触发重新编译。

说到重新编译,Maven,特别是Ant都不能很好地识别需要重新编译的内容。从那个问题sprung SBT(简单构建工具),写在Scala,它通过使用Scala编译器插件解决了这个问题。 SBT使用与Maven相同的项目布局,以及Maven / Ivy存储库,但项目配置使用Scala代码而不是XML – 同时支持Maven / Ivy配置文件。

>学习速度:考虑到我的经验,你认为我能用Scala达到一个可行的水平有多快?

非常快。作为纯粹的OO语言,Scala已经引入了一些不错的功能,类似于C中存在但不是Java的一些东西,尽管它们以不同的方式工作。在这方面,一旦你意识到这样的功能是和它们相关的C的东西,你会远远领先于Java程序员,因为你已经知道该怎么做。

>部署:如何部署Scala程序?是一个jar,是一个可执行文件?

与Java一样的东西。您可以部署JAR,WAR或任何其他Java目标,因为scala编译器生成类文件。实际上,您使用Java的jar从类文件生成Scala的JAR文件,并使用Lift支持构建WAR文件的Maven目标。

但是,有一个替代脚本文件。您可以调用“scala”直接运行Scala源代码,类似于Perl的Shell脚本。它也可以在Windows上完成。然而,即使使用编译守护程序来加快执行速度,启动时间也足够慢,​​以至于在重脚本环境中有效使用Scala需要类似于Nailgun。

至于Scala的缺点,看看我的答案(和其他人的)在this Stack Overflow问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值