新网站怎样做优化,易点网络科技有限公司,网站开发项目建设经验,做企业网站首页尺寸Scala简介
Scala即Scalable Language单词的缩写#xff0c;表示可伸缩语言的意思。
Scala语言是基于Java开发的#xff0c;所以其编译后的文件也是字节码文件#xff0c;并可以运行在JVM中
Scala与Java的关系
Martin Odersky是狂热的编译器爱好者#xff0c;长时间的…Scala简介
Scala即Scalable Language单词的缩写表示可伸缩语言的意思。
Scala语言是基于Java开发的所以其编译后的文件也是字节码文件并可以运行在JVM中
Scala与Java的关系
Martin Odersky是狂热的编译器爱好者长时间的编程后希望开发一种语言能够让写程序的过程变得简单高效所以当接触到Java语言后感受到了这门语言的魅力决定将函数式编程语言的特性融合到Java语言中由此产生了2门语言Pizza Scala,这两种语言极大地推动了Java语言的发展
JDK1.5的泛型增强for循环自动类型转换等都是从Pizza语言引入的新特性JDK1.8的类型推断λlambda表达式是从Scala语言引入的新特性
由上可知Scala语言是基于Java开发的所以其编译后的文件也是字节码文件并可以运行在JVM中。
Scala环境安装
1安装JDK1.8
2安装Scalal2.13
解压文件scala-2.13.11.zip解压目录要求无中文空格配置环境变量 SCALA_HOME 安装目录PATH %SCALA_HOME%\bin
3)环境测试
打开cmd输入scala显示版本信息则说明scala环境安装成功如下
C:\Users\没事我很好scala
Welcome to Scala 2.13.11 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.scala4Hello World
scala println(hello world)
hello worldIDEA配置Scala环境
1Scala插件安装
默认情况下IDEA不支持Scala的开发需要安装Scala插件。
如果下载慢的请访问网址https://plugins.jetbrains.com/plugin/1347-scala/versions
2Hello World案例
1创建 Maven项目
我们创建一个名为 scala-demo 的模块
2增加Scala框架支持
默认情况IDEA中创建项目时不支持Scala的开发需要添加Scala框架的支持。
右击模块名称scala-demo选择Add Frameworks Support勾选Sacla点击OK
3IDEA中关联Scala源码
方法一直接在IDEA中下载
方法二将我们下载的Scala源码包关联
将我们下载的scala-2.13.11.tar.gz 压缩包拷贝至 D:\software\scala-2.13.11\lib 目录下解压scala-2.13.11.tar.gz 压缩包重命名为 scala-source-2.13.11在IDEA中点击 Choose Sources选择 scala-source-2.13.11 文件夹所在目录即 D:\software\scala-2.13.11\lib\scala-source-2.13.11
至此在IDEA中关联Scala源代码完成
3创建类
在main文件目录中创建scala目录在目录中创建com.clear.HelloScala类
package com.clearobject HelloScala {def main(args: Array[String]): Unit {println(hello world)}
}// object关键字声明一个单例对象伴生对象
// main 方法从外部可以直接调用执行的方法
// def 方法名称(参数名称: 参数类型): 返回值类型 {方法体}注意
Array[String] 这里的 [] 表示的是泛型
如果只是通过代码来进行语法的解析并不能了解其真正的实现原理。scala语言是基于Java语言开发的所以也会编译为class文件那么我们可以通过反编译指令javap
javap -c -l 类名PS D:\code\hadoop\scala-demo\target\classes\com\clear javap -l -c .\HelloScala$.class
Compiled from HelloScala.scala
public final class com.clear.HelloScala$ {public static final com.clear.HelloScala$ MODULE$;public static {};Code:0: new #2 // class com/clear/HelloScala$3: dup4: invokespecial #12 // Method init:()V7: putstatic #14 // Field MODULE$:Lcom/clear/HelloScala$;10: returnLineNumberTable:line 3: 0public void main(java.lang.String[]);Code:0: getstatic #22 // Field scala/Predef$.MODULE$:Lscala/Predef$;3: ldc #24 // String hello world5: invokevirtual #28 // Method scala/Predef$.println:(Ljava/lang/Object;)V8: returnLineNumberTable:line 5: 0LocalVariableTable:Start Length Slot Name Signature0 9 0 this Lcom/clear/HelloScala$;0 9 1 args [Ljava/lang/String;
}
PS D:\code\hadoop\scala-demo\target\classes\com\clear或反编译工具jd-gui.exe查看scala编译后的代码。
package com.clear;import scala.Predef.;public final class HelloScala$
{public static final MODULE$ new ();public void main(String[] args) { Predef..MODULE$.println(hello world); }}