Scale 概述(下)|学习笔记

简介: 快速学习 Scale 概述(下)。

开发者学堂课程【Scala 核心编程-基础Scale 概述(下)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8876


Scale 概述(下)

 

内容简介:

一、scala 讲解示意图

二、Scala 的类库(sdk)

三、scala 与 java 的对比

四、scala 的崛起

五、学习要求

六、学习目的

 

一、scala 讲解示意图

1、示例图

image.png

2、解说

scala、java 和 jvm 的关系图

java 的代码

HashMap<String,string>hm =new HashMap()

int num = 1...

//以上代码通过 javac 编译器进行编译

//编译后得到.class 字节码文件,将其交予进行各个平台的 jvm 机进行运行

jvm for windows //windows 下的 jvm 机

jvm for linux //linux 下的 jvm 机

jvm for unix //unix 下的 jvm 机

//由于 jvm 机可屏蔽硬件,故可达到运行的效果

字节码文件能够在 jvm 进行运行的工具:java

将字节码加载到对应 jvm 机之中

3、java 可进行代码的编写的原因

(1)、编译器、运行器对语法的支持

(2)、java 开发者、公司提供给程序员的的类库(jdk)

4、改进

马丁奥德斯基本人对 java 语言中部分功能的优缺点、JVM 跨平台机制等的取舍,进行了 java 语言基础上的改进、与增强。

5、演示.scala 源码

(1)、仍继续使用 java 的部分语法

System.out.Printn("hello")//此语法仍被支持

HashMap<String,String> hm= new HashMap() //此语法不被支持

(2)、写入 sacla 的特有语法(java 语法中并不存在)

1val tuple = (1, 20, "hello", 23.9) //元组

查看源码

D 盘>program>scala>scala-source>src>libiary>scala

例如1例中写入了4组数据,对应类型则为 Tuple4.scale,进行打开,其则为定义的元组。

2val map= Map(("no",10),("no2", 40)) //map

//原先的 HashMap 此时并不支持,故进行了 map 的修改

(3)、增加功能-如函数式编程

1偏函数的支持

2函数的柯里化

3高阶函数

4将函数作为参数传递

(4)、对 java 语法的包装

部分语法形式上属于 scala 语法类,但其本质是对 java 类型的接口进行了包装。

 

二、Scala 的类库(sdk)

1、包含的部分

(1)Scala 本身的特有类库

(2) 对 java 类进行包装的类库

2、使用原则

由于 scala 类库将会使用到 java(jdk),则运用此类库时,必须安装 java(jdk)

3、举例

var arr = new Array(Int)(10) //表示定义了一个数组,该数组存放 Int 类型。Scala 内不存在小写 i。空间为10个元素

4、array 的查找

D 盘>program>scala>scala-source>src>libiary>scala>Array-scala

final class Arrary[T](_length:Int) extends.io.Serializable with java.lang.Cloneable

//体现出此 array 继承了 java 的 Serializable。即进行包装的同时对其进行了扩展,增加了其他的功能。

5、运行

欲使 Scala 类库进行运行,其仍然需要被翻译成字节码文件。此时使用的编译器并非 javac,而是 scalac。编译后得到.class 字节码文件,通过 scala 运行将其交予进行各个平台的 jvm 机进行运行

6、关系

scala 基于 jvm 的基础之上

 

三、scala 与  java 的对比

在使用 java 语言的前提下,使用 scala 编译器对其进行编译,由于 scala 编译器相较于 java 的范围更为广阔,故而部分情况下对 java 进行编译是能够得到成功的。

故而,scala 对比 java,scala 更为复杂。

 

四、scala 的崛起

1、背景

大学实验室内运用大数据时,由于马丁奥德斯基对其友人的推荐与 scala 本身对于语法等方面的优势,使得部分受众开始在此群体内开始发展增强,scala 最后衍生为了大数据方面的 spark。

2、卡夫卡的语法

卡夫卡(kafka)同样是以 scala 语法进行编写的

3、spark 的三种编写语言

spark 并非完全使用 scala 进行编写,其存在三种主流语言。

(1)、java

(2)、Python

(3)、Scala(主流)

 

五、学习要求

1、学习掌握 scala 本身的语法、核心及其扩展

扩展包括:设计模式(国内尚未涉及)、阿卡、泛型......

2、学习编程思想

理解 scala 本身的设计理念,站在较高的境界看待问题。

 

六、学习目的

1、由于 scala 基于 java 之上,故而需要将 sacala 与 java 以及 JVM 进行区分,以避免对于 scala 学习的阻碍

2、不存在 java 基础的学习者需要至少首先学习 javaSE,再进行 scala 的学习。

相关文章
|
10月前
|
前端开发 JavaScript
CSS 过渡和动画
CSS过渡和动画是用于为网页元素添加动态效果的两种重要技术
518 143
|
传感器 监控 测试技术
LabVIEW程序闪退问题
LabVIEW程序闪退问题
398 2
|
Java 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(1)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
320 0
|
SQL 分布式计算 运维
如何优化超长定时任务:慢节点优化实践
本文介绍了一个复杂的ODPS任务优化过程。通过对任务耗时卡点的分析,发现主要问题是数据倾斜和join任务资源不足。通过提高join任务资源分配、对空值加随机值打散、视图物化落表、节点拆分、前置裁剪和使用Distributed Mapjoin等方法,成功将宽表产出时间从下午一点提前到早上八点半,节省了4小时以上。优化过程中还拆分了宽表节点,降低了回刷成本。文章强调了在设计开发初期应避免代码耦合度过高,以提高代码运行效率和可维护性。
302 0
|
关系型数据库 MySQL
mysql配置文件的使用
mysql配置文件的使用
398 1
mysql配置文件的使用
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行多条SQL语句时,使用同一个实例来运行,遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
255 1
|
存储 SQL 多模数据库
深度剖析数据库技术:核心原理、应用场景及未来趋势
一、引言 在信息化时代,数据库技术已成为各行各业不可或缺的一部分
|
前端开发 JavaScript 索引
前端 富文本编辑器原理——从javascript、html、css开始入门(一)
前端 富文本编辑器原理——从javascript、html、css开始入门
613 0
|
SQL 存储 算法
Flink Batch SQL Improvements on Lakehouse
阿里云研发工程师刘大龙(风离),在 Streaming Lakehouse Meetup 的分享。
706 1
Flink Batch SQL Improvements on Lakehouse