Scala进阶之路-为什么要学习Scala以及开发环境搭建

                               作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

  最近人工智能和大数据那是相当的火呀,人工智能带动了Python的流行,区块链带动了golang的流行,而大数据带动了Scala的流行。可能你会否定我,你可能会说大数据当然是带动Java的流行啊,因为Hadoop生态圈的大部分组件都是由Java语言编写的,不过换句话说,哪个大数据开发工程师不会java语言呢?而近几年流行的Spark技术哪个做大数据开发的或者大数据运维的不了解呢?而Spark是由Scala语言编写的,因此我们得系统的学习一下Scala语言。

  我们可以在很多招聘网站,如智联招聘,猎聘网,拉勾网,boss直聘等网站对大数据开发工程师的要求是必须得会Scala语言,因此身为一个大数据开发工程师,Scala语言应该是信手拈来的东西。一个初级的Scala开发工程师可以熟练使用Scala编写Spark程序;

一个中级Scala开发工程师可以动手编写一个简易Spark通信框架;而一个高级Scala开发工程师可以达到阅读Spark内核源码的实力。那么问题来了?你的Scala已经达到何种境界了呢?如果你到现在还不知道Scala是什么东东的话,可以跟随我的脚步,一起来系统的学习一下Scala语言吧。

一.Scala语言的特点

 1>.什么是Scala

  答:Scala 是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特 性 。 Scala 运 行 于 Java 平 台 ( Java 虚 拟 机 ), 并 兼 容 现 有 的 Java 程 序 。

2>.为什么要学Scala

  答:原因有三:优雅,速度快,能融合到Hadoop生态圈。

.优雅:
这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API 是否优雅直接影响用户体验。
.速度快:
Scala 语言表达能力强,一行代码抵得上 Java 多行,开发速度快;Scala 是静态编译的,所以和 JRuby,Groovy 比起来速度会快很多。
. 能融合到 Hadoop 生态圈:
Hadoop 现在是大数据事实标准,Spark 并不是要取代 Hadoop,而是要完善 Hadoop 生态。JVM 语言大部分可能会想到 Java,但 Java 做出来的 API 太丑,或者想实现一个优雅的 API 太费劲。

  在互联网上,有人拿Java程序员和Scala程序员进行对比,虽然有点夸张,但是确实能体现出大家对Scala的喜爱,如下图:

二.安装Scala SDK 

1>.登录Scala官网(https://www.scala-lang.org/)

2>.不推荐直接使用最新版本的Scala

3>.查看所有的Scala官网之前发布的版本

4>.选择与JKD8.0版本的Scala

5>.确保使用的Java版本

6>.选择操作系统对应的安装包

7>.Window下安装 Scala SDK

  访问 Scala 官网 http://www.scala-lang.org/下载 Scala 编译器安装包,目前最新版本是 2.12.x,但是目前大多数的框架都是用 2.11.x 编写开发的,Spark2.x 使用的就是 2.11.x,所以这里推荐 2.11.x 版本,下载 scala-2.11.8.msi 后点击下一步就可以了.。安装目录如下:

  添加变量如下:

  配置环境变量如下:

  验证是否配置成功:

8>.Linux下安装 Scala SDK

   下载 Scala 地址 http://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz 然后解压 Scala 到指定目录并配置环境变量,将 scala 加入到 PATH 中。具体操作如下:

[yinzhengjie@s101 ~]$ cd /home/yinzhengjie/download/
[yinzhengjie@s101 download]$ wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
[yinzhengjie@s101 download]$ ll
total
-rw-r--r--. yinzhengjie yinzhengjie Jul : scala-2.11..tgz
[yinzhengjie@s101 download]$
[yinzhengjie@s101 download]$ tar -zxf scala-2.11..tgz -C /soft/
[yinzhengjie@s101 download]$ ln -s /soft/scala-2.11./ /soft/scala
[yinzhengjie@s101 download]$ ll /soft/ | grep scala
lrwxrwxrwx. yinzhengjie yinzhengjie Jul : scala -> /soft/scala-2.11./
drwxrwxr-x. yinzhengjie yinzhengjie Mar scala-2.11.
[yinzhengjie@s101 download]$
[yinzhengjie@s101 download]$ tail - /etc/profile
#ADD Scala PATH
export Scala_HOME=/soft/scala
PATH=$PATH:$Scala_HOME/bin
[yinzhengjie@s101 download]$ source /etc/profile
[yinzhengjie@s101 download]$
[yinzhengjie@s101 download]$ scala -version
Scala code runner version 2.11. -- Copyright -, LAMP/EPFL
[yinzhengjie@s101 download]$

三.Idea中创建一个Scala工程

1>.安装Idea

  安装破解版方式可以参考:https://www.cnblogs.com/yinzhengjie/p/9080387.html

2>.下载 IEDA 的 scala 插件

  下载地址:http://plugins.jetbrains.com/idea_ce

3>.IDEA Scala 插件的离线安装

   点击设置:

  点击插件:

  点击从磁盘中安装插件:

4>.IDEA Scala 插件的在线安装

  等待安装完毕:

   注意:不管是离线安装还是在线安装都需要重启Idea哟!

四.Idea中创建一个Scala工程

1>.创建一个新的模块

2>.选择Scala版本(导入Scala SDK)

3>.创建Scala文件

4>.选择Object类型

5>.编写Scala测试代码

/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
EMAIL:y1053419035@qq.com
*/
object Demo {
/**
* main 函数是程序的入口函数
*/
def main(args: Array[String]): Unit = {
print("Hello,Scala! I'm yinzhengjie!")
}
} /*
以上代码执行结果如下:
Hello,Scala! I'm yinzhengjie!
*/

Scala进阶之路-为什么要学习Scala以及开发环境搭建的更多相关文章

  1. Weex开发之路(1):开发环境搭建

    一.Weex介绍 Weex是阿里巴巴在2016年6月份对外开源的一款移动端跨平台的移动开发工具,Weex的出现让我们的应用既有了Native的性能和H5的动态性,只要通过前端JS语法就能写出同时兼容i ...

  2. Spark学习之路(二)—— Spark开发环境搭建

    一.安装Spark 1.1 下载并解压 官方下载地址:http://spark.apache.org/downloads.html ,选择Spark版本和对应的Hadoop版本后再下载: 解压安装包: ...

  3. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  4. [笔记]我的Linux入门之路 - 05.Eclipse的Python开发环境搭建与Numpy、Scipy库安装

    一.Python环境 直接终端查询下python安装没:python --version Python 2.7.12 Ubuntu竟然已经装了Python2.7,那就好说了.不然自己装和装jdk差不多 ...

  5. Scala进阶之路-高级数据类型之集合的使用

    Scala进阶之路-高级数据类型之集合的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala 的集合有三大类:序列 Seq.集 Set.映射 Map,所有的集合都扩展自 ...

  6. Scala进阶之路-Scala中的枚举用法案例展示

    Scala进阶之路-Scala中的枚举用法案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这 ...

  7. Scala进阶之路-Scala中的高级类型

    Scala进阶之路-Scala中的高级类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.类型(Type)与类(Class)的区别 在Java里,一直到jdk1.5之前,我们说 ...

  8. Scala进阶之路-Scala中的Ordered--Ordering

    Scala进阶之路-Scala中的Ordered--Ordering 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   说道对象的比较,在Java中大家最熟悉不过的就是实现类本身实 ...

  9. Scala进阶之路-反射(reflect)技术详解

    Scala进阶之路-反射(reflect)技术详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的反射技术和Java反射用法类似,我这里就不一一介绍反射是啥了,如果对 ...

随机推荐

  1. 阿里云centos系统中配置mysql,并远程连接到本地的navicat

    1.直接使用yum命令下载mysql5.6来进行安装是不能成功的,安装过程会有问题,这里我们需要使用rpm命令来先进下载.下载路径为:http://dev.mysql.com/get/mysql-co ...

  2. Nuxt.js + koa2 入门

    1. nuxt项目初始化 下面是使用 koa 模板方法初始化一个项目,使用该方法需要将 nuxt 的版本降至1.4.2: 官方 https://zh.nuxtjs.org/guide/installa ...

  3. .Net Core WebApi控制器接收原始请求正文内容

    主要目标 在Asp.net Core控制器中,通过自定义格式化程序来映射自定义处理控制器中的“未知”内容. 简单案例 为了演示这个问题,我们用VS2017创建一个默认的Asp.net Core Web ...

  4. 7、Docker监控方案(cAdvisor+InfluxDB+Grafana)

    一.组件介绍 我们采用现在比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控. 1.cAdvisor(数据采集) 开源软件cAdvisor(Container Adv ...

  5. tensorflow 曲线拟合

    tensorflow 曲线拟合 Python代码: import numpy as np import tensorflow as tf import matplotlib.pyplot as plt ...

  6. 关于UGUI不拦截射线的方法

    起因:开发游戏,要在设置界面里给一个设置项添加一个东西解释这个项是干啥的,要求鼠标移到文字上的时候显示一个弹窗差不多的东西,见动图,鼠标移开会消失.但是当我移动鼠标到弹窗上的时候,UGUI会发射一根射 ...

  7. Java收发邮件过程中具体的功能是怎么实现的

    SMTP协议 用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的. 因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为 ...

  8. 使用jmeter 上传文件

    1.上传图片至阿里云时参数使用的parameters ,所以http的消息头中并没有添加content-type ,如果消息头中添加了Content-Type: multipart/form-data ...

  9. 查看django版本的方法

    在cmd输入: python -m django --version django-admin --version

  10. Linux命令(二十二) 改变文件权限 chomd

    目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 chmod 命令是用来改变文件权限或目录的命令,可以将指定文件的拥有着改为指定的用户或组,用户可以是用户名或用户ID,组可以是组 ...