2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

# JavaとPythonの比較ガイド

2
Last updated at Posted at 2025-07-24

JavaとPythonの比較ガイド

以下では、Javaの経験はあるものの、Pythonは最近学習し始めたばかりの私が、
主要な相違点を「文法」「型システム」「オブジェクト指向機能」「例外処理パッケージ管理」「実行環境」の6つの観点で整理し、具体的なソースコード例を交えて備忘録がてら記載します。
初心者なので、間違っている場所があれば、教えて頂ければ幸いです。

1. 文法(Syntax)

Java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
  • 厳密なセミコロン;と波括弧{}が必須
  • クラス定義とファイル名は一致させる必要あり
  • エントリポイントはpublic static void main(String[] args)

Python

def main():
    print("Hello, Python!")

if __name__ == "__main__":
    main()
  • インデント(スペース/タブ)でブロックを表現
  • セミコロンや波括弧不要
  • エントリポイントはif __name__ == "__main__":

2. 型システムと変数宣言

項目 Java Python
型付け 静的型付け(compile-time) 動的型付け(run-time)
変数宣言 明示的に型を指定 宣言時に型指定不要
型安全性 高い(コンパイル時に型チェック) 低い(実行時にエラー発生)

Java の例

int count = 5;          // 変数countはint型、5はint型値(オブジェクトではない)
String message = "Hi";  // 変数messageはString型、"Hi"はString型オブジェクト

Python の例

count = 5        # 変数countには型がない、5はint型オブジェクト
message = "Hi"   # 変数messageには型がない、"Hi"はstr型オブジェクト

3. オブジェクト指向機能

クラス定義とコンストラクタ

Java

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {  // コンストラクタ
        this.name = name;
        this.age = age;
    }

    public void greet() {
        System.out.println("Hi, I'm " + name);
    }
}

Python

class Person:
    def __init__(self, name: str, age: int):  # コンストラクタ
        self.name = name
        self.age = age

    def greet(self) -> None:
        print(f"Hi, I'm {self.name}")

継承と抽象化

機能 Java Python
抽象クラス abstract classキーワード abcモジュールのABC継承+@abstractmethod
インターフェース interface構文 Protocol(typing.Protocol)
多重継承 クラス多重継承不可、インターフェース多重実装OK クラス多重継承OK

Java の抽象クラス例

abstract class Animal {
    abstract void speak();
    void sleep() { System.out.println("Sleeping"); }
}

class Dog extends Animal {
    @Override
    void speak() { System.out.println("Bark"); }
}

Python の抽象クラス例

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def speak(self) -> None:
        pass

    def sleep(self) -> None:
        print("Sleeping")

class Dog(Animal):
    def speak(self) -> None:
        print("Bark")

4. 例外処理(Error Handling)

特徴 Java Python
宣言 throwsまたはtry-catch必須 try-exceptで捕捉
チェック例外/非チェック例外 チェック例外(IOException等)あり すべて非チェック例外

Java

public void readFile() throws IOException {
    BufferedReader br = new BufferedReader(new FileReader("file.txt"));
    try {
        String line = br.readLine();
    } finally {
        br.close();
    }
}

Python

def read_file():
    try:
        with open("file.txt") as f:
            line = f.readline()
    except FileNotFoundError:
        print("ファイルが見つかりません")

5. パッケージ管理と依存性

項目 Java Python
パッケージ管理 Maven, Gradle pip, Poetry
モジュールの構成 packageディレクトリ+pom.xml requirements.txt または pyproject.toml
名前空間 パッケージ名 モジュール名

6. 実行環境と配布

  • Java
    • .java.classコンパイル→JVM上で実行
    • JARファイルで配布
  • Python
    • スクリプトを直接実行(.py)
    • バイナリ化にはPyInstaller等を利用

結論
Javaは「静的型付け」「厳密な構文」「チェック例外」を特徴とし、大規模開発や堅牢性重視に適しています。
Pythonは「動的型付け」「簡潔な文法」「豊富な標準ライブラリ」を持ち、スクリプト、データ分析、機械学習など幅広い分野での迅速な開発に向いています。

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?