JavaとJavaScriptは何が違うの?名前が似ている理由は?
プログラミング言語として、よく耳にする言語に「Java」と「JavaScript」があります。
これらはよく似ている名前である上、プログラミングをよく知らない方々からも認知されているためか、様々な尺度で度々話題に上がりますよね。
実は、この2つの言語は、それぞれ別物であり、異なる点が数多くあるのです。
今回は、それぞれの言語の違いはもちろん、「そもそも何故名前が似ているのか?」という疑問に対しても解説していきます。
※ それぞれの違いについて深く話すと、あまりに専門的な話になってしまい、管理人も完璧に説明できるものではなくなってしまうので、ここではあくまで「ふわっとこれだけ知ってればOKなはず」というレベルまで抽象化して説明します。
JavaとJavaScriptの名前が似ている理由
JavaとJavaScriptの名前が似ている問題については、「JavaScript」の側に原因があると言えます。
端的に流れだけを説明すると、そもそもJavaScriptの初版は「LiveScript」という名前でリリースされており、そこに「Java」はほとんど関係していませんでした。
結論から言えば、LiveScriptのデベロッパの「いまブームな『Java』を名前に入れれば流行に便乗して人気が出るのでは?」という、非常に単純な発想から、途中で「JavaScript」という名前に改名されたのです。
背景を少し説明すると、マインクラフトがJavaで作られていたというのは有名な話ですが、その当時のJavaはまさに「文系でも扱える超甘々なプログラミング言語」であり、プログラミング業界のビッグウェーブでした。
例えるなら、iPhoneを機に皆がスマホを買いだした、というのと似たような感じですね。
そういった背景から、「Java」という文言を名前に入れることで、Javaについて調べている人の目につきやすいように工夫した結果が「JavaScript」という名前なのです。
有名になった今では馴染み深い名前ですが、発祥は案外ポップで軽い感じ。
(ただ、一応JavaScriptのデベロッパとJavaの初版をリリースしたサン・マイクロシステムズは協力関係にあったため、無関係な所から無断で引用した、というわけではありません。)
JavaとJavaScriptの違い
JavaとJavaScriptの違いとして、よく言われるのは「コンパイルがあるかないか」という違いです。
コンパイルについて簡単に言うと、書いたコードをコンピュータが理解できるデータ(数値データ)に変換してあげる工程で、「function hogehoge()」というコードにある「function」など、人間が読み取れる単語を機械用に翻訳します。
JavaもJavaScriptも、厳密に言えばどちらもコンパイルはしているのですが、それぞれのコンパイルは以下のように表現できます。
- Java … 書いたコードをアプリケーションなどの「完成品」に仕上げる
- JavaScript … 書いたコードに従って「JavaScript」を動かす
結論から言うと、JavaScriptというのはJavaなどのプログラミング言語によって作られた「完成品」であり、JavaScriptによるプログラミングは単に「JavaScriptにやらせたい動作を記述しているだけ」です。
ゲームで例えるなら、「Aボタンを押した後にBボタンを押して…」のような命令を書くのがJavaScriptで、そのゲーム本体を作る機能を標準で備えているのがJavaです。
つまり、JavaScriptがやっているコンパイルは「JavaScriptの機能でコードを解釈する」ようなものなので、JavaやC#等で行うような”コンパイル”とは意味合いが異なります。
単に「コードの内容に合わせて動くプログラムを作る」というだけであれば、アプリケーションレベルの機能であると判断できるため、Javaで作れるレベルの言語とも言えます。
※実際にはJavaScriptはC言語で開発されており、独自のコンパイルの仕組みが導入されているため、Javaで作れるか、というと微妙というか、非常に困難だと思われます。私もそこまで詳しくはないです。
昨今のJS事情
JavaScriptについて、先ほどは「Javaによって作られるアプリケーション」のように説明しましたが、JavaScriptは非常に使用率も多い有名な言語で、愛好家が多いこともあり、魔改造が続けられています。
有名どころで言うとNode.jsという、JSの記法でサーバサイドのプログラムやアプリケーションを作成できる実行環境もあります。
Node.jsにプログラミング言語を作る能力はまだありませんが、そのうちJS(の記法)を使ってプログラミング言語を開発する時代も来るかもしれませんね。
まとめ
JavaとJavaScriptは名前こそ似ていますが、JavaScriptは元々LiveScriptという名前であり、その起源や使用用途が異なります。
作成できる機能にも違いはあるので、作りたいシステムやアプリケーションに合わせて、使い分けられるようになると良いでしょう。