はじめに
この記事はプログラミングを習いたての初心者が、自分の知識をアウトプットするために書いています。
そのため、あくまで学習メモであり、厳密な技術解説ではありません。
正確な情報とは限らないため、参考程度にご覧いただければと思います。
特徴1. プラットフォーム非依存性「write once, run anywhere」
Javaは特定のハードウェアやオペレーティングシステムに依存しないため、あらゆる環境での共通動作が保証されています。
基本的にどこでも動くので、人気のある言語の一つです。
Web系言語・Web系言語以外のどちらにも使える汎用性の高いプログラミング言語とも言えます。
- Web系言語:ブラウザを通して動くものを作るためのプログラミング言語
- Web系言語以外:ゲーム機、ポスレジなど
特徴2. 下位互換性を意識したプログラミング言語
Javaは基本的に下位互換性を担保している言語です。
そのため、長期運用を前提としている大規模な業務用システムと相性がいいといわれています。
バージョンを上げても動かなくなることが少なく、それがJavaを使うメリットになります。
注意
ただし、Java11で破壊的な変更が加わっており、またその後も少しずつ変更されているため、完全な下位互換性の担保はありません。
特徴3. オブジェクト指向プログラミング
オブジェクト指向についての理解は、まだ初心者の私にとっては難しいものですが、「より楽にプログラミングしよう」「変化に強いコードを書こう」というときに最適なイメージです。
以下は私が使っていて感じたふんわりとした特徴です。
-
多態性:例えばインターフェースを使うことで、「共通の使い方」のみを指定し、「実態」は状況によって変えることができる
多態性// 共通の使い方を定義するインターフェース interface Animal { void makeSound(); } // 実態1:犬 class Dog implements Animal { @Override public void makeSound() { System.out.println("ワンワン!"); } } // 実態2:猫 class Cat implements Animal { @Override public void makeSound() { System.out.println("ニャー"); } } // 使い方 public class Main { public static void main(String[] args) { // 同じ型(Animal)で扱えるが、実態は異なる Animal animal1 = new Dog(); Animal animal2 = new Cat(); // 同じメソッド呼び出しで、異なる動作をする animal1.makeSound(); // ワンワン! animal2.makeSound(); // ニャー } } -
カプセル化:
privatepublicpackageなどを使って、フィールドとそれを操作するメソッドをまとめたオブジェクトを作成し、呼び出して使うことができるカプセル化// カプセル化の例:温度計クラス class Thermometer { // private:外部から直接触れない private int temperature; // public:外部から使える操作 public void setTemperature(int temp) { if (temp >= -50 && temp <= 50) { temperature = temp; } else { System.out.println("範囲外です"); } } public int getTemperature() { return temperature; } } // 使い方 public class Main { public static void main(String[] args) { Thermometer thermo = new Thermometer(); thermo.setTemperature(25); // OK System.out.println(thermo.getTemperature()); // 25 thermo.setTemperature(100); // 範囲外です // thermo.temperature = 100; // エラー:直接変更できない } }
特徴4. 静的型付け言語
変数を定義して書いていく言語であることから、後から入ってきた人がプログラムを見たときにどんな型の変数なのかが分かりやすいと言えます。
何年も運用するような規模の大きいシステムでは、静的型付け言語の方がメンテナンスコストは低くなります。
特徴5. Javaは転職しやすい?
ここまでを振り返ると、Javaは規模が大きく、応用が利いていて、歴史も長く情報が多い言語と言えそうです。
また、JavaでWebアプリケーション開発を一通りできるのであれば、オブジェクト指向や静的型付け言語の扱いに慣れているので、他のプログラミング言語の習得も速いと言われています。
ベースラインとしてJavaをしっかり習得しておくことは、メリットとして大きいと言えそうです。