关于Scala的一些感想(一)
最近在完成自己的开源项目Application-center的时候,使用了Scala编程语言。
在使用了一段时间下来以后,有一些不是很“清晰”的感受,说实话我自己还没有很好的整理清楚,所以就先记录下来,不保证一定正确,只是个人的在现有经验下的看法而已
框架的选择
Java之所以这么繁荣很大的程度上是因为第三方开源社区的支持,当我们使用Java完成一些项目的时候,我往往都是先求助于开源社区,看看是否存在现有的解决方案,绝大多数时候我们都能找到合适的框架,然后直接用或者稍微修改一下就好了。
而且由于Java毕竟已经在企业开发领域活了许久了,因此很多领域中,业界往往都已经选择出了“佼佼者”,比如我们使用Spring来管理Bean的生命周期,使用Spring MVC作web框架,Mybatis作持久层的框架使用,AOP使用Spring AOP或者更强大的Aspectj等。
而由于Scala也是近几年“流行”起来的,虽然使用Scala编写的开源框架很多,但是在很多领域中,往往都还没有选择出其中的“佼佼者”,因此对于我们这些初学者来说,往往都会存在:「不知道该用什么框架」的疑惑。
虽然有Awesome Scala 但是我们也开源发现很少有一家独大的情况。不过好在Scala基于JVM,可以使用Java的框架,这样我们的选择面也更加的多了起来。
我最初在完成Application-center的时候,调研了下面的几组方案:
- Play framework + Slick 3.0.3
- Spray-can + Slick
- Spring MVC + Mybatis
- scalatra
Play Framework从目前来看在Scala编写的web框架中处于稍微“领先”的地位,但是对于之前一直使用Spring Mvc的Java开发者来说,在使用习惯上差别太大了。还有Slick,感觉这个框架是像整合hibernate和Mybatis的优良属性,但是目前感觉有点“四不像”,而且对事务的支持感觉太低级了,完成没法和Spring的事务管理器相提并论。也由很多开发者,包括我也使用Scala基于JDBC的风格编写过一个Scala JDBC小工具来和关系型数据库打交道。但是说实话都不是太好用。Spray的那一套东西,基于Akka,性能很不错,但是那套东西不是为了web开发而弄的,更多的是为了后端数据接口弄的。而且对于不熟悉Akka的开发者来说,学习成本简直不要太高太高。
项目初期我都使用新的工程尝试了前两种解决方案,可能是因为我对Scala和Akka还不是很熟练,所以感觉学习成本高了很多,尤其是Spray那玩意,让我一度怀疑我的智商。
因此为了「不折腾」为了加速开发进度,我最终还是选择了Spring Boot + Mybatis来完成开发。之所以这么选择主要还是因为没有学习成本,而且进度,可能出现的问题我都可控制。
编程语言的定位
此处建议大家看看紫杉的回答,说的非常的好
后记
暂时只想到了这么多,后续有更多的想法的时候,我再更新这个文章。
关于Scala的一些感想(一)的更多相关文章
- idea+scala sdk + scala插件
0X01 前言 我的主语言是python,说起java,想起了大二(三年前)上课时教过,课程设计的时候曾经做过个俄罗斯方块,后面其他设计copy代码读懂代码(再后面的课设就用python了). 本次涉 ...
- jdb调试scala代码的简单介绍
在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...
- scala练习题1 基础知识
1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等: 2,在scala REPL中,计算3的平方根,然 ...
- 牛顿法求平方根 scala
你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...
- Scala集合和Java集合对应转换关系
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...
- Scala化规则引擎
1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
- Scala快速概览
IDEA工具安装及scala基本操作 目录 一. 1. 2. 3. 4. 二. 1. 2. 3. 三. 1. 2. 3. 4. 5. 6. 7. 四. 1. (1) (2) (3) (4) (5) ( ...
- Scala Macros - scalamela 1.x,inline-meta annotations
在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改.扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可 ...
- Scala Macros - 元编程 Metaprogramming with Def Macros
Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为S ...
随机推荐
- Java Serializable系列化与反系列化
[引言] 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接 ...
- [转]CTO、技术总监、首席架构师的区别
经常有创业公司老板来拜访我,常常会拜托给我一句话:帮我找一个CTO. 我解释的多了,所以想把这个写下来,看看你到底需要的应该是啥. 一.高级程序员 如果你是一个刚刚创业的公司,公司没有专职产品经理和项 ...
- 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决办法方案
最近操作系统不断地报异常或错误,可能是用得太久了,而刚好工作比较多又不想重新安装系统,但用一段时间后(一天大概有两次)系统就出现各种问题导致无法继续使用真是痛苦万分啊,今天又来了这样的错误: 此实现不 ...
- LoadRunner:视频教程、课件
LoadRunner 视频教程地址: 51 自学网LoadRunner入门视频教程 (这个网站的网址粘不上来,可能与博客园有过节吧)视频中的课件下载地址:链接: http://pan.baidu.co ...
- Webservice详解
WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际) ...
- js,jq新增元素 ,on绑定事件无效
在jquery1.7之后,建议使用on来绑定事件. $('.upload a').on('click',function(){ $(this).remove(); }) 在DOM渲染的时候,也就是ht ...
- Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)
本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instance,可以通过 Pause 操作将 instance 的状态保存到宿主机的内存中.当需要恢复的时候,执 ...
- Snapshot Instance 操作详解 - 每天5分钟玩转 OpenStack(36)
本节我们通过日志详细讨论 instance 的 snapshot 操作. 有时候操作系统损坏得很严重,通过 Rescue 操作无法修复,那么我们就得考虑通过备份恢复了.当然前提是我们之前对instan ...
- eclipse配置tomcat出现错误:Could not load the Tomcat server configuration at \Servers\Tomcat v7.0 Server at localhost-config.
这是eclipse与之前的server配置冲突导致的,最简单的办法就是给Eclipse换个工作目录(Workspace). 步骤: 打开eclipse后,出现下面图片所示的页面,选择其他目录,重新配置 ...
- linux中通配符和常用特殊符号
1 通配符 2 特殊符号 3 参考文档 鸟哥的私房菜 http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_4.php#settings_wildcar ...