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:
如何用Visio画数据库实体关系图
永远不落地的菜鸟:
过滤器(Filter)和拦截器(Interceptor)的区别
知识汲取者:
javax.validation.ValidationException: Unable to create a Configuration
Rabbit_jump:
开机显示Error1962:No operating system found.Press any key to repeat boot sequence.
qq_43625764: