Java/クイックツアー

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動
Wikipedia
ウィキペディアJavaの記事があります。

情報技術 > Java > Javaクイックツアー

Javaは、"Write once, run anywhere" (WORA、「一度(プログラムを)書けば、どこでも実行できる」)を謳い文句に登場しました。Javaで書かれたプログラムは、従来のプログラムとは違い、一度書けば、どんなOS(オペレーティングシステム)CPUの上でも動かすことができる「プラットフォーム非依存」という特徴を持っています。まずは、そのJavaの特徴について説明します。

Javaの特徴[編集]

Javaはその優れた「プラットフォーム非依存性」によって、WindowsMacintoshUnixLinux、どのプラットホームでも、コンパイルすることなくプログラムを動作させることができます。また、従来のC言語やC++言語でしばしば見られた、10年前に購入したソフトウェアが動作しないといった問題も解決しています。これらの特徴に加え、Javaはネットワークとの親和性にも優れています。Javaは最初からネットワークを意識した言語なのです。Javaという技術は、もともと家電製品を制御するために作られたものです。そのためには、ネットワークとの親和性が高く、どの家電製品でも同じようにJavaのプログラムが動作する「プラットフォーム非依存型」であることが必要でした。そのため、Javaはパーソナル コンピューやだけでなく、サーバーや携帯端末でも動作するようになりました。

C/C++言語との違い[編集]

Wikipedia
ウィキペディアJavaとC++の比較の記事があります。

Javaはネットワークとの親和性が強いことから、Javaコンパイラには厳しいセキュリティチェックがかかっており、そう簡単には危険なプログラムを作ることができないようになっています。

Javaにある多くの機能が、C/C++からの影響を受けています。そのため、Javaは文法がC/C++に非常に似ています。しかし、それと同時に、C/C++では危険とされる様々なものを除去し、欠点を改良してJavaが開発されました。

ポインタ[編集]

Wikipedia
ウィキペディアポインタの記事があります。

JavaにはC言語C++にあるポインタと類似する機能はあるものの、C言語やC++のように、ポインタを使ってメモリ上の特定の番地にアクセスしてシステムを破壊するという危険なことが起きないようになっています。よく「Javaにはポインタがない」と誤解されることがありますが、実際にはあります。しかし、C言語やC++言語のように、危険な「ポインタ演算」を行うことはできなくなりました。これにより、Javaでは、C言語やC++言語よりもより安全にプログラミングをすることが可能になりました。Javaを開発したSun Microsystemsは、「Javaにはポインタがない」を宣伝文句にしていることがありましたが、これは誤解を招く表現であり、実際には、むしろJavaはポインタだらけです。しかし、C言語やC++言語のような頭を悩ます危険な問題はおきにくくなっています。つまり、「Javaにはポインタはあるけれどもポインタ演算はない」という表現が正確です。

配列[編集]

Wikipedia
ウィキペディア配列の記事があります。

C言語やC++言語ではJava同様配列というものがあります。C言語やC++言語ではこの配列を使って危険なことができてしまいました。JavaもC言語やC++言語も配列を宣言するとき、長さを指定します。しかしC言語やC++言語では、長さを指定しても、その配列の長さを超える領域にアクセスすることも可能でした。Javaでは、配列の領域外にアクセスすると例外処理機構が働いて、事前にどこで問題が起きたのかを知らせてくれます。しかし、C言語やC++言語では知らせてくれません。そのためにどこでプログラムに問題がおきたのかを通知することができないという問題がありました。そのために、C言語やC++言語では、システムを破壊に追いやるバッファオーバーフロー(buffer overflow)という深刻な問題をもたらしました。C言語やC++言語では、メモリ空間全体を非常に長い巨大な配列として見なしているのです。その巨大な配列をポインタと見なしてメモリリークを引き起こすことも可能になる危険なメモリアクセスを可能にしています。Javaではこのようなことはなく、配列の添え字には負の値を使うことができず、宣言したサイズ内でしかアクセスできないようになっています。つまり、Javaは不用意に外部のリソースにアクセスできないようになっているのです。

オート ガベージコレクション[編集]

Wikipedia
ウィキペディアガベージコレクションの記事があります。

Javaはさらに、メモリ管理も容易になりました。オートガベージコレクションによって、オブジェクト生成時に確保したメモリ領域は、そのオブジェクトが不必要になったとき、自動的に開放してくれるという優れた特徴があります。C言語やC++言語ではmalloc()やnewで確保したメモリはfree()やdelete()で明示的に解放しなければなりませんでした。これは、いつどこで、メモリを解放すべきかを、自分で決めなければならないという負担がありました。そのためにC言語やC++ではこのメモリ解放を怠ることで、システムを破壊するメモリリークという惨事を引き起こす危険もありました。Javaでは、このガベージコレクションが自動的に破棄されたメモリ領域を、その名の通り、ゴミ収集車のように自動的に回収してくれます。そのために、メモリをいつ解放するかを意識せず、効率よくプログラミングすることができます。これは、自動車にたとえると、マニュアル車オートマ車に変わってしまうほど効率的な進化を遂げているということです。

廃止された技術[編集]

かつて、webブラウザなどと連動してJavaを使える「Javaアプレット」という技術がありましたが、現在[1]では廃止されています。

Java 9 の時点で既にJavaアプレットは非推奨になっています。

webブラウザの動的な制御のプログラミングは、現在および今後は HTML5 と JavaScript で行う必要があります。

このページ「Java/クイックツアー」は、まだ書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にトークページへどうぞ。
  1. ^ Java11時点