ホームページ > Java > &#&チュートリアル > 移行ガイド: Java から JavaScript へ

移行ガイド: Java から JavaScript へ

Linda Hamilton
リリース: 2025-01-22 22:15:15
オリジナル
304 人が閲覧しました

昨年、私は休暇を経て、Java に焦点を当ててプログラミングを再検討しました。 私の目標は Python よりも挑戦的な言語でした。私は 3 ~ 4 か月をかけて、Java の核となる概念、つまり操作の仕組み、オブジェクト指向プログラミング (OOP)、メモリ管理、JDBC を介したデータベース接続を習得することに専念しました。

最近、JavaScript から始めて Web 開発に移行しました。数日間 JavaScript を探索した後、Java と JavaScript の主な違い、およびスムーズな移行がどのように可能であるかについての観察と洞察を共有したいと思っています。


主要な相違点

最も顕著な違いは、データ型の宣言にあります。 Java の静的型付けとは異なり、JavaScript は動的に型付けされます。どちらのアプローチにも長所と短所がありますが、重要な違いに焦点を当てます。JavaScript のシングルスレッドの性質は、Java のマルチスレッド機能とは対照的です。

Java と JavaScript: 簡単な例え

Java を細心の注意を払い、細部にこだわる兵士として想像してください。 指示は正確であり、タスクとその根拠の両方を指定する必要があります。逆に、JavaScript はリラックスした友人に似ています。過剰な詳細を表示することなくタスクを効率的に完了します。タスクを提供するだけで、実行が処理されます。

Transition Guide: From Java to JavaScript

データ型の処理

Java では、変数を定義するときに明示的なデータ型宣言 (例: Stringintfloatboolean) を義務付けています。 ただし、JavaScript は柔軟性があります。変数は let または const (定数の場合) を使用して宣言され、型の決定は実行時に行われます。 var も同様の目的を果たしましたが、現在では letconst が優先されます。

Java の例:

<code class="language-java">class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        int result = a + b;
        System.out.println(result);
    }
}</code>
ログイン後にコピー
ログイン後にコピー

JavaScript の例:

<code class="language-javascript">let a = 5;
let b = 6;

let sum = a + b;

console.log("The sum is: " + sum);</code>
ログイン後にコピー
ログイン後にコピー

Java と JavaScript における OOP の相違

JavaScript の OOP が広く使用されていることを考えると、OOP を理解することは非常に重要です。 JavaScript は動的型付けを超えて、プロトタイプベースであり、プロトタイプを介してプロパティを継承します。 ES6 以降、JavaScript はクラスによる OOP を完全にサポートしていますが、基本的にプロトタイプに依存しています。

次のコード スニペットは、クラスとメソッドの作成における構文の違いを示しています。

Java:

<code class="language-java">class Person {
    String name;

    Person(String name) {
        this.name = name;
    }

    void greet() {
        System.out.println("Hello, " + name);
    }

    public static void main(String[] args) {
        Person person = new Person("John");
        person.greet();
    }
}</code>
ログイン後にコピー
ログイン後にコピー

JavaScript:

<code class="language-javascript">class Person {
    constructor(name) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, ${this.name}`);
    }
}

const person = new Person("John");
person.greet();</code>
ログイン後にコピー
ログイン後にコピー
JavaScript でのオブジェクトの作成

Java では、オブジェクトの作成にはクラス定義が必要です。 JavaScript は柔軟性を提供します。オブジェクトは、明示的なクラス宣言なしで直接作成できます。

Java では、すべてのオブジェクトがクラスのインスタンスであることが要求されます。 JavaScript ではオブジェクトを直接作成できます:

JavaScript

<code class="language-java">class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        int result = a + b;
        System.out.println(result);
    }
}</code>
ログイン後にコピー
ログイン後にコピー

継承メカニズム

継承構文は両方の言語で類似点を示しています。

Java:

<code class="language-javascript">let a = 5;
let b = 6;

let sum = a + b;

console.log("The sum is: " + sum);</code>
ログイン後にコピー
ログイン後にコピー

JavaScript:

<code class="language-java">class Person {
    String name;

    Person(String name) {
        this.name = name;
    }

    void greet() {
        System.out.println("Hello, " + name);
    }

    public static void main(String[] args) {
        Person person = new Person("John");
        person.greet();
    }
}</code>
ログイン後にコピー
ログイン後にコピー

カプセル化に関する考慮事項

JavaScript のカプセル化は Java よりも弱いです。アクセス修飾子 (privateprotectedpublic) がありません。 ただし、ES2022 で導入された # (プライベート フィールド) 表記は、ある程度のプライベート フィールド制御を提供します。

<code class="language-javascript">class Person {
    constructor(name) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, ${this.name}`);
    }
}

const person = new Person("John");
person.greet();</code>
ログイン後にコピー
ログイン後にコピー

ポリモーフィズムの側面

Java は、コンパイル時ポリモーフィズム (メソッドのオーバーロード) と実行時ポリモーフィズム (メソッド オーバーライド) をサポートします。

JavaScript は解釈される性質とコンパイル時のチェックがないため、メソッドのオーバーロードをサポートしていません。 ただし、メソッドのオーバーライドはサポートされています:

<code class="language-javascript">const person = {
    name: "John",
    greet: function() {
        console.log(`Hello, ${this.name}`);
    }
};

person.greet();</code>
ログイン後にコピー

以上が移行ガイド: Java から JavaScript への詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート