どうも、C++が最も得意なプログラマです。
仕事の関係でJavaを扱うことになったのですが、Javaに関しては全くの未経験ですので、今回からJavaについて学んでいこうかと思います。
【Java基礎】Java未経験から習得を目指す 基礎知識編1
1. そもそもJavaとは?
Javaはプログラミング言語です。
プログラミング言語は数多く存在し、現在ではおよそ200種類を超える数のプログラミング言語が存在しますが、Javaはその中でも昔からよく使われる言語としてメジャーなものです。
Googleが開発に用いるGoogle三大言語のひとつとしても数えられています。(他はC++、Python)
Javaが長く根強い人気を誇る理由は、基本的にどのような環境でも使用ができる言語である、という点が大きいです。
システム開発からWeb開発、アプリケーションの開発などにも利用されています。
2. Javaの特徴は?
Javaを開発に用いるにあたっての特徴を把握しておきたいところです。
特徴をいくつか調べましたので、簡単にご紹介します。
・オブジェクト指向のプログラミング言語である
・世界中で安定して使用されている
・OSに関わらずに動作する
・処理速度が速い
・セキュリティ面の信頼性が高い
・ガベージコレクション
・豊富なライブラリ
2-1. オブジェクト指向のプログラミング言語である
Javaはオブジェクト指向のプログラミング言語です。
簡単にオブジェクト指向について説明すると、プログラムをモノとして見る考え方のことで、そのモノの動作を定義して操作していくような考え方です。
理解するには知識と経験が必要ですが、使いこなせることができれば「複数人で同時に効率的な開発が行える」「ソースコードの再利用や機能追加、修正が容易」「メイン処理が複雑にならず、バグの発生を抑えられる」などのメリットがあります。
Javaはこのオブジェクト指向のプログラミング言語の中でも代表的な言語だといえます。
2-2. 世界中で安定して使用されている
Javaは世界中で使っている技術者が多い言語です。
そのため、言語にバグが発生していても修正されやすいです。
また、利用者が多いということはその分学習のための情報も充実しています。
学習用の書籍やWeb上にある情報も、全くの初心者向けのものから第一線で活躍する開発者が利用するようなものまで幅広く数多い、という特徴があります。
また、Android向けアプリケーションの開発用のプログラミング言語になっているので利用される場面も多いことも世界中で使用される理由のひとつです。
2-3. OSに関わらずに動作する
Javaはプラットフォームに依存しないプログラミング言語です。
「JVM(Java Virtual Machine):Java仮想マシン」という物で動いており、このJVMが各OSの差分を吸収することでOSに関わらずに動作を行うことができます。
Javaで開発されたプログラムを動作させる為のソフトウェアをプログラムの利用環境にインストールすれば、例え環境がWindowsでもMacでもLinuxでも、危機の種類も問わずに実行が可能な点も特徴のひとつです。
2-4. 処理速度が速い
Javaは数あるプログラミング言語の中でも処理速度に優れたプログラミング言語です。
というのも、Javaが起動時にコンパイルを必要とするコンパイラ言語である、という理由があります。
コンパイルとは、プログラムを実行するために、実行するマシンが処理可能なファイルに変換することです。
人間が読み書きを行う文字と機械が認識、処理を行う機械語は異なるので、個々の翻訳を行うような仕組みだと考えてください。
Javaが分類されているコンパイラ言語では、プログラムの起動時にコンパイル済みのファイルをあらかじめ用意してからプログラムを実行する、という仕組みで動作しますので、プログラムを実行するタイミングでコンパイルを行う必要がなくなり、その分処理速度が速くなります。
同様に処理速度の速さを特徴として挙げられるC++に比べると、さすがにプログラムの起動速度でも処理速度でも基本的には劣っていますが、特徴を理解しながら開発を行うことで、C++にも迫る処理速度の実現も可能であると言われています。
2-5. セキュリティ面の信頼性が高い
Javaは開発される際に、セキュリティを考慮した設計を行われています。
そのため、他のプログラミング言語と比べて安定性が高く、セキュリティ面の信頼性が高いといわれています。
第三者が作成したアプリケーションを安全に実行することが可能です。
このセキュリティ面の信頼性が高い、という特徴が表れている事例として、銀行や証券会社といった、特に強固なセキュリティが求められる大規模なシステムの開発に多く利用されている、というところがあります。
2-6. ガベージコレクション
Java特有の機能として、これまでのC言語やC++には無かった「ガベージコレクション」と呼ばれる機能が新しく実装されています。
ガベージコレクションを直訳すると「ごみを収集する」という意味です。
これはプログラムの実行中に不要になったメモリを自動で消してくれる仕組みのことです。
プログラミングで不要になったメモリの消し忘れを未然に防ぐことが出来るため、安全なプログラミングを行うことができます。
C言語やC++ではメモリの管理をプログラミングを行う開発者自身が意識して行う必要があり、メモリの管理がうまくいかずにバグを引き起こしたり、重大な損害を発生させてしまうようなこともあって難易度が高いと言われていますが、その部分を考えなくてもよいというのは、開発者への負担の軽減につながったり、重大な損害を未然に防ぐ、という役割を担っています。
2-7. 豊富なライブラリ
プログラミングには「ライブラリ」と呼ばれるプログラムの部品や機能があります。
Javaはプログラミング言語のなかでも特にこのライブラリが豊富に用意されています。
さらに、多くのライブラリは無料で提供されているという点もメリットです。
このライブラリをうまく利用することで、汎用的で様々な機能を自分のプログラムの中に簡単に組み込むことができます。
それにより、すべての機能をイチから開発していく、という手間を省くことができます。
先に挙げた世界中で多くの技術者に利用されている、という特徴がここに効いてきており、様々な技術者が自作のライブラリを公開していることもあるため、非常に豊富なライブラリを使用できます。
また、自分でもライブラリを自作することも可能です。
開発を行うにあたってよく使用するような機能をライブラリにまとめておくことで、他のプログラムの開発でも流用することができ、非常に効率的な開発につながります。
3. まとめ
今回はJavaの特徴をいくつか挙げながら紹介してみました。
JavaはC言語やC++の構文を引き継いで作られていたり、C#やRubyなどはJavaの影響を受けて作られたプログラミング言語でもあるので、Javaを習得することでほかのプログラミング言語の学習もより進めやすくなるとも言われています。
Javaの基礎知識とオブジェクト指向の開発を習得しておけば、今後も活用できそうだと感じました。
また、Java自体の用途も多岐に渡りますので、開発者として経験を積むのであれば選択肢のひとつとしても魅力的です。
次回はJavaの用途を中心としてまとめてみますのでよろしくお願いします。