一、概述

1.1 为什么要学Scala?

Spark是新一代的内存级大数据的计算框架,是大数据学习的重要内容。随着Spark的兴起,同时也带动了Scala的学习,因为Spark就是Scala编写的。为了更好的学习Spark,首先学习Scala就是必不可少的。

1.2 Scala和Java的关系?

一般来说,学习Scala的人都了解Java。Scala是基于Java的,它包含了Java的部分类库并进行了包装,同时也有它特有的类库。

1.3 Scala的语言特点

Scala是一门以Java虚拟机(JVM)为运行环境并且将面向对象和面向函数式的特性最佳结合的静态类型编程语言(静态语言需要提前编译,如:java,c++等,动态语言如:js等)。

因此,Scala是一门多范式的编程语言,支持面向对象函数式编程。(多范式指:多种编程方法的意思。有面向过程、面向对象、函数式编程、泛型四种编程方法)。

Scala的源码(.scala)会被编译为Java的字节码(.class),然后运行在JVM之上,并且可以调用现有的Java类库,实现两种语言的无缝连接。同时,Scala还将函数式编程完美的融合到了Java中,作为一门语言,它是非常简洁高效的。

二、Scala环境搭建

2.1 安装步骤

  1. 首先确保已经安装了JDK 1.8;
  2. 下载需要的Scala安装文件scala-*.zip
  3. 解压到需要的目录
  4. 配置环境变量
    SCALA_HOME=D:\Program Files\scala-2.12.15
    PATH=%SCALA_HOME%\bin
  5. 在命令窗口中输入scala测试
  6. 在IDEA中安装Scala插件,默认情况下IDEA不支持Scala的开发,需要安装Scala插件。

三、Hello Word案例

3.1 创建一个maven项目

默认下,Maven不支持Scala的开发,需要引入Scala框架。右键点击->Add Framework Support->选择scala并配置Use library(scala的安装路径)

new一个新的目录scala,并Mark Directory as -> 选择Sources root。

创建包路径,然后右键new一个scala class,

在类中生成main方法:(def main)

object Hello {
def main(args: Array[String]): Unit = {
println("hello world")
System.out.println("hello world")
} }

程序说明;

  1. 参数声明:Java中是(类型 参数名);Scala中是(参数名 类型);
  2. Scala中没有public关键字,如果没有声明访问权限,默认就是公共的;
  3. Scala中没有static关键字,因为scala中没有静态语法;
  4. Scala中没有Void,而有Unit类型表示没有返回值;
  5. Scala中声明方法必须使用def的关键字;
  6. Scala中方法实现赋值给了方法声明,所以中间必须有等号连接。
    def main(args: Array[String]): Unit(方法声明)= (方法实现){}
  7. Scala中一切都是对象且没有静态语法,为了模仿静态语法,上面的代码是通过采用伴生对象单例的方式调用方法。(Scala中使用object声明的对象都是单例对象;伴生对象就是这个类本身,即Hello);
  8. class关键字和Java中的作用相同,用来定义一个类;

3.2 关联源码

在使用Scala的过程中,为了搞清楚Scala的底层原理,可以查看源码和关联源码。

  1. 查看源码:ctrl + 关键字
  2. 关联源码,从官网下载对应版本的scala-sources-2.12.15.tar.gz的源码文件,解压缩到scala的lib目录下;点击Attach Sources,选择这个源码文件就可以查看源码了。
  3. 也可以上官网查看:https://www.scala-lang.org/

Scala概述及环境配置的更多相关文章

  1. [Scala] 安装及环境配置(图文)

    Window 上安装配置 1.Java(JDK)环境配置,详见 Java(JDK)环境 2.从 Scala 官网下载安装包:https://downloads.lightbend.com/scala/ ...

  2. Java基础学习_01 概述及环境配置

    一.概述 1.Java语言平台版本 1.1J2SE(Java 2 Platform Standard Edition)标准版 为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可 ...

  3. Java学习笔记-Java概述和环境配置

    基础常识 软件:一系列按照特定顺序组织的计算机数据 和指令的集合 常见的软件: 系统软件:如:DOS,windows,Linux等 应用软件:如:扫雷,迅雷,QQ等 软件的出现实现了人与计算机之间的更 ...

  4. IDEA中配置Scala开发编译环境

    安装JDK 因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK. 安装Scala Windows安装Scala编译器 访问Scala官网http://www.scala-lang ...

  5. Scala语言简介和开发环境配置

    Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...

  6. LINUX系统下Java和Scala的环境配置

    最近,笔者在研究一个有关“自然语言处理”的项目,在这个项目中,需要我们用Spark进行编程.而Spark内核是由Scala语言开发的,所以在使用Spark之前,我们必须配置好Scala,而Scala又 ...

  7. Windows下Spark单机环境配置

    1. 环境配置 a)  java环境配置: JDK版本为1.7,64位: 环境变量配置如下: JAVA_HOME为JDK安装路径,例如D:\software\workSoftware\JAVA 在pa ...

  8. Java与Android开发环境配置以及遇到的问题解决

    0 概述 所有文章涉及的下载地址在文章下方会有汇总,所有软件的版本最好与系统版本一致 建议安装安卓开发软件至一个目录中,以方便查找 1 Java环境配置 1.1 JDK下载: 据说JDK6用的比较多, ...

  9. Spring3+SpingMVC+Hibernate4全注解环境配置

    Spring3+SpingMVC+Hibernate4全注解环境配置 我没有使用maven,直接使用Eclipse创建动态Web项目,jar包复制在了lib下.这样做导致我马上概述的项目既依赖Ecli ...

随机推荐

  1. Flink sql 之 两阶段聚合与 TwoStageOptimizedAggregateRule(源码分析)

    本文源码基于flink1.14 上一篇文章分析了<flink的minibatch微批处理>的源码 乘热打铁分析一下两阶段聚合的源码,因为使用两阶段要先开启minibatch,至于为什么后面 ...

  2. 初识python 之 爬虫:正则表达式

    python中正则表达式功能由 re 模块提供: import re 两个主要函数: match  匹配第一个字符(从第一个字符开始匹配) search 匹配整个字符串 一.匹配单个字符 1.匹配某个 ...

  3. python的作用域、globals()-全局变量 和 locals()-局部变量

    在python中,函数会创建一个自己的作用域,也称为为命名空间.当我们在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找. 我们自己定义的全局变量均在python内建的globals()函数中 ...

  4. Linux系统使用crt登录之后如何显示横幅消息

    打开  /etc/motd 编辑内容即可 效果如下

  5. Zabbix忘记用户名和密码的解决方法

    问题描述: 最近刚搭建了zabbix服务器,然后新增加了一个用户,并且把默认的Admin禁用了.然后这个监控页面一直没关,保持了10多天,今天不小心把浏览器关闭了,重新打开后,突然忘记了用户名,这下麻 ...

  6. Golang实现集合(set)

    package set package set import ( "bytes" "fmt" "sync" ) type Set struc ...

  7. Java日期格式化带来的年份不正确

    BUG现场 一个线上项目之前一直运行得很稳定,从没出过数据错误的问题,但是在2021.12.26这天却"意外"地出现了数据计算错误. 刚开始一头雾水,不知道是什么问题,后来经过日志 ...

  8. CodeForces 519B A and B and Compilation Errors (超水题)

    这道题是超级水的,在博客上看有的人把这道题写的很麻烦. 用 Python 的话是超级的好写,这里就奉上 C/C++ 的AC. 代码如下: #include <cstdio> #includ ...

  9. MASA Framework - 整体设计思路

    源起 年初我们在找一款框架,希望它有如下几个特点: 学习成本低 只需要学.Net每年主推的技术栈和业务特性必须支持的中间件,给开发同学减负,只需要专注业务就好 个人见解:一款好用的框架应该是补充,而不 ...

  10. leetcode 83. 删除排序链表中的重复元素 及 82. 删除排序链表中的重复元素 II

    83. 删除排序链表中的重复元素 问题描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: ...