TOP
プログラミング独学コンテンツ一覧
現役で求人数No.1プログラミング言語のJavaの基礎知識と文法

現役で求人数No.1プログラミング言語のJavaの基礎知識と文法

最終更新日
新規でプログラミング学習をする人からの人気は低いものの、いまだに転職市場、フリーランスエンジニアの案件市場では莫大な人気を博しているJava。
現実的な感覚をお持ちのエンジニア志望者や現役エンジニアにとっては、必須のスキルと言えます。
そんなJavaの基本知識をざっくり学んで学習をスタートさせたい人向けのコンテンツです。

Javaとはどんな言語か

Javaは、1995年に登場した伝統的なプログラミング言語で、現在でも多くのシステムで使われています。
実質的に日本のシステムで最も使われているプログラミング言語はJavaと言われており、エンジニア転職市場でも求人数がダントツです。
Webだけでなく、ゲームや組み込みシステム、さらにはAndroidアプリなど、その用途は多岐にわたります。
ただし、実装者のスキルによって安全性やパフォーマンスにばらつきが出てしまうこともあるため、Javaを学習するならしっかりと学ぶ意識を持つことが重要になります。
いわゆる「プログラミングの基礎」を学ぶ上でも、Javaの学習は非常に有効です。

Javaで何を作れるか

先述した通り、Javaは幅広いプラットフォームに対応可能です。
ここでいくつかの例を紹介します。「だいたいなんでも作れる」と言われますが、本当にだいたいなんでも作れます。
  • Web開発
    Yahoo!やリクルートのWebサービスで採用されています。Elasticsearchのような検索基盤もJavaで実装されています。
  • 組み込みシステム
    デバイスやハードウェアへ搭載されるシステムにJavaが採用されることも多いです。ブルーレイプレーヤーなどはJavaを使っています。
  • デスクトップアプリ
    どのようなOSにもインストールできることから、デスクトップアプリでも多数採用されています。
  • Androidアプリ
    現在はKotlinを使う例も増えましたが、AndroidアプリはもともとJava開発が主流です。
  • 基幹システム
    信頼性と安全性の高い言語と認識されているため、銀行などの金融機関の基幹システムに多く採用されています。
  • ゲーム開発
    Minecraftが最も有名なJavaで開発されたゲームです。ただし、現在はUnityなどのゲーム開発の統合環境が優勢です。
  • IoTデバイス
    村田製作所のJava導入事例はIoTの先駆けです。昨今ではRustも人気が向上しています。

Javaを利用するメリット

Javaを採用する企業が多いのはなぜでしょうか。
その理由を以下に列挙します。
  1. 言語として利用者が多いため、知見がネット上に多く存在する
  2. OSなどの実行環境に縛られない
  3. 安定性と信頼性を兼ね備えている
  4. セキュリティに強くしやすい
  5. 標準ライブラリが多い
  6. オブジェクト指向が身につく
  7. メモリリークが原則発生しない(ガベージコレクションによるもの)

Javaの難点

利点のみを挙げると、Javaが最高のプログラミング言語だと感じてしまいがちですが、難点もあります。(もちろん人によっては最高だと感じている可能性はあるので、否定もしません)
ここで挙げる点も、実装する人のスキルレベルによるところが大きいため、参考程度にご覧ください。
  1. 学習ハードルがPythonなどのスクリプト言語に比べると高い(特にオブジェクト指向)
  2. 小規模なシステムだと却って手間がかかる
  3. メモリ使用量が多め

Java入門

ここまで基本的なJavaに関する知識を紹介したので、軽く手を動かしながらJavaを知っていきましょう。
紹介するのは基本的な内容となるため、しっかり勉強する際には書籍やオンラインコースなど、まとまった情報から学習することをおすすめします。

Javaコマンド

まずはJavaで使うコマンドを見ていきましょう。
たとえば、以下のようなコードがあるとします。
HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
以下のコマンドでこのプログラムをコンパイル(実行可能な形に変換)できます。

$ javac HelloWorld.java

これでHelloWorld.classというコンパイルされたファイルが作成されます。
そして、このコードを実行するには以下のコマンドです。

$ java HelloWorld

これが最もシンプルなJavaの実行方法です。
もし配布用にjarファイルへ変換したい場合は以下のコマンドです。

$ jar cf HelloWorld.jar HellowWorld.class

基本的な文法

次に基本的な文法を見てみましょう。
以下のコードを見てください。
public class HelloWorld {
    public static void main(String[] args) {
        final String name = "Taro";
        System.out.println("Hello, " + name + "!");

        double height = 1.7;
        double weight = 60.0;
        double bmi = weight / height / height;
        System.out.println("BMI = " + bmi);

        String[] fruits = {"apple", "banana", "orange"};
        System.out.println(fruits[0]);
        System.out.println(fruits[1]);
        System.out.println(fruits[2]);
    }
}
finalは定数宣言、doubleString[]は変数宣言、+は演算子といった具合にJavaの基本文法がいくつか入っています。
public classpublic static voidを見て、それぞれが何を示すかを理解したり、他の型を理解したりと、基本的な文法だけでも多岐に渡ります。

制御構文

次に、基本的な制御構文を見ていきましょう。
以下のコードを見てください。
public class HelloWorld {
    public static void main(String[] args) {
        final String name = "Taro";
        final int age = 20;

        if (age >= 20) {
            System.out.println(name + "は成人です");
        } else {
            System.out.println(name + "は未成年です");
        }

        String[] fruits = {"apple", "banana", "orange"};

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}
ifは条件分岐と呼ばれ、条件に合致するかどうかを判定できます。forは繰り返し処理ができ、配列に含まれる値を繰り返し取り出しています。
こういった要所々々で利用する制御構文を扱いながら、1つのシステムを組み上げていきます。

オブジェクト指向

続いて、オブジェクト指向について少しだけ触れます。
オブジェクト指向プログラミング(OOP)については、理解するためにまとまった資料をもとに行ったほうが良いので、ここではあくまで触りだけです。
次のコードを見てください。
HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name = "Cat";
        System.out.println("Hello " + animal.name + "!");
    }
}
Animal.java
public class Animal {
    public String name;
}
ここでは、HelloWorldクラスでAnimalクラスをnewでインスタンス化して使っています。このように、データとして扱えるオブジェクトを利用する手法をオブジェクト指向プログラミングと呼びます。
一見単純に見えますが、しっくりくるまで時間がかかるためJavaの学習難易度が高いと言われています。

Javaへの理解を深めるために必要な知識

ここまで、基本的なJavaの機能について見てきましたが、まだまだ多くの知るべき機能があります。
フレームワークやライブラリの利用によって、覚えずともなんとなく使える状態になることもできますが、様々なコードを読んで新しい実装方法を覚えることには一種の感動があるのでおすすめです。
  • Listと配列の違い
  • 継承、インターフェース、ラムダ式
  • 修飾子
  • 例外処理
  • 列挙型
  • ジェネリクス
  • アノテーション
  • ラッパークラス
  • コレクションフレームワーク
  • 文字列、数値、時間を操る関数群
  • ストリーム
  • HTTP通信、ソケット通信
  • 正規表現
  • データベース操作
  • マルチスレッディング
  • アプリケーションフレームワーク

Javaでエンジニアの基礎を磨こう

ざっくりとJavaの基礎知識と文法について紹介してきましたが、ここが入口です。
歴史が深い分、学べば学ぶほど味が出るプログラミング言語であるJavaは、必ず学習者にとってプログラミング力を底上げする基礎となります。
最初に学ぶプログラミング言語としても、いくつかプログラミング言語を学んだ後に立ち返る基盤としても、Javaはエンジニアの足元を強く支えてくれる素晴らしい言語です。少しだけ学ぶ過程が退屈に感じるときもありますが、この先に待っている基礎を固めたエンジニアである自分を想像して踏ん張ってみてください。