Scala快速入门

简介: Scala快速入门

1.为什么使用scala

开发大数据应用程序(Spark程序、 Flink程序)这个对于笔者占据主要地位

表达能力强, 一行代码抵得上Java多行, 开发速度快

兼容Java, 可以访问庞大的Java类库, 例如: 操作mysql、 redis、 freemarker、 activemq等等

2 scala简介

scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程

早期,scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala的主要优势是它的表达性

接下来,我们要来学习:

  • 为什么要使用scala?
  • 通过两个案例对比Java语言和scala语言

为什么使用scala

  • 开发大数据应用程序(Spark程序、Flink程序)
  • 表达能力强,一行代码抵得上Java多行,开发速度快
  • 兼容Java,可以访问庞大的Java类库,例如:操作mysql、redis、freemarker、activemq等等

scala对比Java

下面通过两个案例,分别使用java和scala实现的代码数量

案例

定义三个实体类(用户、订单、商品)

Java代码

/**
 * 用户实体类
 */
public class User {
    private String name;
    private List<Order> orders;
    public String getName() {
      return name;
    }
    public void setName(String name) {
      this.name = name;
    }
    public List<Order> getOrders() {
      return orders;
    }
    public void setOrders(List<Order> orders) {
      this.orders = orders;
    }
}
/**
 * 订单实体类
 */
public class Order {
    private int id;
    private List<Product> products;
    public int getId() {
      return id;
    }
    public void setId(int id) {
      this.id = id;
    }
    public List<Product> getProducts() {
      return products;
    }
    public void setProducts(List<Product> products) {
      this.products = products;
    }
}
/**
 * 商品实体类
 */
public class Product {
    private int id;
    private String category;
    public int getId() {
      return id;
    }
    public void setId(int id) {
      this.id = id;
    }
    public String getCategory() {
      return category;
    }
    public void setCategory(String category) {
      this.category = category;
    }
}

scala代码

case class User(var name:String, var orders:List[Order])  // 用户实体类
case class Order(var id:Int, var products:List[Product])  // 订单实体类
case class Product(var id:Int, var category:String)     // 商品实体类

3.开发环境安装

学习如何编写scala代码之前,需要先安装scala编译器以及开发工具

Java程序编译执行流程

Scala程序编译执行流程

scala程序运行需要依赖于Java类库,必须要有Java运行环境,scala才能正确执行

根据上述流程图,要编译运行scala程序,需要

  • jdk(jvm)
  • scala编译器(scala SDK)

接下来,需要依次安装以下内容:

  • 安装JDK
    java环境搭建:点击跳转
  • 安装scala SDK

  • 安装IDEA插件

安装JDK

安装JDK 1.8 64位版本,并配置好环境变量

安装scala SDK

scala SDK是scala语言的编译器,要开发scala程序,必须要先安装SDK

本次安装的版本是: scala-2.13.6.msi

步骤

  1. 下载、安装SDK
  2. 测试是否安装成功

具体操作

  1. 双击scala-2.13.6.msi,将scala安装在指定目录,例如:c:/opt
  2. 打开控制台,输入scala -version

记录位置:

安装IDEA scala插件

IDEA默认是不支持scala程序开发,所以需要来安装scala插件来支持scala语言。

步骤

  1. 下载指定版本IDEA scala插件
  2. IDEA配置scala插件
  1. 重新启动IDEA

4.scala解释器

后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。

我们接下来学习:

  • 启动scala解释器
  • 在scala解释器中执行scala代码
  • 退出scala解释器

启动scala解释器

要启动scala解释器,只需要以下几步:

  • 按住windows键 + r
  • 输入scala即可

执行scala代码

在scala的命令提示窗口中输入println("hello, world"),回车执行

退出解释器

在scala命令提示窗口中执行:quit,即可退出解释器

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
12月前
|
Scala
Scala快速入门-11-常用集合操作
所有的集合都扩展自Iterable特质 集合有三大类,分别为序列、集和映射 几乎所有集合类,Scala都同时提供了可变和不可变的版本 Scala列表要么是空的,要么拥有一头一尾,其中尾部本身又是一个表列 集是无先后次序的集合 用LinkedHashSet来保留插入顺序,或用SortedSet来按顺序进行迭代 +将元素添加到无先后次序的集合中;+:和:+向前或向后追加到序列;++将两个集合串接在一起;-和--移除元素 映射、折叠和拉链操作是很有用的技巧,用来将函数和操作应用到集合中的元素
|
安全 Java 编译器
Scala快速入门-10-模式匹配与样例类
mathch表达式是一个更好的switch,不会有穿透到下一个分支的问题 如果没有模式能够匹配,会抛出MatchError,可以用case _ 模式来避免,相当于Java中的default 模式可以包含一个随意定义的条件,称做守卫 可以匹配数组、列表、元组等模式,然后将匹配到不同部分绑定到变量 样例类及密封类的模式匹配 用Option来存放可能存在也可能不存在的值,比null更安全
Scala快速入门-9-高阶函数
作为值的函数 创建匿名函数 带函数参数的函数 闭包 柯里化
|
Java Scala
Scala快速入门-8-特质
Scala和Java一样不允许类继承多个超类,特质解决这一局限性 类可以实现任意数量的特质 当将多个特质叠加在一起时,顺序很重要,其方法先被执行的特质排在更后面 Scala特质可以提供方法和字段的实现 特质要求实现它们的类具备特定的字段、方法或超类 特质可以同时拥有抽象方法和具体方法,而类可以实现多个特质
|
Java Scala
Scala快速入门-7-继承
继承类 extends 重写方法时必须用override 只有主构造器可以调用超类的主构造器 重写字段 抽象类、字段
Scala快速入门-6-单例对象及伴生对象
• 用对象作为单例或存放工具方法,Scala没有静态方法或字段 • 类可以有一个同名的伴生对象 • 对象的apply方法通常用来构造伴生类的新实例 • Scala的main函数定义 单例对象
|
Java Scala
Scala快速入门-5-类定义
每个类都有一个主构造器,这个构造器和类的定义“交织”在一起,它的参数直接成为类的字段,主构造器执行类体中所有的语句 类中的字段自动带getter和setter方法 用@BeanProperty注解生成JavaBean的getXxx/setXxx方法 辅助构造器是可选的,它们都叫做this
Scala快速入门-4-常用映射和元组操作
映射是键值对的集合 n个对象(并不一定要相同类型的对象)的集合,元组
|
Java Scala
Scala快速入门-3-常用数组操作
长度固定使用Array,长度有变化使用ArrayBuffer 提供初始值时不要使用new 用()来访问元素 for(elem <- arr)遍历元素 for(elem <- arr if ...) yield ...将原数组转为新数组
|
Java Scala
Scala快速入门-2-控制结构与函数
表达式有值,语句执行动作。 Scala中,几乎所有构造出来的语法结构都有值,不像Java中把表达式和语句(if语句)分为两类。 在这里if表示式有值。 代码块也有值,最后一个表达式就是值。 语句中,分号不是必需的。 函数式中不使用return。