この記事は、他の言語でプログラミングしていた人が、Javaでプログラムを組んでみると言う人に向けて書いた記事です。
今回はJavaはどう言ったプログラミング言語なのかという、特徴について記載しています。
#注意事項
この記事はWikiの内容をもとに書かれています。
wikiのリンク
https://ja.wikipedia.org/wiki/Java
Javaの特徴
現在Java開発を行っているOlacleによると、Javaには6つの特徴があります。
1.オブジェクト指向
Javaの主要プログラミングパラダイム(プログラマにプログラムの見方を与えるもの)は、クラスベースのオブジェクト指向であるとされています。
※オブジェクト指向とは、作業単位でプログラムを分割することで、修正などを簡単にするという考え方です。
2.プラットフォーム非依存
プラットフォームとは、
ソフトウェアを動作させるのに必要な、基盤となる装置やソフトウェア、サービス、あるいはそれらの組み合わせ(動作環境)
のことを指します。(http://e-words.jp/w/プラットフォーム.html )
つまり、プラットフォーム非依存とは、どのプラットフォームでも(=動作環境がWindowsでもMacでもLinuxでも)実行できるプログラミング言語だということです。
逆に、プラットフォーム依存だと、プラットフォームごとに併せてコンパイルする必要があります。
プラットフォーム非依存の詳細説明
「JavaはOSに依存しない」ということを、あなたならどう新人SEに説明しますか?
に分かりやすい回答があったので、内容を噛み砕いて説明します。
まず、Javaと他言語の違いとして
基本的にコンパイル言語のコンパイル結果はOS固有の形式になる
という点が大事です。
CやRubyなどの言語でも、どのプラットフォームでも同様に記載し、実行することが出来ますが、コンパイルした結果はWindowsならWindows用の、macならmac用のものとなります。なので、もしWindowsで記載したプログラムをmacに持ってくれば、再コンパイルを行う必要があります。
しかし、 JavaはJVM(Java Virtual Machine)という仮想マシンの上で動いており、このJVMがOSの差異に対応してくれます。このおかげでWindowsで記載したプログラムをmacに持ってきても、再コンパイルせずにできるのがJavaの大きな特徴です。このJVMで動くJava以外の言語は、Scala、Kotlin、Groovyなどがあるそうです。
3.マルチスレッド
マルチスレッドとは、複数のスレッドを同時に走らせる事ができる能力のことです。この場合のスレッドとは作業のことで、複数の作業を同時に行うことができるということです。いろいろ調べてみましたが、マルチスレッド出来ない言語が見つかりませんでした。
4.ガベージコレクション
ガベージコレクションとは、不要なデータ領域を開放することです。もっと分かりやすく言うと、もう使っていないデータを空にすることで、使える箇所を増やす機能です。C言語/C++はライブラリとして実装されていますが、Javaは言語の標準機能として実装されています(=必ずやってくれます)。
5.分散コンピューティング
分散コンピューティングとは、複数のコンピュータをネットワークでつなぐことで一つのコンピュータとして使用することです。この分散コンピューティングをJavaは行うことができます。
システム内のあらゆるハードウェアにアクセスできるプログラミング言語なら全てできるようですが、Java言語はJava-RMI(Java Remote Method Invocation)という、ネットワークを意識せずにネットワークを介したアプリケーション間でのプログラム呼び出しを可能とするAPIを持っています。
このJava-RMIにより、分散コンピューティングのすべてをJavaで記述できるので別の言語を使う必要がありません。これがJavaの分散コンピューティング時の強みといっていいと思います。
(Java標準の分散オブジェクト技術「Java-RMI」とは を参照)
6.セキュリティ
Javaは開発当初からセキュリティを考慮した設計をされており、セキュリティ面で信頼されています。
具体的にはサンドボックスモデルに基づいたセキュリティ機構を備えているとあります。サンドボックスとは、
外部から受け取ったプログラムを保護された領域で動作させることによって、システムが不正に操作されるのを防ぐセキュリティ機構
のことを指します。
(https://ja.wikipedia.org/wiki/サンドボックス_(セキュリティ) を参照)
以上の6点が特徴です。
--fin--