ホームページ Java &#&ベース Java はコンパイルまたは解釈されますか?

Java はコンパイルまたは解釈されますか?

Jun 06, 2020 pm 02:50 PM
java

Java はコンパイルまたは解釈されますか?

#Java はコンパイルまたは解釈されますか?

Java は、従来のコンパイル言語でもインタプリタ言語でもありません。Java は、まず ".class" バイトコード ファイルにコンパイルされ、次に JVM 仮想マシンによって解釈されて実行されます。したがって、Java は次のように言えます。コンパイルまたは解釈されます。


Java の機能

1. シンプルさ

Java は C に非常によく似ていますが、小さくて馴染みのある言語であるため、設計者は、平均的なプログラマーがめったに使用しない C で利用可能な機能の多くを削除しました。たとえば、Java は go to ステートメントをサポートせず、代わりに Break ステートメントと continue ステートメント、および例外処理を提供します。また、Java では C の演算子のオーバーロード (オーバーロード) や多重継承機能が排除され、メイン ファイルが使用されないため、プリプロセッサが不要になります。 Java には構造がなく、配列と文字列がオブジェクトであるため、ポインタは必要ありません。 Java はオブジェクト参照や間接参照を自動的に処理し、不要なユニットの自動収集を実現するため、ユーザーはストレージ管理の問題を心配する必要がなく、研究開発により多くの時間とエネルギーを費やすことができます。

2. オブジェクト指向

Java はオブジェクト指向言語です。プログラマにとって、これは、厳密に手順の観点から考えるのではなく、アプリケーション内のデータとそのデータを操作する方法に注意を払うことを意味します。オブジェクト指向システムでは、クラスはデータとデータを操作するためのメソッドのコレクションです。データとメソッドは一緒になってオブジェクトの状態と動作を記述します。各オブジェクトは、その状態と動作をカプセル化したものです。クラスは、サブクラスがスーパークラスの動作を継承できるように、特定のシステムおよび階層に配置されます。このクラス階層には、一般的な動作を持つクラスであるルート クラスがあります。 Java プログラムはクラスを使用して編成されます。

Java には、ユーザーが独自のプログラムで使用できるさまざまなパッケージ (パッケージ) を形成するクラスの拡張コレクションも含まれています。たとえば、Java は、グラフィカル ユーザー インターフェイス コンポーネントを生成するクラス (java、awt パッケージ) (awt は抽象ウィンドウ ツールキットの略語です)、入出力を処理するクラス (java、io パッケージ)、およびネットワーク機能をサポートします (Java、net パッケージ)。

3. 配布

Java はネットワーク上のアプリケーションをサポートするように設計された分散言語です。 Java は、さまざまなレベルのネットワーク接続をサポートするだけでなく、Socket クラスによる信頼性の高いストリーム ネットワーク接続もサポートするため、ユーザーは分散クライアントとサーバーを生成できます。

ネットワークはソフトウェア アプリケーションの配布手段になります。 Java プログラムは一度作成するだけで、どこでも実行できます。

4. コンパイルと解釈可能性

Java コンパイラーは、通常のマシンコードの代わりにバイトコード (バイトコード) を生成します。 Java バイトコードは、アーキテクチャに依存しないオブジェクト ファイル形式を提供し、コードはプログラムを複数のプラットフォームに効率的に配信できるように設計されています。 Java プログラムは、Java インタープリタとランタイム システムを実装する任意のシステム上で実行できます。

インタープリタ環境では、プログラム開発の標準的な「リンク」フェーズはほとんどなくなります。 Java にまだリンク段階がある場合、それは単に新しいクラスを環境にロードするプロセスであり、増分的で軽量なプロセスです。したがって、Java はラピッド プロトタイピングと簡単な実験をサポートしており、迅速なプログラム開発につながります。これは、時間のかかる従来の「コンパイル、リンク、テスト」とは対照的な、洗練された開発プロセスです。

5. 堅牢性

Java はもともと家電製品用のソフトウェアを作成するための言語として使用されていたため、信頼性が高く堅牢なソフトウェアを作成できるように設計されています。 Java では特定のプログラミング エラーが排除され、信頼性の高いソフトウェアを非常に簡単に作成できるようになります。

Java は厳密に型指定された言語であり、潜在的な型の不一致の問題についてコンパイル時のチェックを拡張できます。 Java では明示的なメソッド宣言が必要ですが、C スタイルの暗黙的な宣言はサポートされていません。これらの厳格な要件により、コンパイラが呼び出しエラーを確実に捕捉し、その結果、プログラムの信頼性が高まります。

信頼性における最も重要な強化の 1 つは、Java のストレージ モデルです。 Java はポインターをサポートしていないため、ストレージの上書きやデータの破損の可能性が排除されます。同様に、Java の自動「ガベージ コレクション」は、ストレージ リークや、動的なストレージの割り当てと割り当て解除に関連するその他の有害なエラーを防止します。 Java インタープリタは、すべての配列および文字列へのアクセスが範囲内にあるかどうかの確認など、多くの実行時チェックも実行します。

例外処理は、プログラムをより堅牢にする Java のもう 1 つの機能です。例外は、エラーに似た何らかの異常な状態が発生したことを示す信号です。プログラマは、try/catch/finally ステートメントを使用してエラー処理コードを見つけることができ、これによりエラー処理と回復のタスクが簡素化されます。

6. セキュリティ

Java のストレージ割り当てモデルは、悪意のあるコードから防御する主な方法の 1 つです。 Java にはポインターがないため、プログラマが舞台裏に侵入してメモリへのポインターを偽ることはできません。さらに重要なのは、Java コンパイラはストレージ配置の決定を処理しないため、プログラマは宣言を見てクラスの実際のストレージ配置を推測することができません。コンパイルされた Java コード内のストレージ参照により、Java インタープリタによる実行時に実際のストレージ アドレスが決定されます。

Java ランタイムはバイトコード検証プロセスを使用して、ネットワークにロードされたコードが Java 言語の制限に違反していないことを確認します。このセキュリティ メカニズムの一部には、インターネットからクラスをロードする方法が含まれます。たとえば、ロードされたクラスはローカル クラスではなく別の名前空間に配置され、悪意のあるアプレットが標準の Java クラスを独自のバージョンに置き換えることを防ぎます。

7. 移植性

Java は、言語宣言を実装の側面から独立させます。たとえば、Java は、各基本データ型のサイズと操作動作を明示的に示します (これらのデータ型は Java 構文で記述されます)。

Java 環境自体は、新しいハードウェア プラットフォームやオペレーティング システムに移植可能です。 Java コンパイラも Java で書かれていますが、Java ランタイム システムは ASIC 言語で書かれています。

8. 高いパフォーマンス

Java は、最初にコンパイルされてから解釈される言語であるため、完全にコンパイルされた言語ほど高速ではありません。しかし、パフォーマンスが重要な状況もあり、このような状況をサポートするために、Java 設計者は、実行時に Java バイトコードを特定の CPU (中央処理装置) 用のマシンコードに変換する「ジャストインタイム」コンパイラーを作成しました。フルコンパイルを達成することです。

Java バイトコード形式は、これらの「ジャストインタイム」コンパイラーのニーズを念頭に置いて設計されているため、マシンコードを生成するプロセスは非常に単純で、非常に優れたコードが生成されます。

9. マルチスレッド

Java はマルチスレッド言語であり、マルチスレッド実行 (軽量プロセスとも呼ばれる) をサポートし、さまざまなタスクを処理できるため、ヒントを使ってプログラミングを行うことができます。とても簡単です、簡単です。 Java の lang パッケージは、スレッドの開始、スレッドの実行、スレッドの停止、およびスレッドのステータスの確認のためのメソッドをサポートする Thread クラスを提供します。

Java のスレッド サポートには、一連の同期プリミティブも含まれています。これらのプリミティブは、スーパーバイザーと条件変数のスタイルで C.A.R. Haore によって開発され、広く使用されている同期スキームに基づいています。プログラマは、キーワード synchronized を使用して、クラス内の特定のメソッドが同時に実行できないことを示すことができます。これらのメソッドは、変数が一貫した状態に維持されることを保証するための監視手順の制御下にあります。

10. ダイナミクス

Java 言語は、変化する環境に適応するように設計された動的言語です。たとえば、Java のクラスはオンデマンドでロードされ、一部のクラスはネットワーク経由で取得されることもあります。

推奨チュートリアル: 「Java チュートリアル

以上がJava はコンパイルまたは解釈されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

See all articles