「Java(ジャバ)」という言葉は、このブログの読者の方であれば聞いたことがあるかと思います。
「Java」はプログラミング言語の1つで、企業が使うような大規模なシステムを開発するときに使われているやつでしょ?
と思われるかもしれません。
たしかにその通りなんですが、これからあなたがJavaを学ぶなら、あるいはJavaの技術を深めていきたいなら、もう少しJavaの特徴を知っておくことがとても役に立つはずです。
本記事の概要
「Java」とは?
Javaはプログラミング言語、という理解をもう少し広げてみましょう。
例えば、CやC++もプログラミング言語ですが、Javaとは違っています。
自分のPCにソフトウェアを開発することを考えてみましょう。
そのとき、言語はC、C++、Javaのどれでも可能だとします。ソフトウェアが完成して、それをみた友人が、ぼくのPCでも使いたい!と言ってくれたとします。
友人のPCでそのソフトを動かす場合、CやC++で開発したソフトウェアは、自分と友人のPCが異なれば、再開発しなければならない可能性があるんです。
それに対してJavaであれば、コンピュータの違いを気にすることなく、開発したソフトウェアを友人のPCに移植することが可能です。
つまり、Javaには、「コンピュータや環境に寄らずどこでも使えるソフトウェアを作れる」という特徴があります。
これは非常に大きなメリットです。考えたら当たり前ですが、あるPCで作ったソフトを別のシステムでも簡単に使うことができれば、開発コストが大幅に削減できますよね。
こういったことから、Javaは企業で使うようなソフトウェア開発でも欠かせない言語となっています。Javaは、「どこでも使えるソフトウェアを開発するための共通仕様」と言えるわけです。
なぜ「Java」は、いろいろなシステムで使えるの?
Javaがどこでも使えるソフトウェアを作れる!
と書きましたが、
なぜ、そんなことができるの?
と思われるかもしれません。
それを説明するために、まず、なぜ他の言語ではコンピュータごとに再開発が必要なのかを考えてみましょう。
ソフトウェアを開発されたことがあれば分かるかと思うのですが、開発中にはどうしても、そのコンピュータのCPUや基本ソフト(OSなど)の制約があります。
あるコンピュータで開発したソフトは、そのコンピュータのCPUやOSの制約の元で作られるんです。これはどうしようもないことなんです。
したがって、そのソフトを別のCPUやOSを使っているコンピュータで動かそうとすると、うまくいかない場合が出てくるわけです。これが再開発が必要となる理由です。
Javaでは、これら各コンピュータの制約をとっぱらう仕組みを持っています。
例えて言うなら、世界各国の言語をすべて翻訳できる翻訳機をもっているのがJavaなんです。
コンピュータには様々なものがあり、そこでの仕様も千差万別です。これは世界各国でそれぞれ違う言語があり、文法も様々な状況といえます。
A国にいったらA言語を、B国にいったらB言語をといった感じで、その国ではその国の言語を使わなければコミュニケーションがとれません。
CやC++言語というのは、A国にいったらA国の辞書を使う、B国にいったらB国の辞書を使う・・といったように、それぞれの環境で各自が翻訳する必要があるんです。なので、違う国にいったら、また翻訳する必要があり、つまり再開発する必要が出てくる、ということになります。
Javaではこれが一変して、A国であろうが、B国であろうが、どこでも対応できる翻訳機を備えているんです。なのでどこの国に行こうとも、自分の言語だけ使えれば後は翻訳機を通してコミュニケーションができるわけです。A国やB国、C国とのコミュニケーションは、翻訳機を通じて行える、なので再開発する必要がないんです。
つまり、Javaでは、コンピュータの違いを吸収してくれる仕組みがあり、プログラマはその仕組みを使うことで再開発を避けることができるのです。
なので、コンピュータの違いを意識することなく開発することができ、再開発のコストも最小限にできます。
このコンピュータの違いを吸収してくれる仕組みのことを、「Java Virtual Machine(ジャバ バーチャル マシン)」と呼びます。略してJVMです。
JVMがあるおかげで、Javaはより効率良くソフトウェア開発を行うことができるといえます。
「Java」では、大人数での開発も可能
Javaは、大規模な企業向けのシステムでも採用されていると書きました。大規模なシステムを開発するといくことは、それだけ大人数での開発になります。
1人でつくる趣味のプログラムならいざ知らず、大規模なプログラムとなると、他人が書いたコードを読みながら新たに機能を追加したり、自分が書いたコードをもとに他人が改良を加えるといったことが日常茶飯事に行われます。
プログラマにはベテランの凄腕の方から新人まで、多様なスキルの人がいます。そういった方たちがまとまって一緒に開発するには、各人が「ルールを守る」ことが大事になります。
しかしソフトウェア開発では、このルールを守る、というのが実に難しいことなんです。また、ルールを守るがために開発の効率を悪くしたり、システムの性能が落ちたら本末転倒ですよね。
そこで、Javaでは、いろいろな方が「ルールを守りやすくする仕組み」を用意しています。
それが「オブジェクト指向」と呼ばれる考え方で、
- 現実に即した開発ができ、開発効率が良い
- コードのメンテナンスがしやすい
といった利点があります。特に、長期間使うソフトだと、法律の改正などで修正が必要になったりすることもありますが、そういったときの変更などもしやすいのがオブジェクト指向のよい点となっています。
オブジェクト指向を理解するための4つのポイント
オブジェクト指向を理解するには、以下の4つを知っておくことが役立ちます。
①、クラス
②、継承(けいしょう)
③、隠蔽(いんぺい)
④、多態性(たたいせい、ポリモーフィズム)
それぞれみていきましょう〜
①、クラスとは?
クラスとは、「データ」と「機能」をひとまとまりにしたもののことです。変数やメソッド(関数やサブルーチン)をひとまとまりにして管理する仕組みのことです。
オブジェクト指向言語であるJavaでは、クラスを1つのグループとして定義して、ソフトウェアの構成単位と考えます。クラスで定義された変数によってデータの取り扱い単位が決まります。
②、継承とは?
継承の意味は、普段の日本語でも使われているように、受け継ぐことです。オブジェクト指向の継承も同じ意味なんです。
あるコードを書いていて、別のコードのあるクラスAを使えたら便利だなぁ〜
というのはよくあることではないでしょうか。
そう思ったら、
そのクラスを継承します!
と宣言することができるんです。
すると、別のコードのあるクラスAをわざわざ1から記述する必要がなくなります。
継承を宣言することで、コードを書かずにクラスAを使えるようになります。便利ですよね〜
また、今回はクラスAにはない「機能を追加」したいなぁ〜ということであれば、その追加する部分だけコーディングして付け加えればオッケーなんです。ラクですよね〜
さらに、クラスAでは必要だったけど、今回の場合はちょっと気に入らないぁという部分があれば、あらたに「定義しなおす」ということもできちゃいます。
継承は、クラスの再利用を可能にしてくれるありがたい仕組み、といえます。
③、隠蔽とは?
継承のところで、元のクラスAにあった部分が気に入らないを定義しなおすことができる、と書きました。
ここで考えてほしいのですが、クラスAを継承しているのが、今回だけだったら問題ないかもしれません。
でも、もしも他のプログラムでクラスAを継承している部分があったらどうでしょうか?
今回クラスAに変更を加えてしまったら、他のクラスAを継承しているプログラムにも影響してしまいますよね?
なので、定義しなおすことは便利な半面、まずいことを引き起こす可能性もあるわけです。
そこでどうするか?ということで「隠蔽」という機能が活躍します。
隠蔽というのは、あるクラスの中の変数に直接アクセスすることを制限する仕組みです。
こうすることで誰かが勝手に変更してしまうことを防ぐことができるんです。
具体的には、クラス内で変数の定義を行うときに、以下のようにアクセス権を示しながら定義します。
private 変数名
として定義された変数は、そのクラス内だけからアクセスできる、というように変数のアクセスに制限をかけることができます。このことを隠蔽というわけです。
public 変数名
として定義された変数は、外部のプログラムから自由にアクセスできる、という変数の定義方法となります。
protected 変数名
もあり、これは同じクラス内、または継承したクラス、もしくはクラスをまとめて整理したものであるパッケージ内からのみアクセスすることができる、というアクセス権の設定になります。
隠蔽で変数にアクセス権を設定でき、継承での問題点を克服しているわけです。
④、多態性(ポリモーフィズム)とは?
クラスをたくさん作っていくうちに、クラスAとクラスBに同じような処理を(できればラクに)実行したい、ということがあります。
たとえば八百屋さんの経理を考えたときに、ニンジンクラス、玉ねぎクラス、ピーマンクラスがあれば、これらの売上を計算するには、それぞれのクラスに売上計算の処理を記述する方法もありますが、そうしないで、売上計算の部分を別に用意するやり方もありそうですよね。そしてその方がラクそうだと想像できます。
こういった状況で多態性が役に立ちます。
類似したクラスがあるときに、そこに共通してなにかのアクションを起こしたいときに使うのが多態性(ポリモーフィズム)なんです。八百屋の例だと、売上計算の部分がポリモーフィズムの活用部分となります。
というわけで、ここではオブジェクト指向の4つのポイント(クラス・継承・隠蔽・ポリモーフィズム)をご紹介しました。
より詳しくはこちらにございます↓
「Java」が企業でよく使われる2つの理由とは?
Javaは企業システムで使われる方が多いように思います。上述の内容を踏まえて、その理由についてまとめてみました。
①、企業システムで求められることの1つに、新旧さまざまなシステムが入り乱れている中で手軽に使える、ということがあります。
企業は継続的にシステムに投資を行っていて、最新のコンピュータだけでなく古いコンピュータも現役で使っていることがあります。それらのどちらでも動くアプリケーションが必要ということがあります。
こういった時に、「Javaはコンピュータを選ばない」という特徴が活きてきます。上述したように、JVMによってどのコンピュータでも実行できるソフトウェアを効率的に開発できます。また、これから先に新しいコンピュータを導入しても、同じものを使っていける安心感もあるわけです。
Javaのアプリケーションは、「Write once, Run Anywhere(一度書けば、どこでも実行できる)」と言われるように、この特徴が企業に受け容れられています。
②、差分開発ができるため、開発効率がいい
ソフトウェアを作る時に、ゼロから作っていくとコストが膨大になります。もし、既存の技術を再利用して使えれば、その分開発のペースがアップしますよね。
上でオブジェクト指向の4つのポイントを書きましたが、オブジェクト指向を採用することで、各機能などをプログラマが分担して開発する「分担開発」をすることができます。
また、「フレームワーク」といって、多くの人が使いそうなものをまとめたパッケージのようなものが使えます。フレームワークを基本とすることで、フレームワークに備わった機能はフレームワークに任せて、プログラマはフレームワークにない部分だけ作ればよくなります。作りたいソフトウェアの特殊な処理だけを開発すればいいわけです。これでずいぶんラクになるのがわかるかと思います。
このような既存技術にない部分だけを開発する方法を「差分開発」と呼びます。
Javaでは差分開発が可能で、効率良く開発できるわけです。
このように、Javaは、長く・どんなコンピュータでも使え、開発効率もよいので企業システムに受け入れられていると言えます。
まとめ
というわけで、今回はJava初心者の方向けに、なぜJavaなの?というところをまとめました。
- さまざまなコンピュータで動くプログラム
- メンテナンスがしやすさ
- 多人数やフレームークによる開発効率がよさ
などがJavaのメリットだといえます。
というわけで、
- これからJavaを使ってみようという方
- もう一度チャレンジしたいという方
向けに以下のおすすめ本をご紹介しました。
こちらもございます↓
こちらの記事もございます↓
『Webアプリケーションを開発したいあなた、基礎からスムーズに学べるこちらはいかがでしょうか【プロになるためのWeb技術入門】』