こんにちは、ice_soiです!
フリーランスエンジニアをしています。
ちょっと前に仕事で「JavaとJavaScriptの違い」について話題になった事がありました。改めて違いについて話すといろいろ気になったので今回記事にまとめることにしました!
JavaとJavaScriptは、両方とも人気のあるプログラミング言語ですが、異なる用途や特徴を持っています。今回はJavaとJavaScriptを比較し、それぞれの使い方やメリット・デメリットなどについて解説していくので、この記事が参考になればと思います!
JavaとJavaScriptとは?
JavaとJavaScriptは名前が似ていますが、完全に別のプログラミング言語です。
「鯛」と「鯛焼き」くらい違います。笑
開発当初、JavaScriptはLiveScriptと呼ばれていましたが、その当時Javaが大変な注目を浴びていたためJavaScriptという名前になったそうです。
僕はどちらも仕事で使ったことがありますが、書き方から役割まで全く違うものになります。
JavaとJavaScriptの主な用途は?
Javaは、サーバーサイドアプリケーションやデスクトップアプリケーションなどを開発するためのオブジェクト指向言語です。
「Write once, run anywhere」といった言葉があるように、1度書いたプログラムはどんなOSでも動くといった特徴があります。
最近では「Minecraft」がJavaで開発されています。
一方、JavaScriptは、ウェブブラウザ上で動作するクライアントサイドスクリプト言語です。Webサイトの装飾や動きを付けるのに使われたりしています。
最近ではNode.jsやReact Nativeを利用することでサーバーサイドやスマホアプリの開発などもできるようになっています。
JavaとJavaScriptのオブジェクト指向の違いは?
オブジェクト指向プログラミング(OOP)は、プログラミングの世界で非常に重要な概念です。オブジェクト指向プログラミングは、プログラミングをより効率的に行うための方法ですが、詳細は割愛します。JavaとJavaScriptの両方でオブジェクト指向プログラミングを使用することができますが、それぞれに特徴があります。
調べてみると下記のような違いがあります。
Javaは、オブジェクト指向プログラミングの最も基本的な概念を採用しています。Javaでは、オブジェクトを定義し、それらを使用してプログラムを構築することができます。Javaでは、オブジェクトを定義するためにクラスを使用します。クラスは、オブジェクトを定義するためのテンプレートです。Javaでは、オブジェクトを定義するためにクラスを使用し、それらを使用してプログラムを構築することができます。
JavaScriptは、Javaとは異なるオブジェクト指向プログラミングのアプローチを採用しています。JavaScriptでは、オブジェクトを定義するためにオブジェクトリテラルを使用します。オブジェクトリテラルは、オブジェクトを定義するための簡単な方法です。JavaScriptでは、オブジェクトを定義するためにオブジェクトリテラルを使用し、それらを使用してプログラムを構築することができます。
なんのこっちゃという感じですが、Javaはクラスを定義してから使うのに対して、JavaScriptは厳密にクラスを定義しなくても使える方法があるといった違いです。(ほかにも違いはありますが、オブジェクト指向の概念自体は同じなので・・・)
コードの書き方は下記のようなものになります。
Java
Hoge hoge = new Hoge();
JavaScript
let hoge = {};
JavaとJavaScriptの型の違いは?
JavaとJavaScriptでは型にも違いがあります。
こちらも調べると下記のような違いでした。
Javaの型は、プリミティブ型と参照型の2つに分類されます。プリミティブ型には、整数、浮動小数点数、文字、真偽値などがあります。参照型には、オブジェクト、配列、文字列などがあります。Javaでは、プリミティブ型を使用して変数を宣言することができますが、参照型はオブジェクトを使用して宣言する必要があります。
対して、JavaScriptの型は、プリミティブ型とオブジェクト型の2つに分類されます。プリミティブ型には、整数、浮動小数点数、文字、真偽値などがあります。オブジェクト型には、オブジェクト、配列、文字列などがあります。JavaScriptでは、プリミティブ型を使用して変数を宣言することができますが、オブジェクト型はオブジェクトを使用して宣言する必要があります。
Javaは型を明示的に指定するのに対して、JavaScriptは暗黙的な型変換をしてくれるので明示的に型を指定しないと型をよしなにしてくれます。(Javaもラッパークラスなどではしてくれます)
暗黙的な型変換はバグの温床になるのでJavaScript書いてるときはよく悩まされました・・・。
JavaとJavaScriptのスレッドの違いは?
スレッドとは、CPUによって処理される実行単位です。
JavaとJavaScriptではスレッドに関しても異なる特徴を持っています。
こちらも調べると下記のような違いでした。
まず、Javaのスレッドは、マルチスレッドプログラミングを可能にするために使用されます。マルチスレッドプログラミングとは、複数のスレッドを同時に実行することです。Javaのスレッドは、複数のスレッドを同時に実行し、複数のタスクを同時に処理することができます。
対して、JavaScriptのスレッドは、非同期プログラミングを可能にするために使用されます。非同期プログラミングとは、複数のタスクを同時に実行しながら、タスク間でデータを交換することです。JavaScriptのスレッドは、複数のタスクを同時に実行し、タスク間でデータを交換することができます。
アプリとして動くJavaは処理をマルチに動かすのが得なのに対して、ブラウザからのリクエストを行うJavaScriptは非同期に処理を行うことが得意といった違いでした。
JavaとJavaScriptのフレームワークの違いは?
フレームワークは、プログラミング言語において重要な役割を果たします。JavaとJavaScriptの両方には、開発者がプロジェクトを効率的に実行するのに役立つ多くのフレームワークが存在します。
ちなみにフレームワークとライブラリは下記のような定義で分かれています。
フレームワークは、プログラミングにおいて、特定のオペレーティングシステムのためのアプリケーションの標準構造を実装するのに使われるクラスやライブラリの集まりを指します。 つまり、汎用的に必要なものをまとめている枠組みや骨組みのことです。
対して、ライブラリは、汎用性の高い複数のプログラムを一つにまとめたもののことを指します。 つまり、クラスや関数といったパーツのまとまりで提供されるソースコードの部品のことです。
それではそれぞれの違いを見ていきます。
Javaでは下記のようなフレームワークがあります。
- Spring Framework
- Play Framework
- JSF(Java Server Faces)
- SAStruts(Super Agile Struts)
- Struts
- Apache Wicket
- Dropwizard
- ZK
- Ninja web framework
- Spark Framework
次にJavaScriptでは下記のようなフレームワークがあります。
- React(Next.js)
- jQuery
- AngularJS
- Vue.js(Nuxt.js)
- Backbone.js
- Knockout.js
- Node.js
僕は仕事ではJavaではSpring FrameworkやStrutsを使っていました。大きいプロジェクトだったのでかっちりきっちり作る場合は割と使われている印象です。
対して、JavaScriptではReact、jQuery、Vue.jsなどを使っています。最近のフロントエンド開発はフレームワークありきなので必然的にReact、AngularJS、Vue.jsあたりとそれを動かすためにNode.jsは触ることになるかと思います。
JavaとJavaScriptの違いについてのまとめ
ここまでいろいろあげてきましたが、JavaとJavaScriptでは主に以下のような違いがあります。
- Javaは、高度なアプリケーションを開発するために使用されますが、JavaScriptは、ウェブサイトをよりインタラクティブにするために使用されます。
- Javaはオブジェクト指向プログラミング言語であり、JavaScriptはスクリプト言語です。Javaはコンパイルされた言語であり、JavaScriptはインタプリタ言語です。ただしどちらもオブジェクト指向型プログラミングは使用できます。
- Javaは静的型付け言語であり、JavaScriptは動的型付け言語です。Javaでは、変数の型を宣言する必要がありますが、JavaScriptでは宣言する必要はありません。
- Javaはプラットフォームに依存しない言語であり、JavaScriptはプラットフォームに依存します。Javaは、Windows、Mac、Linuxなどのプラットフォーム上で動作しますが、JavaScriptは、ブラウザ上でのみ動作します。
- Javaは、サーバーサイドで実行される言語であり、JavaScriptはクライアントサイドで実行される言語です。ただし、Node.jsを使うことでサーバサイドでも動かすことができます。
以上、JavaとJavaScriptの違いについてでした。
Webのシステムを開発する際はどちらも使う機会があるので、改めて違いを比較することができてよかったと思います。
今後も気になったことなどは記事にしていこうと思っています。