哈哈哈

作者: c062197eecd2 | 来源:发表于2019-07-27 19:23 被阅读0次

Scala 的发展历史

java 大概是在 92 年的时候出生的
scala 在 2003 年出生
2003 - 2013 年的时候,一直无人问津.

2013 年的时候,开始变火 ,spark 框架诞生了,这个带火了scala,因为这个框架的底层就是使用scala开发的
spark 可以使用 java 语言开发,也可以使用 Scala 语言开发等等

看完本文后的能力:
能力1: 熟练使用 Scala 开发 spark 程序.

能力1: 熟练使用 Scala 开发 spark 程序

能力2 : 使用 scala 开发一个简易的通信框架

能力2 : 使用 scala 开发一个简易的通信框架

能力3 : 阅读 spark 的源码

能力3 : 阅读 spark 的源码

1. scala 的基本介绍

为什么要学 Scala 


1.优雅: 这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,APO 是否优雅灰直接影响到用户的体验

2.速度快: Scala 语言表达能力强,一行代码抵得上 Java 多行,开发速度快,Scala 是静态编译的,所以和 JRuby , Groovy  比起来速度会快很多.

3.能融合到 Hadoop 生态圈: Hadoop 现在是一个大数据的事实标准, Spark 并不是要取代 Hadoop ,而是要完善 Hadoop 生态圈, JVM 语言大部分可能会想到 Java ,但 Java 做出来的 API 太丑 ,或者想实现一个优雅的 API 太费劲了.

使用最多的版本是 2.11.
还有一个是2.10.x 版本也是比较多人用的,但是呢这个和上面那个不兼容的

scala 在数据处理上面,真的是非常的简洁,

2.scala 开发环境的安装

Windows 版本,建议去官网直接下载 zip 的安装包,直接解压后,.一定要注意的是,解压到一个没有中文没有空格的路径下面去.然后配置 SCALA_HOME 的环境变量就好了.这个本来没有的要新建.

关于:用户变量和系统变量,这两个都可以,只不过是其权限 不同罢了,有些公司会把用户变量或者系统变量的修改权限给你禁掉.

右击我的电脑,单击"属性",进入如图所示页面。下面开始配置环境变量,右击【我的电脑】--【属性】--【高级系统设置】--【环境变量】



1.HOME 的后面接上解压后的文件夹. 

SCALA_HOME=D:\develop\scala-2.11.8    

添加词条SCALA_HOME

2.配置Path : 就是刚刚添加的环境变量的名称的前面和后面都添加 % 号,然后在后面添加 \bin 

%SCALA_HOME%\bin

配置环境变量中的path 


    3. 到这里就配置完成了我们的win 的 scala ,在我们的黑窗口CMD中敲击命令 :        scala  去检验是否安装成功.

检验是否配置成功了

3. Scala 开发工具安装

目前的 Scala 的开发工具主要有两种: Eclipse  和 IDEA ,.这两个开发工具都有相应的 Scala 插件, 如果使用 Eclipse ,直接到 Scala 官网进行下载对应的版本就很可以了.   

 http://scala-ide.org/download/sdk.html

由于IDEA 的 Scala 插件更加的优秀,大多数的 Scala 程序员都使用 IDEA 进行开发的,我们可以通过IDEA 进行在线安装,也可以到 IDEA 的插件网进行下载对应的版本插件进行离线安装,

http://www.jetbrains.com/idea/download/

第一步:进入设置

我们进入了 Plugins 之后,可以使用在线安装,下面展示的是IDEA 2017(这个版本目前最多人用)也可以使用离线安装,标红的位置就是使用我们本地安装,这个安装包就是我们刚刚去网站进行下载的包.当然也可以使用中间和左边的在线安装,更加的方便.

第二步: 2017版本的IDEA找到Plugin(插件) 这是2019IDEA 的安装

我们这里推荐使用离线进行安装,因为在线国外的原因网速多少挺慢甚至没有的.

到这里我们就已经在我们的工具中安装好了   Scala 开发工具了,  然后重启我们 IDEA         

通过新建项目去检验是否安装成功.

4. Scala 的 REPL(ReadEvalPrint Loop/ 交互式解释器(其实按照单个的单词进行翻译更好一些)

R (Read /阅读), E(Evaluate / 评估) , P(Print / 打印输出) , L(Loop / 循环)
交互式解析器会读取输入内容,并对它进行求职,再返回结果,并重复此过程.(即所见即所得的编程)

说人话就是: Scala提供了Scala REPL,在我不确定一个算子的功能时,我可以很快打开REPL进行验证,并直观得到答案。

REPL 的特性: 
变量会在会话周期内一直可用
多行代码和单行代码一起编译
支持链接外部的数据库和代码
REPL 历史命令会跨会话存储

我们直接在黑窗口CMD 输入 scala 就可以启动 Scala  并且进入到 REPL 中了

使用Scala  就直接进入到了我们的Scala REPL 中了

:help   查看我们可以使用到的常用命令,因为命令后面都带了解释就不一一解释了,简单的英文自己不懂得可以翻译哈!

使用:help 可以查看我们所有能够输入的命令
1.系统自动帮我们给了一个变量名

REPL 自动分配变量名: 如果我们在 REPL 当中没有定义变量名,那么我们的变量名系统会自动给定
注意: Scala 当中的变量类型可以不用指定,系统会自动推断,为了减少可变性引起的 bug, Scala 当中推荐尽量使用不可变类型来声明变量. Var  和 Val  申明变量的时候,变量都必须初始化.

在 Scala 中我们的输出打印只需要 ,相比java 的而言是简短很多很多的.

println()   

2.我们可以直接去调用系统给的这个变量名获取里面的值

以上就是我们简单的 REPL 的 案例:就是所见即所得,这里可能还是很难理解,因为正常我们是不会再这个小黑窗口进行开发的,所以稍后我们将进入到 开发工具中去进一步的探索


4. 创建 支持 scala 的 maven工程代码开发

File  ==>  New  ==> Project

第一步: idea中创建一个普通的maven 工程 第二步:新建maven 子模块 在子模块中可以创建我们的scala 的 class 对象 第二步:不过通常我们创建的是scala  的 Object对象

注意:我们是要先把 scala 中的 scala maven jar 包依赖写好了,才可以在我们的  new 的时候, 才可以用到 Create New Scala Class .如果不导入依赖,那么就没有这个选项的,它只有新建 Java 对象.


```

<artifactId>Scala1</artifactId>

<groupId>asjdfas</groupId>

<artifactId>Scala</artifactId>

<packaging>pom</packaging>

<version>1.0-SNAPSHOT</version>

<modules>

    <module></module>

</modules>

<dependencies>

    <dependency>

        <groupId>org.scala-lang</groupId>

        <artifactId>scala-library</artifactId>

        <version>2.11.8</version>

        <!-- 如果想要用java -jar 来运行我们打包之后的jar包,则下面这个配置必须注释掉 -->

        <!-- <scope>provided</scope>-->

    </dependency>

</dependencies>

<build>

    <plugins>

        <!-- 限制jdk版本插件 -->

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-compiler-plugin</artifactId>

            <version>3.1</version>

            <configuration>

                <source>1.8</source>

                <target>1.8</target>

                <encoding>UTF-8</encoding>

            </configuration>

        </plugin>

        <!-- 编译scala需要用到的插件 -->

        <plugin>

            <groupId>net.alchim31.maven</groupId>

            <artifactId>scala-maven-plugin</artifactId>

            <version>3.2.2</version>

            <executions>

                <execution>

                    <goals>

                        <goal>compile</goal>

                        <goal>testCompile</goal>

                    </goals>

                </execution>

            </executions>

        </plugin>

        <!-- 项目打包用到的插件 -->

        <plugin>

            <artifactId>maven-assembly-plugin</artifactId>

            <configuration>

                <descriptorRefs>

                    <descriptorRef>jar-with-dependencies</descriptorRef>

                </descriptorRefs>

                <archive>

                    <manifest>

                        <mainClass>cn.itcast.scala.demo1.ScalaFirst</mainClass>

                    </manifest>

                </archive>

            </configuration>

            <executions>

                <execution>

                    <id>make-assembly</id>

                    <phase>package</phase>

                    <goals>

                        <goal>single</goal>

                    </goals>

                </execution>

            </executions>

        </plugin>

    </plugins>

</build>

</project>

```

网友评论

    本文标题:哈哈哈

    本文链接:https://www.haomeiwen.com/subject/cpasrctx.html