「Java と JavaScript は何がどれだけ違うのか」

https://dev.to/coderslang/java-vs-javascript-key-differences-and-similarities-33mo

**Java vs JavaScript. Key differences and similarities**。
Java と JavaScript は何がどれだけ違うのか。なにこれ、古のご冗談ですか？と思って読みつつ割と真面目な初心者向け内容と見受けたのでその読書メモ。翻訳部分はおよそDeepL翻訳です。

>ソフトウェア・プログラミングの世界は時代とともに急速に進歩し、多くのプログラミング言語がもたらされています。プログラミング言語のJavaとJavaScriptは名前が似ていて、同じ言語の別の名前なのか、それとも違うものなのか、混乱したことがあるかもしれません。


## What is Java?

- Javaは、OOP（Object-orientated Programming Language）、クラスベースのプログラミング言語で、VM（Virtual Machine）プラットフォームを持つマルチプラットフォームのプログラミング言語。
- OOPとは、コードとデータを含むオブジェクトの概念に基づいたパラダイム。
- 仮想マシンは、どこでも、どんなプラットフォームでも実行できる柔軟性を持ったコンパイル済みのプログラムを作成できる。Javaにおいては、この概念を「Write Once, Run Anywhere」と呼んでいる。

### Javaでコードを書き始めるには

- Javaでコードを書くためには、簡単なセットアップが必要。
    - Java SE Development kitをダウンロードしてセットアップする。
    - 好きなテキストエディターを選ぶ。
- 全くの初心者には、最も基本的には、メモ帳を選ぶことを勧める。
    - 他のテキストエディターやIDEでも構わないが、本質的なことに集中するため。

### Javaで簡単なコードを書く

JavaでHello Worldを簡単にprintする。


```HelloWorld.java
// Print 
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```

### コードの説明

- 最初の行は単一行コメント（一行に限定されたコメント）。
- 中括弧 `{` は、それぞれのクラスや関数の始まりを意味し、終わりの中括弧 `}` は、その終わりを意味する。
- クラスとは、オブジェクトのコンストラクタ、簡単に言えば、オブジェクトを作るための設計図である。それぞれのクラスには名前があり、今回はHelloWorldというクラス名になっている。

```java
  public static void main(String[] args)
```

- `public` は、このメソッドがどこからでも誰でもアクセスできることを意味し、グローバルに利用できることを意味する。
- `static` は、このメソッドが静的なものであり、変更できないことを示す。
- `void`は、何も返さないメソッドを意味する。
- `main`は、Javaのmainメソッドの名前。
- 文字列 `args[]` は、mainメソッドに渡される引数を指す。args は他の文字列名を付けても構わないが、これが標準的な命名方法。
- `System.out.println("Hello, World!");` これは、Hello, World! がprintされる出力行。
- 個々の文や変数の宣言はセミコロンで終わる。

1つの文字列を画面に出力するだけのプログラムにしては、かなり複雑である。


## What is JavaScript?

- JavaScriptは、軽量でハイレベルなスクリプティング・プログラミング言語であり、通常、Webページをダイナミックでインタラクティブなものにするために使用される。
- HTMLに動的なテキストを追加することができる。その詳細な機能について、Javaと比較してみる。

### JavaScriptでコードを書き始めるには

- JavaScriptを始めるには、以下の2つがあればOKです。
    - ブラウザ(Google Chrome、Safari、Firefox、Internet Explorer)
    - テキストエディター（メモ帳、VS Code、Atom など）

### 初めてのJavaScriptプログラムの書き方

JavaScriptでhello worldプログラムを書いてみる。

```js
// A JavaScript Program used for printing a simple string (character input type, e.g. HelloWorld),
console.log('Hello World');
```

### コードの説明

- 1行目は、前回のJavaプログラムと同様に、1行コメント。

```js
  console.log
```

- コンソール（ブラウザのデバッグ用コンソールへのアクセスを提供するオブジェクト）に何かを表示することができる。要するに、次のようなときに表示されるということ。


1. マウスを右クリックして
- `Inspect` をクリックする
- コンソールタブを選択する
- コンソールでログに記録された文を見る

Javaと比較してどれだけ簡単でしょう。


## JavaとJavaScriptの違い

- 2つの言語の主な違いは以下の通り。
    - パラダイム。Javaは厳密にはオブジェクト指向プログラミングのパラダイムに従っているが、JavaScriptはオブジェクト指向プログラミング、手続き型、スクリプト型のプログラミング言語を含むマルチパラダイムに従っている。
    - コードの実行。Javaアプリケーションは、JVM（Java仮想ランタイム環境）上で柔軟に実行できるのに対し、JavaScriptはブラウザ固有のアプリケーション固有の環境でのみ実行される（Node.jsはまた別）。
    - オブジェクト。Javaのオブジェクトは純粋にクラスベースであるのに対し、JavaScriptのオブジェクトはプロトタイプベース。
    - 型チェック。Javaはコンパイル前に変数や関数の型チェックをしっかりと行うため、実行される確率やコンパイル時に実行される確率が非常に低くなっている。一方、JavaScriptは弱型化されており、コンパイルされるまで変数の型がわからないため、実行時やコンパイル時にエラーが発生する可能性が高くなる。
    - ファイルの拡張子 Javaのファイル拡張子は.javaであるのに対し、JavaScriptのファイル拡張子は.js。
    - マルチスレッド。Javaはマルチスレッド（2つ以上のスレッドを同時に実行してCPUを最大限に利用する処理）をサポートしているが、JavaScriptは基本的にサポートしていない。
    - コンカレンシー・アプローチ。Javaはマルチスレッド機能を活用し、スレッドベースのアプローチをとるのに対し、JavaScriptはイベントドリブンのアプローチをとります。
    
## JavaとJavaScriptの類似点

- どんな共通点があるのか。
    - どちらの言語も、多くのオンラインサポートコミュニティがある。
    - 両言語は異なる言語であるが、プログラミングの核となる概念は共通しており、以下のような構文の概念もある。
        - forループ、whileループなどのループ。
        - ifやelse ifなどの条件文。
        - Math.powのようなMathライブラリ。
        - コードブロックの区切り記号{ }、コード文の最後に付けるセミコロンなどの共通の構文記号。

## まとめ

途中元記事の筆者はJavaScriptに肩入れ気味じゃないかななどと思いつつ、

> JavaとJavaScriptは2つの異なるプログラミング言語です。いくつかの共通点は、主にプログラミングの基本原則に由来していますが、それを除けば、名前は似ていても大きく異なる2つの世界を表しています。

等とまとめられていました。一点、その名前の由来については言及がなかった。

https://qiita.com/butchi_y/items/f41ee5469b4f477201c1#:~:text=%E9%96%8B%E7%99%BA%E5%BD%93%E5%88%9D%E3%81%AFLiveScript%E3%81%A8,%E5%90%8D%E5%89%8D%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%9F%E3%80%82

> JavaScriptはネットスケープコミュニケーションズのブレンダン・アイクによって開発され、Netscape Navigator 2.0で実装された。開発当初はLiveScriptと呼ばれていたが、1995年にサン・マイクロシステムズ（現・オラクル）が開発したプログラミング言語Javaが当時大きな注目を浴びており、ネットスケープとサン・マイクロシステムズが業務提携していた事もあったため、JavaScriptという名前に変更された。

JavaScript - [Wikipedia](https://ja.wikipedia.org/wiki/JavaScript#%E6%AD%B4%E5%8F%B2) なんていう小話がWikipediaにはありまして、ここまで説明できればJavaもJavaScriptも書ける人としては堂々と誰にでも最低限は胸を張れるといえるのではないかなと思ったのでした。

以上、読み物まとめでした。お役に立てばさいわいです。