---------------------
前言
---------------------
项目关系,希望用Spark GraphX做数据分析及图像展示,但前提是得会spark;spark是基于scala的,scala是基于JAVA的……所以,要想用Spark GraphX,技术堆栈大体上应该是这样的:Java -> Scala -> Spark -> Spark GraphX。
JAVA都这么多年了……就不说了,我们从学习Scala开始。
--------------------
说明
--------------------
1)Java配置完成,版本在1.8以上;
因为Scala是基于Java开发的,编译之后生成的class文件也可以远行在JVM上,并被Java调用。
2)IntelliJ IDEA已安装完成(我的版本是:2017.2.2)
3)开发环境:MacOS
--------------------
安装、配置Scala
--------------------
1. 安装Scala SDK
配置环境变量:
1)vi /etc/profile
在末尾添加:
export SCALA_HOME=/Users/yp-tc-m-2755/Documents/software/scala-2.12.4
export PATH=$PATH:$SCALA_HOME/bin
保存退出。
2)输入命令,使其生效:
source /etc/profile
3)检验(如果没生效,则重启终端):
$ scala -version
Scala code runner version 2.12.4 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.
2. 安装Scala插件
依次:IntelliJ IDEA -> Preferences -> Plugins -> Browse repositories...
(或是在IntelliJ IDEA欢迎页面,右下角点击:Configure->Preferences)
1)在搜索框输入scala
2)在列表中选择Scala
3)点击右侧框的“Install”按钮(下图是安装完成之后的样子)
--------------------
创建Java Web项目
--------------------
1. 使用MAVEN框架,创建web项目
我选择的是:maven-archetype-webapp。
不为别的,就是因为会自动创建一个index.jsp,方便试验tomcat是否正常启动……
目录结构大概是这个样子的:
2. 手动添加java,scala文件夹
1)在main目录下新建java,scala文件夹
点击File->project structure->Modules
右键单击main文件夹,选择“New Folder”,分别创建java和scala文件夹。
2)分别选中java和scala,点击上面的按钮“Sources",
这样,就标记了这两个文件夹下的文件都是源码。
否则,想要创建源文件的时候,右键java或scala,在new->file里没有Java Class和Scala Class选项。
3)在Global Liberaries里添加scala-sdk。
(如果是通过IDEA安装的sdk则不需要,已经默认添加了)
3. 在pom.xml里添加对scalas的依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>wangjun</groupId>
<artifactId>ScalaInJava</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>ScalaInJava Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-reflect</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<finalName>ScalaInJava</finalName>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
注意:如果不添加<plugin>,在编译的时候会出现错误:no prefix 'scala' 或 找不到符号
4. 创建源文件:
1)在java目录下创建HelloJava.java,内容如下:
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello : Java");
HelloScala helloScala = new HelloScala();
helloScala.sayHello( " my first scala!");
}
}
2)在scala目录下创建HelloScala.scala,内容如下:
class HelloScala {
def sayHello(x: String): Unit = {
println("hello, " + x)
}
}
可以看到,在HelloJava里调用了HelloScala对函数sayHello。
5. 运行:
在HelloJava.java编辑框任意位置,右键单击,选择:Run 'HelloJava.main()'
控制台输出结果:
OK,可以开始Scala之旅了!
--------------------
参考
--------------------
1)scala intellij idea 环境搭建及编译、打包
2)IntelliJ IDEA + Maven创建Java Web项目
3)运用Intellij创建自己的第一个Maven工程
4)Maven 三种archetype说明
- scala + intellij idea 环境搭建及编译、打包
大数据生态圈中风头正旺的Spark项目完全是采用Scala语言开发的,不懂Scala的话,基本上就没法玩下去了.Scala与Java编译后的class均可以运行于JVM之上,就好象.NET中F#与C# ...
- Scala进阶之路-为什么要学习Scala以及开发环境搭建
Scala进阶之路-为什么要学习Scala以及开发环境搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近人工智能和大数据那是相当的火呀,人工智能带动了Python的流行,区块 ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
- JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构
一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖 <!-- https://mvnrepository.com/artifact/org.fus ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- 如何在Java中调用Python代码
有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...
- 在Java中调用Python
写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...
- 在Java中调用Python代码
极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...
随机推荐
- 组件绑定v-model,实现最大化复用
看优秀的vue项目,对组件的封装做的都非常到位,比如一个按钮都可以实现复用,仔细研究会发现实现基础就是组件直接绑定v-model,来看看按钮: 比如有个点赞按钮,长这样: 当点赞之后变成这样: 相信很 ...
- IE block my cookie in iframe
---恢复内容开始--- There is a severe bug that a leader figured it out in a published project. In IE11, the ...
- 【47.76%】【Round #380B】Spotlights
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- [array] leetCode-26. Remove Duplicates from Sorted Array - Easy
26. Remove Duplicates from Sorted Array - Easy descrition Given a sorted array, remove the duplicate ...
- 【5001】n皇后问题
Time Limit: 10 second Memory Limit: 2 MB 在n*n的棋盘上放置n个皇后(国际象棋中的皇后,n≤10)而彼此不受攻击(即在棋盘的任一行,任一列和任一对角线上不能放 ...
- 从Set里面取出有序的记录
Set里面的记录是无序的.假设想使用Set,然后又想里面的记录是有序的,就能够使用TreeSet.而不是HashSet.在使用TreeSet的时候,里面的元素必须是实现了Comparable接口的,T ...
- Java程序猿必知的10个调试技巧
在本文中,作者将使用大家经常使用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在開始之前,推荐大 ...
- [Recompose] Set the HTML Tag of a Component via a Prop using Recompose
Learn how to user the ‘componentFromProp’ helper and ‘defaultProps’ higher order component to swap t ...
- 数值优化(Numerical Optimization)学习系列-文件夹
概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optim ...
- 【53.90】【BZOJ 3875】 [Ahoi2014]骑士游戏
Time Limit: 30 Sec Memory Limit: 256 MB Submit: 564 Solved: 304 [Submit][Status][Discuss] Descriptio ...