Scala
主に以下のような特徴がある。
開発生産性を高める簡潔な表記が可能である。
Javaの豊富なライブラリが使える(Scala.jsの場合、JavaScriptのライブラリが使える)。
全てがオブジェクトとして扱われるオブジェクト指向言語である。
静的型付けを行う関数型言語である。静的型付けのため、コンパイル時点でのエラー(特に型関連の)検出が得意である。
型(クラス)をJavaなどと比べてより容易に作ることができ、また、型を使った条件分岐をはじめとして、型に関する機能が豊富なため、メソッドやフィールドを束ねるだけのクラスではなく、型に積極的な意味を持たせてのプログラミングが可能である。
型推論をサポートし、多くの場面で型を自動的に補ってくれる。
純粋関数型言語的な、val(定数)と不変List, Set, Mapという組み合わせでもプログラミングできるし、より手続き型的なvar(変数)と可変List, Set, Mapという組み合わせでもプログラミングができる。
関数もオブジェクトとして利用可能であり、カリー化が可能。
パターンマッチを利用可能であり、任意のクラスをグループ化してパターンマッチで判定させることが可能(caseクラス)。
implicit def と言う宣言を用いて、既存のクラスを拡張したような記述が可能。
traitクラスを用いた、Mix-in機能を持つ。
クロージャをサポートする。
XMLを直接プログラム内部に記述可能。
遅延評価のある関数型言語であるため、無限リストを扱え、標準ライブラリにそのためのクラスが提供されている。
構文解析のための、パーサーコンビネータ(英語版)が2.12まで標準ライブラリに入っていた。2.13以降は外部ライブラリとなった。