(1)运行在 JVM 和 JavaScript 之上的语言
Scala运行在JVM上,兼容现有的Java程序,集成面向对象编程和函数式编程的各种特性,轻松实现和丰富的 Java 类库互联互通。Scala 不仅利用了 JVM 的高性能以及最优化性,Java 丰富的工具及类库生态系统也为其所用。不过 Scala 并不是只能运行在 JVM 之上

(2)静态类型
在 Scala 语言中,静态类型(static typing)是构建健壮应用系统的一个工具。Scala 修正了 Java 类型系统中的一些缺陷,此外通过类型推演(type inference)也免除了大量的冗余代码。

(3)混合式编程范式——面向对象编程
Scala 完全支持面向对象编程(OOP)。Scala 引入特征(trait)改进了 Java 的对象模型。trait 能通过使用混合结构(mixin composition)简洁地实现新的类型。在 Scala 中,一切都是对象,即使是数值类型。

(4)混合式编程范式——函数式编程
Scala 完全支持函数式编程(FP),函数式编程已经被视为解决并发、大数据以及代码正确性问题的最佳工具。使用不可变值、被视为一等公民的函数、无副作用的函数、高阶函数以及函数集合,有助于编写出简洁、强大而又正确的代码。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。

(5)复杂的类型系统
Scala 对 Java 类型系统进行了扩展,提供了更灵活的泛型以及一些有助于提高代码正确性的改进。通过使用类型推演,Scala 编写的代码能够和动态类型语言编写的代码一样精简。

(6)简洁、优雅、灵活的语法
使用 Scala 之后,Java 中冗长的表达式不见了,取而代之的是简洁的 Scala 方言。Scala提供了一些工具,这些工具可用于构建领域特定语言(DSL),以及对用户友好的 API接口。

比如:【三元运算符, ++ --】

(7)可扩展的架构
使用 Scala,你能编写出简短的解释性脚本,并将其粘合成大型的分布式应用。
以下四种语言机制有助于提升系统的扩展性:

  1. 使用 trait 实现的混合结构
  2. 抽象类型成员和泛型
  3. 嵌套类
  4. 显式自类型(self type)

Scala语言的特点相关推荐

  1. 熟悉scala命令,scala语言运行超级素数和猴子大王

    实验目的 在Linux操作系统中安装Scala 输入"scala"命令,熟悉地运行Scala解释器 scala语言运行超级素数和猴子大王 实验仪器 Virtualbox管理器 实验 ...

  2. Bazel发布Beta版本,增加对Groovy、Rust和Scala语言的支持

    Bazel是Googe旗下的一款构建系统工具,六个月前Google将其开源,目前取得里程碑式的进展,发布了其第一个beta版本,增加了对数种语言和技术的支持. \\ Bazel是Google用来构建自 ...

  3. scala语言的底层是java实现的_Scala学习笔记一(与Java、Jvm的关系以及程序执行流程分析)...

    一.Scala语言与Java.Jvm的关系分析 Scala语言是马丁奥德斯基接触Java语言后,针对Java语言的特点,将函数式编程语言的特点融合到Java中,由此发明的.Scala语言和Java语言 ...

  4. android studio scala插件,Scala 语言开发Andorid ,开发环境的搭建(一)

    Scala 语言开发Andorid ,开发环境的搭建 厌倦 Java 繁琐的语法,为了更优雅的开发 Android 程序,Scala 代替 Java 是一个不错的尝试. 开发前可以学习 Scala 的 ...

  5. Apache Spark学习:利用Scala语言开发Spark应用程序

    Spark内核是由Scala语言开发的,因此使用Scala语言开发Spark应用程序是自然而然的事情.如果你对Scala语言还不太熟悉,可以阅读网络教程 A Scala Tutorial for Ja ...

  6. Scala 语言输出的三种方式

    Scala 语言输出的三种方式 字符串通过+号连接(类似 java). printf 用法 (类似 C 语言)字符串通过 % 传值. 字符串通过$引用(类似 PHP).

  7. Scala 语言转义字符

    Scala 语言转义字符

  8. Scala语言整理(一)

    与Java对比 语法对比 对比项 Java Scala 说明 标识符 / / 反引号括起来的字符也是标识符. 语句结束 分号(;) 分号(;)或者换行   包 package ... package ...

  9. Scala语言将加入宏指令

    Scala开发团队正在将实验版宏指令加入到即将发行的2.10版中.Scala宏指令提供了编译时元编程的高级形式.Scala宏网站描述道: \u0026#xD;\n \u0026#xD;\n " ...

  10. scala语言示例_var关键字与Scala中的示例

    scala语言示例 Scala var关键字 (Scala var keyword) The var Keyword in scala is used to declare variables. As ...

最新文章

  1. Cracking the coding interview--Q2.2
  2. android自动更新列表,Android数据库表结构自动升级
  3. 百度坐标转换火星坐标UDF
  4. 谁能畅游智能电视红海:联想K82,还是乐视?
  5. CentOS6安装tomcat6
  6. stm32cubeide外部中断_【STM32】HAL库 STM32CubeMX教程三----外部中断(HAL库GPIO讲解)
  7. 浅谈python MRO与Mixin模式
  8. 【GIS导论】实验一 桌面GIS的功能与菜单操作
  9. Xcode在 release 模式下断点调试
  10. 超漂亮的CSS3按钮制作教程分享
  11. 小学算术运算测试c语言,c语言小学算术运算测试.doc
  12. PyQt5快速入门教程4-QtDesigner设计登录界面
  13. 像word手动插入分页符一样实现报表中强制分页(强制分页)
  14. python小游戏——魂斗罗这是你的童年吗?
  15. 基于Java的网上商城系统
  16. 动感歌词制作与转换工具
  17. flask keras 多线程环境下加载模型
  18. 宠物商店信息管理系统
  19. 最新的单片机_涨势比深圳的房价还快!研究了39个ST单片机热门型号后,我发现了这些特点!...
  20. 历史的温度3:时代扑面而来,转瞬即成历史 读后感

热门文章

  1. 文献标识码与参考文献
  2. 网络基础-应用层:E-mail应用:SMTP协议,POP协议,IMAP协议
  3. 服务器冗余电源维修图纸,冗余热备份电源的电路图设计
  4. oj刷题 Problem J: 软件工程
  5. GJS和GNOME Extension趟坑指南
  6. Fedora34/35/36 软件闪退解决
  7. 信息学奥赛一本通1179:奖学金
  8. 大数据常见英文词汇(三)之常见框架和组件(待续)
  9. 解决ThinkPad S3-440无法睡眠问题
  10. 如何将微信电脑图片dat格式文件转换为jpg格式