この記事を書いたのは、知乎(Zhihu)で誰かがこの質問をしているのを見て、なぜこんなSB(バカな)質問があるのかと思ったからです。しかし、考えてみると、当時SB(バカ)だった自分も両者の関係をはっきりとは理解していなかったようで、認識にはやはり過程が必要です。
そして、よく見かける定番の回答として、JavaとJavascriptの関係は、雷鋒と雷峰塔の関係のようなものであり、また、妻と妻餅(老婆餅)の関係のようなものでもある、というものがあります。
一般に、当時NetscapeがLiveScriptをJavaScriptと命名したのは、Javaが当時最も人気のあるプログラミング言語であり、「Java」という名前が付いていると、この新しい言語の普及に役立つと考えられたからだと言われています。
それらの共通点は次のとおりです。
- それらの構文はC言語ととても似ています。
- それらはどちらもオブジェクト指向です(実装方法は少し異なります)。
- JavaScriptは設計時にJavaの命名規則を参照しました。
それらの相違点は次のとおりです。
- JavaScriptは動的型付け言語であり、Javaは静的型付け言語です。
- JavaScriptは弱い型付けであり、Javaは強い型付けに属します。
- JavaScriptのオブジェクト指向はプロトタイプベース(prototype-based)で実装されており、Javaはクラスベース(class-based)です。
JavaScriptは、見た目がJavaに比較的似ていることを除けば、言語スタイルは大きく異なります。JavaScriptが設計時に参考にした対象にはJavaは含まれておらず、SelfやSchemeのような言語が含まれていました。