去年对scala的研究中断于项目紧张时, 所以至今对scala的了解仅限于语法, 一些相关问题, 比如环境的搭建, 概念还是相当模糊, 今天突然兴起, 跑到网上乱搜了一通, 搜来一些信息, 权当为以后转攻scala做个铺垫吧.
1. ide的选择: 至今用过的ide只有三种, eclipse, netbeans和文本编辑器(泛). eclipse 的scala插件一上手就觉得不爽, 代码补全能力几乎为零, 构建也慢. netbeans的scala插件在代码补全上很不错, 但是有些bug比较严重, 连续编译功能会时不时地崩溃, 代码编辑器上一片红, 非重启netbeans不能恢复, 这个足以让人无法忍受. 此外, 两者对scala类库的源码查看都比较雷, 居然尝试编译打开的源码文件, 结果也是一片大红, 非常影响心情. vim这类编辑器, 我一向只用来编写bash脚本, 从未试过在上面开发java/ruby之类的程序, 不好评价. intellij一向不怎么用, 据说scala插件不错, 但是编译用时比前面那两位还长.
2. 开发环境: 从google上的情况看, 目前比较吃香的是SBT+JRebel 的组合, 再加上一个编辑器(ide). 由于sbt有持续编译功能, 其实用什么ide都不重要了, 即使vim又怎么样, 只要能有插件能显示项目视图, 一些简单的代码提示, 剩下的就让sbt去操心好了. JRebel算是我的一个新发现, 怪我孤陋寡闻了, 但它的特性的确让我眼前一亮, 只加载修改过的class文件, 让appserver上的程序继续跑而非重新加载, 是我三年前做梦都想要的功能. 有了jrebel, 即使scala编译的确较java慢又怎样, 我不用重新加载, 最后还是比你快得多. 此外一个附加bonus是, JRebel对scala的license是免费的, 对java则是US$365/licence*year(企业版). 其实, 即使不做scala项目, 我也很乐于在java项目里引进这个工具, 一年365美刀实在是个小数, 相对于浪费在程序员薪水上的投入来说.
3. 开发框架: liftweb是我最先接触的, 因为它最有名, 有名到maven刚有scala的archetype, 就马上有了lift的archetype, 创建一个lift项目只是举手之劳, 甚至在还不知道lift为何物的时候. 但说实话liftweb确实比较复杂, 我跌跌撞撞跟着simple lift的tutorial完成了一个项目, 仍然对这个框架的作用机制一无所知, 感觉十分不爽. play framework是个不错的java框架, 由于它对scala的支持也相当强, 我会把它当作我的scala起步框架.
4. 关于groovy: groovy的发明人对scala评价极高, 甚至说出"如果那时我就能见到scala, 那我很可能都不会去发明groovy"的话. 我也粗通一些groovy, 在我看来, 如纯粹作技术上的比拼, groovy几乎没有存在的必要, 只有那些非动态不可的场合才能保住它的一席之地. 但是行业的当前状况是java一家独大, groovy作为java的亲生嫡系, 接受度自然较高, 加上学习曲线几乎恒零(对于javaer来说), 短期前景还是在scala之上的. 不过我相信scala终将突破成见, 占据主流, 因为它在性能和语法上的优势实在是明显. groovy在我看来只适用于有简单计算的CRUD程序(如grails站点), 在性能敏感的领域groovy决无用武之地. 公司项目里有一个swing桌面程序, 一年前被一个家伙用groovy写了, 起初他还很得意地表示自己的选择是多么明智, 所需代码量是多么小. 但是当代码量无可避免地上升后(需求的细化需要越来越多的类), 性能差得一塌糊涂, 根本无法使用. 最后的结果居然是所有groovy代码被废, 整个程序须要用java重新写过. 相信如果当时采用scala来写这个swing程序, 无论是性能还是代码量都会令人满意的.
分享到:
相关推荐
赠送Maven依赖信息文件:scala-parser-combinators_2.11-1.0.4.pom; 包含翻译后的API文档:scala-parser-combinators_2.11-1.0.4-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.scala-lang.modules:scala-...
赠送Maven依赖信息文件:scala-parser-combinators_2.12-1.1.0.pom; 包含翻译后的API文档:scala-parser-combinators_2.12-1.1.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.scala-lang.modules...
赠送Maven依赖信息文件:scala-compiler-2.11.8.pom; 包含翻译后的API文档:scala-compiler-2.11.8-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.scala-lang:scala-compiler:2.11.8; 标签:scala...
对应Maven信息:groupId:org.scala-lang.modules,artifactId:scala-parser-combinators_2.11,version:1.0.4 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译...
Scala是一种多范式编程语言,融合了面向对象和函数式编程的概念。它被设计成可以在Java虚拟机(JVM)上运行,并可以充分利用Java的生态系统。IntelliJ IDEA的Scala插件提供了对Scala语法的深度支持,包括智能代码...
scala-intellij-bin-2018.3.2.zip插件,亲测可用!!!scala-intellij-bin-2018.3.2.zip插件,亲测可用!!!scala-intellij-bin-2018.3.2.zip插件,亲测可用!!!
Scala是一种强大的多范式编程语言,它融合了函数式编程和面向对象编程的特点。IntelliJ IDEA是一款广受赞誉的Java开发集成环境,为开发者提供了高效、智能的代码编写体验。"scala-intellij-bin-0.41"是专门为...
赠送Maven依赖信息文件:scala-compiler-2.11.12.pom; 包含翻译后的API文档:scala-compiler-2.11.12-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.scala-lang:scala-compiler:2.11.12; 标签:scala、lang...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。IntelliJ IDEA是一款著名的集成开发环境(IDE),广泛用于Java、Scala和其他 JVM 语言的开发。"scala-intellij-bin-2020.2.3.zip" 是一个...
赠送Maven依赖信息文件:scala-library-2.11.8.pom; 包含翻译后的API文档:scala-library-2.11.8-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.scala-lang:scala-library:2.11.8; 标签:library、scala、...
Scala是一种强大的多范式编程语言,它结合了面向对象和函数式编程的特点,为开发者提供了丰富的表达能力和灵活性。在Java虚拟机(JVM)上运行的Scala,因其高效性和与Java的无缝集成,成为了开发大规模分布式计算...
赠送Maven依赖信息文件:scala-compiler-2.12.7.pom; 包含翻译后的API文档:scala-compiler-2.12.7-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.scala-lang:scala-compiler:2.12.7; 标签:scala...
赠送Maven依赖信息文件:scala-reflect-2.11.8.pom; 包含翻译后的API文档:scala-reflect-2.11.8-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.scala-lang:scala-reflect:2.11.8; 标签:reflect...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。IntelliJ IDEA是一款广受赞誉的Java集成开发环境(IDE),它为开发者提供了丰富的工具和功能来提升开发效率。"Scala-intellij-bin-2017.2.13...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。IntelliJ IDEA是一款非常流行的集成开发环境(IDE),尤其受到Java和Scala开发者喜爱。在本压缩包"scala-intellij-bin-2016.3.1.zip"中,...
赠送Maven依赖信息文件:jackson-module-scala_2.11-2.6.7.1.pom; 包含翻译后的API文档:jackson-module-scala_2.11-2.6.7.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:...
scala-SDK-4.7.0-vfinal-2.12-linux.gtk.x86_64.tar.gz scala-SDK-4.7.0-vfinal-2.12-linux.gtk.x86_64.tar.gz
赠送Maven依赖信息文件:scala-parser-combinators_2.12-1.1.0.pom; 包含翻译后的API文档:scala-parser-combinators_2.12-1.1.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.scala-lang.modules:scala-...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。IntelliJ IDEA是一款广受欢迎的集成开发环境(IDE),尤其在Java和Scala开发者中有着极高的赞誉。"scala-intellij-bin-2021.3.6.zip"是一个...
Scala是一种强大的多范式编程语言,它融合了函数式编程和面向对象编程的特点。IntelliJ IDEA是一款广受赞誉的Java集成开发环境(IDE),它为开发者提供了丰富的工具和功能来提升开发效率。针对Scala语言,IntelliJ ...