相关文章推荐
爱看书的核桃  ·  alla scala_百度百科·  6 月前    · 
失恋的薯片  ·  Scala ...·  1 年前    · 

Scala 是 Scalable Language 的简写,网上没有发现谁问 Scala 怎么读,你是按 Scalable 的发音读作 ['skeɪlə] 还是喜欢 读作 斯卡拉? Scala 是一门多范式的能够运行于JVM和.Net平台之上的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。

在Scala的创建之初,并没有怎么引起重视,随着Apache Spark和Apache Kafka这样基于Scala的大数据框架的崛起,Scala逐步映入大数据从业者的眼帘。Scala的拥护者们认为Scala的主要优势是速度和它的表达性。

Scala的创建者——Martin Odersky

联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。Funnel是把函数式编程思想和Petri网相结合的一种编程语言。Odersky先前的工作是Generic Java和javac(Sun Java编译器)。Java平台的Scala于2003年底/2004年初发布。.NET平台的Scala发布于2004年6月。该语言第二个版本,v2.0,发布于2006年3月。
截至2009年9月,最新版本是版本2.7.6 。Scala 2.8预计的特性包括重写的Scala类库(Scala collections library)、方法的命名参数和默认参数、包对象(package object),以及Continuation.
2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala,其余部分也打算要迁移。此外, Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的。

Scala 特性

1、面向对象特性
Scala是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。
类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制。这两种途径能避免多重继承的种种问题。 2、函数式编程
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。
更进一步,程序员可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。 3、静态类型
Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统具体支持以下特性:
  • 泛型类
  • 协变和逆变
  • 标注
  • 类型参数的上下限约束
  • 把类别和抽象类型作为对象成员
  • 复合类型
  • 引用自己时显式指定类型
  • 视图
  • 多态方法
4、扩展性
Scala的设计秉承一项事实,即在实践中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:
  • 任何方法可用作前缀或后缀操作符
  • 可以根据预期类型自动构造闭包
5、并发性
Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。

有哪些优秀的 Scala 开源项目?

1、spark 显然已经成为了scala里最引人关注的项目。

2、kafka 可能是仅次于spark的被广泛了解的scala开源产品。

3、akka&spray,akka 太优秀了,以至于被 typesafe收购,并直接用akka替代scala自己的actor,原作者现在担任typesafe的CTO。

4、play&lift, 在web框架里,比较突出的就是play和lift了,play也已经被typesafe收购,我也是因为 play 接触到 sbt,进而又接触 Scala。
5、 sbt - The interactive build tool Scala项目构建工具

6、http4s:用来写写http server/client

7、doobie:mysql的client

Scala官网

Scala 简介

相关阅读:

《Scala入坑笔记》缘起 3天就搞了一个 hello world

Scala 是 Scalable Language 的简写,网上没有发现谁问 Scala 怎么读,你是按 Scalable 的发音读作 ['skeɪlə] 还是喜欢读作斯卡拉? Scala 是一门多范式的能够运行于JVM和.Net平台之上的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。发展历史在Scala的创建之初,并没有怎么引起重
一、 Scala 核心编程课程 简介 近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是 Scala 实现的, 因此也带火了 Scala 语言,目前 Scala 被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。新一代的物联网时代到来,会对大数据应用人才的需求越加紧迫。 尚硅谷网罗和整合了学员很喜爱的师资,打造出专注于Spark开发的 Scala 课程,我们讲解 Scala 核心编程技术,同时也讲解编程思想、设计模式和 Scala 底层实现,让您有豁然开朗的感受。二、课程内容和目标本课程重点讲解 Scala 核心编程,内容包括: Scala 语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数推断、控制抽象、Trait、 面向对象 编程、异常处理、惰性函数、Akka及Actor模型、Spark Master和Worker通讯、隐式转换、隐式参数、工厂模式、单例模式、观察者模式、装饰者模式、代理模式、泛型、上下界、视图界定、上下文界定、协变逆变不变和源码剖析。通过系统全面的学习,学员能掌握 Scala 编程思想和 Scala 底层机制,为进一步学习Spark打下坚实基础。三、谁适合学1.希望以较低的投入和风险,来了解自己是否适合转型从事Spark开发的求职人员。2.有一定的Java基础,或者自学过一些Java书籍与视频资料,想系统掌握 Scala 语言的程序员。
1. 引入mysql的驱动包到/usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/hbase(目录根据配置而不同) mysql-connector-java-5.1.7-bin.jar 并在mysql创建表stock: CREATE TABLE `stock` ( `id` dec
Scala 相比于 Java 的优势在哪里:https://segmentfault.com/q/1010000000671822【 Scala 】使用Option、Some、None,避免使用null:https://blog.csdn.net/jasonding1354/article/details/46788787for 循环集合的语法如下:for( var x <- List ){ IT 圈里有哪些经常被 错的词? - Filestorm的回答 - 知乎 https://www.zhihu.com/question/19739907/answer/12960562 solr 同 solar [ˈsəʊlə(r )] naginx = engin x Adobe [əˈdəʊbi] Linux [ˈlɪnəks] integer [ˈɪntɪdʒə] Lucen...
很高兴看到你对 Scala 和Spark的学习感兴趣。以下是一些我在学习和开发过程中总结的小 笔记 : 1. Scala 是一种基于JVM的 编程语言 ,它具有 函数式编程 面向对象 编程的特性。 Scala 的语法简洁,代码可 性高,可以大大提高开发效率。 2. Spark是一个快速、通用、可扩展的大数据处理框架。它支持多种数据源,包括Hadoop Distributed File System(HDFS)、Apache Cassandra、Apache HBase等。Spark提供了丰富的API,包括Spark SQL、Spark Streaming、MLlib和GraphX等,可以满足不同的数据处理需求。 3. 在使用Spark进行开发时,可以使用 Scala 或Java编写代码。 Scala 代码相对于Java代码更加简洁,可以减少代码量和开发时间。 4. 在使用Spark进行数据处理时,可以使用RDD(Resilient Distributed Datasets)或DataFrame。RDD是Spark最基本的数据结构,它是一个分布式的、不可变的数据集合。DataFrame是一种类似于关系型数据库中表的数据结构,它可以使用SQL语句进行查询和操作。 5. 在使用Spark进行开发时,可以使用IDE(Integrated Development Environment)或文本编辑器。常用的IDE包括IntelliJ IDEA、Eclipse和NetBeans等。文本编辑器可以使用Sublime Text、Atom和Notepad++等。 希望这些小 笔记 能够对你的 Scala 和Spark学习有所帮助。祝你学习愉快!
The environment variable JAVA_HOME(with the value of xxx) does not point to a valid JVM installation Linprog02: 一样的问题啊bro 如何用Visio画数据库实体关系图 永远不落地的菜鸟: 请教下,为什么我的Viso没有你那个数据库属性配置窗口,不知道在哪里可以点击出来,麻烦告知下方式 过滤器(Filter)和拦截器(Interceptor)的区别 知识汲取者: 牛,这总结的比GPT好 javax.validation.ValidationException: Unable to create a Configuration Rabbit_jump: 您好,我添加了相关的依赖,但是仍然报错,同样的错误 开机显示Error1962:No operating system found.Press any key to repeat boot sequence. qq_43625764: 我是没有把引导盘装在磁盘里面