【初心者用】Javaについて少しかじったのでまとめてみた

タイトル通り、Javaについて勉強してみて、得た知識を軽くまとめていこうと思います。

初心者用、とある通り、極力専門用語については噛み砕いて、分かりやすく説明していきます。

1. Javaってなに?

Javaとは、プログラミング言語の一種で、1995年に誕生しました。

よく間違われますが、JavaScriptとは名前こそ似ていますが、全く関係ありません。

こっちが元とか向こうが派生とかいう話も一切ありません。


様々な場所で使われていて、特に銀行や証券などの金融系をはじめとした、大きくて、安定性やセキュリティの高さが求められるシステムで多く使用されている言語です。

2. Javaの強みは?

アプリが動作環境に依存しない

「Write once, run anywhere」(一度プログラムを書けば、どこでも動く)をスローガンとして掲げており、その言葉通り、Javaで作成したアプリケーションはJVM(Java Virtual Machine)と呼ばれる仮想マシンを通すことで、WindowsやmacOS等のOSを問わず動かすことができます。

つまり、アプリが動作環境に依存することはないため、Javaは色々な場所で利用されています。


堅牢性が高い

Javaは「オブジェクト指向」という考えを取り入れて作られたプログラムです。

「オブジェクト指向」とは、システム構成の考え方の一つです。

細かく説明すると長くなる(そもそもふわふわした概念みたいなものなので)ので、ざっくり説明すると、「システムを特定の役割ごとに分割し、それらをモノ(オブジェクト)として捉えたうえで、それらを組み合わせたり関係性を定義していくことでシステムを作ろう」という考え方です。


そして、そういったオブジェクト指向型プログラミング言語の中でも、Javaは文法がしっかりしていて、不具合の発生を防ぐことができる堅牢なプログラムを書くことができます。

そのため、Javaは規模が大きく、安定した稼働が求められるアプリ・システムの開発に適性が高いとされています。

例としては、利用者の多いWebアプリ(ユーザーの操作等によって結果が変わるWebページのこと)や銀行システム等です。


プログラムの実行速度が速い

Javaは、「コンパイラ型言語」です。

コンパイラ型言語とは、実際にプログラムを実行する前に、実行するためのファイルを作る(コンパイル)言語のことで、対になるものとして実行時に都度プログラムを読み込むインタプリタ型言語があります。

コンパイラ型言語は、コンパイルする際にプログラムの最適化の処理も行われるため、順を追って読み込むインタプリタ型に対して実行速度が速いです。

システムを利用するうえで、実行速度は大切な要素になるため、これは十分メリットになると言えます。


無駄なメモリを自動で解放してくれる

プログラムは、動作する際にメモリ領域を利用します。

そして、プログラム中で解放するよう明示しない限り、メモリは占有され続け、それが重なるとメモリが圧迫され、コンピューターの処理能力の低下につながります。

つまり、最適なパフォーマンスのためにはプログラム中で不要になったメモリの解放を明示しなければならないのが通常なのですが、これを自動的に行ってくれる機能があります。


これを「ガベージコレクション」というのですが、Javaにはそれが備わっており、パフォーマンスの向上に繋がっています。


安定性・安全性が高い

前項でも説明しましたが、Javaが誕生したのは1995年、つまり年齢で言えば25歳以上です。

加えて利用人口が圧倒的に多いことから、幾度となく改良がなされ、安定性が高いです。

また、仮想マシン内で動かしていることから安全性も高く、この点から金融系などからも使われているほどの信頼を得ています。

3. Javaの弱みは?

高性能だが、故に学習難易度が高い

Javaは、強みで述べたように高性能な言語ですが、その分コーディングするうえで覚えておくべき知識が多く、学習の難易度が高いプログラミング言語の一つです。

特に、前述したようなオブジェクト指向という考え方はプログラミング初心者には難しく、ハードルが高いという意味ではプログラミング入門には向かないと言えるでしょう。

何らかの理由があって、プログラミング未経験から学ぶ必要がある場合は、オンラインスクールを利用することがおすすめです。


プログラムが冗長になりがち

Javaは、堅牢なプログラミングを可能にするプログラミング言語ですが、そのコーディングルールの都合上、プラグラムが冗長になりがちです。

以下は、画面上に「Hello,World!」と表示させるだけのコードです。


比較対象として、処理のためのプログラム行数が少ないことで有名なPythonを挙げております。

極端ですが、目で見る分にはその冗長さがよくわかる一例です。

  1. #javaの場合
  2. class Hello{
  3.   public static void main(String[] args){
  4.     System.out.println("Hello,World!");
  5.   }
  6. }


  1. #Pythonの場合
  2. print("Hello,World!")



安全性との引き換えとはいえ、冗長であるがゆえに開発に時間がかかる点に目をつむれるかどうか、一長一短な面ですね。


小規模開発に向かない

Javaは、その特徴として拡張性や再利用性が挙げられます。

それらは、大規模であったり、長期的な運用が分かっているシステムでは利点となりますが、小規模開発では活かしにくいものです。

また、前述したようにコードが冗長になりがちで開発に時間がかかるという点も含めて、小規模開発には不向きであると言えます。

小規模のシステムに対しては、別のプログラミング言語での開発を視野に入れた方がいいかもしれませんね。

4. 結局、Javaはどんな言語なの?

Javaは、長所と短所がはっきりしているプログラミング言語です。

OS問わず稼働できて、堅牢なプログラムを実装できる反面、その堅牢さゆえに小規模開発には向かない。


古い言語で、昨今はPythonやRuby等の知名度が上がってきて斜陽気味との見方もありますが、まだまだ現役で、導入されているシステムの分野も幅広く需要も高いです。


また、学習難易度は高いですが、Javaは他のプログラミング言語(C言語やC++、C#等)と共通している部分が多くあります。

これは歴史的にみて、誕生以前からあったC言語やC++等から継承している部分が多くあること、C#等にはJavaの影響を大きく受けているという側面があるのですが、要は、


「Javaさえ学んでおけば、他のプログラミング言語を学ぶ際にも色々応用が利く」

ということです。


難しい分、メリットもあるプログラミング言語であると言えるでしょう。