Scala介绍与安装

什么是Scala

Scala是一门完整的、可伸缩的软件编程高级语言。之所以说它是可伸缩,是因为这门语言体现了面向对象,函数式编程等多种不同的语言范式,且融合了不同语言新的特性。

Scala编程语言是由联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计并开发的。由于Martin Odersky(马丁·奥德斯基)之前的工作是开发通用Java和Javac(Sun公司的Java编译器),所以基于Java平台的Scala语言于2003年底/2004年初发布。

Scala是基于JVM的语言,与java语言类似,Java语言是基于JVM的面向对象的语言。Scala也是基于JVM,同时支持面向对象和面向函数的编程语言,支持JVM和JavaScript。

为什么学习Scala

大数据主要的批处理计算引擎框架Spark是基于Scala语言开发的
大数据主要的流式计算引擎框架Flink也提供了Scala相应的API
大数据领域中函数式编程的开发效率更高,更直观,更容易理解
扩展:Spark1.6版本中底层基于Scala语言的版本是Scala2.10版本。Spark2.x底层基于的Scala语言版本是Scala2.11版本。Spark3.0底层基于的Scala2.12。

六大特性

  1. SEAMLESS JAVA INTEROP Java和Scala可以混编
    Scala runs on the JVM, so Java and Scala stacks can be freely mixed for totally seamless integration.
    Scala 在 JVM 上运行,因此可以自由混合 Java 和 Scala 堆栈以实现完全无缝集成。
  2. TYPE INFERENCE 类型推测(自动推测类型)
    So the type system doesn’t feel so static. Don’t work for the type system. Let the type system work for you!
    变量或对象在声明是可以不用指定具体的类型,根据上下文会自动推测出来对应的类型。
  3. CONCURRENCY & DISTRIBUTION 并发和分布
    Use data-parallel operations on collections, use actors for concurrency and distribution, or futures for asynchronous programming.
    对集合使用数据并行操作,使用参与者进行并发和分布式开发,或使用异步编程。
  4. TRAITS 特质、特征
    Combine the flexibility of Java-style interfaces with the power of classes. Think principled multiple-inheritance.
    将 Java 样式接口的灵活性与类的强大功能相结合。考虑原则性的多重继承,类似java中抽象类。
  5. PATTERN MATCHING 模式匹配
    Think “switch” on steroids. Match against class hierarchies, sequences, and more.
    类似于Java中的switch语法,但是scala从语法中补充了更多的功能,可以按照指定的规则对数据或对象进行匹配, 所以功能更加强大。
  6. HIGHER-ORDER FUNCTIONS 高阶函数
    Functions are first-class objects. Compose them with guaranteed type safety. Use them anywhere, pass them to anything.
    函数是一流的对象。在保证类型安全的情况下编写它们。在任何地方(比如:变量的值,函数或方法的参数,函数的返回值等)使用它们,将它们传递给任何东西。

Scala环境安装

注意:在安装Scala之前记得把JDK1.8或JDK1.11安装配置好。

检查JDK是否安装配置好,打开cmd(),输入java -version

C:\Users\Administrator>java -version
java version “1.8.0_161”
Java™ SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot™ 64-Bit Server VM (build 25.161-b12, mixed mode)
官网各版本下载网址:https://www.scala-lang.org/download/all.html

scala2.12.15:https://www.scala-lang.org/download/2.12.15.html
在这里插入图片描述
下载好后安装:

方式一:双击scala-2.12.15.msi包安装,记住安装的路径。
方式二:解压scala-2.12.15
以上两种方式建议路径都选择为D:\devsoft\scala-2.12.15

配置环境变量

新建SCALA_HOME
在这里插入图片描述
注意:这里建议将Scala安装到纯英文没有空格和特殊符号的路径下。避免后期使用Scala版本出现问题。
编辑Path变量,在后面追加如下:%SCALA_HOME%\bin
打开cmd,输入:scala - version 看是否显示版本号,确定是否安装成功

C:\Users\Administrator>scala -version
Scala code runner version 2.12.15 -- Copyright 2002-2021, LAMP/EPFL and Lightbend, Inc.


C:\Users\Administrator>scala
Welcome to Scala 2.12.15 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_161).
Type in expressions for evaluation. Or try :help.
scala> println("hello world")
hello world

IDEA插件安装

默认情况下IDEA不支持Scala的开发,需要IDEA中安装配置Scala插件。

具体操作步骤:

方式一:打开idea,close项目后,点击Plugins,搜索Scala,点击Install安装
在这里插入图片描述
方式二:如果IDEA处于打开的某项目中,点击File->Setting

方式三:本地磁盘上插件的安装。点击File->Setting
在这里插入图片描述
注意:以上三种方式,在安装后都需要重启IDEA。

如果通过IDEA安装插件太慢,请访问网址进行下载https://plugins.jetbrains.com/plugin/1347-scala/versions,找到适合自己的IDEA版本插件进行下载即可。

可以通过Disable禁用插件,Uninstall卸载插件!
在这里插入图片描述

第一个程序

File->New->Project,进入如下界面,来创建Maven项目
在这里插入图片描述
在这里插入图片描述
添加Scala支持
默认情况,IDEA中创建的Maven项目不支持Scala的开发,需要添加Scala语言的支持。
在这里插入图片描述
在这里插入图片描述
在main下创建scala文件夹,并标记为sources root
在scala下创建包:cn.itbaizhan.chapter01
在4的包下创建类HelloWorld

package cn.itbaizhan.chapter01


object HelloWorld {
 def main(args: Array[String]): Unit = {
  println("Hello World!!")
  }
}

第一个程序的简介

package cn.itbaizhan.chapter01
/**package:定义所在的包
 * object:声明一个对象,在编译时会被编译成两个字节码文件:HelloWorld2.class和HelloWorld2$.class
 */
object HelloWorld2 {
 /**main函数时程序的入口
  * def:表示声明函数或方法的关键字
  * args:参数 该参数为一个数组,里边方法的String字符串
  * Unit:表示没有返回值
  */
 def main(args: Array[String]): Unit = {
  System.out.println("Hello World1!!")
  println("Hello World2!!")
  }
}

运行输出:
Hello World1!!
Hello World2!!
将这个类编译后类scalademo\target\classes\cn\itbaizhan\chapter01\HelloWorld2.class转换为java类:

//decompiled from HelloWorld2.class
package cn.itbaizhan.chapter01;


import scala.reflect.ScalaSignature;


@ScalaSignature(
  bytes = "....."
)
public final class HelloWorld2 {
  public static void main(final String[] args) {
   HelloWorld2$.MODULE$.main(var0);
  }
}


    //decompiled from HelloWorld2$.class
package cn.itbaizhan.chapter01;


import scala.Predef.;


public final class HelloWorld2$ {
  public static HelloWorld2$ MODULE$;


  static {
   new HelloWorld2$();
  }


  public void main(final String[] args) {
   System.out.println("Hello World1!!");
    .MODULE$.println("Hello World2!!");
  }


  private HelloWorld2$() {
   MODULE$ = this;
  }
}    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

留不住的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值