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. ASP.NET多行文本框限制字符个数

    asp.net中TextBox当设置TextMode = Multiline时,其MaxLength属性无效.可使用JS进行辅助限制输入的字符个数.中文算两个字符,西文算1个字符. TextBox属性 ...

  2. 微服务监控zipkin、skywalking以及日志ELK监控系列

    0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.目录 1.zipkin监控 2.skywalking监控 3.ELK日志监控 asp.net Core 交流群:78746 ...

  3. java过滤器Filter笔记

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静 ...

  4. Beta阶段事后分析

    1. 设想和目标 1.1 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们在Beta阶段任务主要分为两部分,一类是对原功能的扩展,一类是新的博文功能.我们通过规 ...

  5. 作业 20181204-5 Final阶段贡献分配规则及实施

    此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2479] 小组介绍 组长:付佳 组员:张俊余 李文涛 孙赛佳 田良 于洋 ...

  6. Linux内核实验作业六

    实验作业:分析Linux内核创建一个新进程的过程 20135313吴子怡.北京电子科技学院 [第一部分]阅读理解task_struct数据结构 1.进程是计算机中已运行程序的实体.在面向线程设计的系统 ...

  7. 小组冲刺第十四天站立会议(Beta版发布)

    注: “助成”招聘网站链接:http://58.87.74.131:8080/zhucheng 欢迎大家进行评测. 一.任务看板: 二.燃尽图: 三.任务总结: 根据前期收集的用户反馈,再次对网站进行 ...

  8. Hadoop 5 Hbase 遇到的问题

    hbase伪分布式配置完成后: 在bin/hbase shell 进行create操作时出现:Can't get master address from ZooKeeper; znode data = ...

  9. ELK 性能(2) — 如何在大业务量下保持 Elasticsearch 集群的稳定

    ELK 性能(2) - 如何在大业务量下保持 Elasticsearch 集群的稳定 介绍 如何在大业务量下保持 Elasticsearch 集群的稳定? 内容 当我们使用 Elasticsearch ...

  10. PHP的魔术方法

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods) 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对 ...