ニコニコ大百科モバイル

7/2(月)よりスマホまたはPCでアクセスした場合、各デバイス向けのサイトへ自動で転送致します


JVM言語


ヨミ: ジェーブイエムゲンゴ
掲示板をミル!
1カキコ!

JVM言語とは、JVMJava Virtual Machine、Java仮想マシンJavaラットフォーム)上で動作するプログラムを生成する為のプログラミング言語の総称である。たくいうと「Javaグループ」である。


概要


Java仮想マシンは、バイトコードと呼ばれる中間コードに基づいて動作する。バイトコードを生成する言の代表はJavaであるが、バイトコードそのものはJavaを前提としているものの厳密にJava専用というものではないため、他言でもバイトコードに変換すればJava仮想マシン上で動作させることができる。

実際にScala, Groovy, Kotlinといった様々な言バイトコードに変換するコンパイラが存在する。既存の他言Java仮想マシン用に実装したものとしてはLisp方言であるClojureのほか、RubyPythonインタプリタとしてそれぞれJRuby[外部]Jython[外部]がある。

マイナーなところでは、Haskell実装としてFrege[外部]Eta[外部]といったものも存在する。

Java自身もJava仮想マシン上で実行されるので、JVM言語と呼べる現にJetBrains社(Kotlinの開発元)の統合開発環境「IntelliJ Idea」の公式サイト[外部]等では、JavaをJVM言語の一つと位置付けている。はずだが、JVM言語がJava仮想マシン上で動作するように設計された言であるのに対し、Javaについては、Java仮想マシンJavaを効率よく動作させるように設計されるという逆の従関係となっているため、文脈によっては(Java互換言といった意味で)JVM言語とひと括りにしたときにJavaがJVM言語に含まれていない明示的にJavaを含まないJVM言語をす表現として、「Java代替言」「Better Java」「AltJava」等がある。こともある。


特性



JVM上で動作する



既存のJavaライブラリが利用可能



コンパイラが生成するバイトコード(拡張子.class)は、Javaインタプリタ(CUIのjavaコマンド)で実行可能


Javaの場合


> java メインクラス

Scalaの場合(上: Windows コマンドプロンプト、中: Windows PowerShell、下: Unix Bash)

[画像を見る]
> for %A in (scalac) do java "--class-path=%~dp$path:A..\lib\scala-library.jar;." メインクラス
> java "--class-path=$(Join-Path (Get-Command scalac | Get-Item).DirectoryName ..\lib\scala-library.jar);." メインクラス

$ java "--class-path=$(dirname "`which scalac`")/../lib/scala-library.jar:." メインクラス

Kotlinの場合(上: Windows コマンドプロンプト、中: Windows PowerShell、下: Unix Bash)

[画像を見る]
> for %A in (kotlinc) do java "--class-path=%~dp$path:A..\lib\kotlin-runtime.jar;." メインクラス
> java "--class-path=$(Join-Path (Get-Command kotlinc | Get-Item).DirectoryName ..\lib\kotlin-runtime.jar);." メインクラス

$ java "--class-path=$(dirname "`which kotlinc`")/../lib/kotlin-runtime.jar:." メインクラス


実行可能JARファイルが生成可能


Javaの場合

[画像を見る]
> javac "ソースファイル.java"

> jar --create --main-class=メインクラス "--file=アーカイブファイル.jar" *.class

Scalaの場合(上: Windows コマンドプロンプト、中: Windows PowerShell、下: Unix Bash)

[画像を見る]
> scalac -d "アーカイブファイル.jar" "ソースファイル.scala"

> for %A in (scalac) do jar --extract "--file=%~dp$path:A..\lib\scala-library.jar" scala

> jar --update "--file=アーカイブファイル.jar" scala
> scalac -d "アーカイブファイル.jar" "ソースファイル.scala"
> jar --extract "--file=$(Join-Path (Get-Command scalac | Get-Item).DirectoryName ..\lib\scala-library.jar)" scala
>
jar --update "--file=アーカイブファイル.jar" scala
$ scalac -d "アーカイブファイル.jar" "ソースファイル.scala"
$
jar --extract "--file=$(dirname "`which scalac`")/../lib/scala-library.jar" scala
$
jar --update "--file=アーカイブファイル.jar" scala

Kotlinの場合

[画像を見る]
> kotlinc -include-runtime -d "アーカイブファイル.jar" "ソースファイル.kt"

実行

[画像を見る]
> java -jar "アーカイブファイル.jar"

関連動画



■sm32463681[ニコ動]


関連商品


■az4501552603
■az4844381490
■az4865940391


関連項目



外部リンク



最終更新日: 18/11/19 00:00
タグ検索 パソコン版を見る


[0]TOP
ニコニコ動画モバイル
運営元:ドワンゴ