ドメイン8の試験です。
70%以上で合格になります。
#1. メアリーは、クライアント側のJavaScriptを修正することにより、ユーザーのクッキーを盗む悪質なコードを作成しています。彼女は、クロスサイトスクリプティングのどの種類の脆弱性を利用していますか?
〇:DOMベース
メアリーは、ドキュメントオブジェクトモデル(DOM)は、ローカルクロスサイトスクリプティングと呼ばれるクロスサイトスクリプティング(XSS)の脆弱性を悪用しています。DOMは、ブラウザでHTMLやXML文書を表現するための標準的な構造のレイアウトです。このような攻撃では、そのようなフォームフィールドやクッキーなどのドキュメントのコンポーネントには、JavaScriptを介して参照することができます。攻撃者は、クライアント側のJavaScriptを変更するには、DOM環境を使用しています。結果として不正なJavaScriptコードを実行するために、被害者のブラウザを引き起こします。これらの攻撃を防ぐために最も効果的な方法は、ブラウザでスクリプトサポートを無効にすることです。
×:二次
二次の脆弱性、または永続的なXSSの脆弱性は、フォーラムやメッセージボードのようにデータベースまたは他の場所に格納されているデータを入力するウェブサイトをターゲットにされているため、正しくありません。
×:永続
永続的なXSSの脆弱性は、単に二次の脆弱性のために別の名前であるため、正しくありません。
×:非永続
反射脆弱性と呼ばれる非永続XSSの脆弱性は、クッキーなどを保持している者から機密情報を盗むために不正なスクリプトを使用してプログラムされたURLを開くようにするもので、正しくありません。この攻撃の背後にある原理は、動的なWebサイト上の適切な入力または出力の検証の欠如にあります。
#2. メンテナンスホックを使用する適切な期間はどれか?
〇:コード開発中のみ。
メンテナンスホックとは、開発者がテスト用に一時的に利用する機能やツールを指します。実際システム開発では、個々の機能が適切に動作しているかを確認するため、補助するツールを用意しています。ただ、メンテナンスホックを本稼働環境に置いておくと攻撃者に利用される可能性があるため、削除が求められます。よって正解は、「コード開発中のみ。」になります。
×:メンテナンスホックは使用してはならない。
メンテナンスホックの利用は作業を効率的に行うことができます。
×:管理者に対して簡易的にソフトウェアを利用させたいとき。
管理者のみが利用できるはずであったツールを攻撃者が悪用するケースもあります。
×:ユーザーに対して簡易的にソフトウェアを利用させたいとき。
実際のリリース後に、メンテナンスホックをユーザー公開することはありません。
#3. バックアップ戦略を確認する最も効果的な手法はどれですか?
〇:復元手順をテストすること。
バックアップから正常にリストアする能力が定期的にテストされなければなりません。よって正解は、「復元手順をテストすること。」になります。
×:すべてのユーザーデータを確実にバックアップすること。
ユーザーデータのコピーを作成することは重要ですが、コピーが復元可能であることが保証されない限り、コピーは無駄です。
×:独自の仕様に合わせたデータベース管理システム(DBMS)のバックアップをすること。
トランザクション・コピーが使用可能であることを保証するためにDBMSの独自の仕様に合わせた手段を使用することは良い考えですが、リストアがテストされない限り、それらのコピーは信頼されません。
×:バックアップのログファイルが完全であることを確認すること。
完了のためのバックアップログを監視することは良好な運用方法ですが、バックアップ自体の定期的なテストやデータ損失からの真の回復能力に代わるものではないため、間違っています。
#4. ロバートは、重複や矛盾を最小限に抑えるためにデータを構造化する手順を実行することによって、販売データベースの全体的な効率を高めるよう求められています。それはどのような手順ですか?
〇:正規化
正規化は、冗長性を排除してデータを効率的に整理し、データ操作中の異常の可能性を減らし、データベース内のデータの一貫性を向上させるプロセスです。データベース構造が望ましくない特性(挿入、更新、および削除の異常)を起こさないように正しく設計され、データの整合性が失われることを確実にする体系的な方法です。
×:ポリモーフィズム
ポリモーフィズムは異なるオブジェクトに同じ入力が与えられ、異なる反応をするため、正しくありません。
×:データベースビューの実装
データベースビューは論理的なアクセス制御であり、あるグループまたは特定のユーザーが特定の情報を参照できるように実装されており、別のグループが完全に表示されないように制限されているものであり、正しくありません。 たとえば、企業全体の利益を見ることなく、ミドル・マネジメントが部門の利益と経費を見られるように、データベース・ビューを実装することができます。 データベースビューは重複データを最小化しません。 むしろ、特定のユーザー/グループによってデータがどのように表示されるかを操作します。
×:スキーマの構築
データベースシステムのスキーマは形式的な言語で記述された構造であるため、正しくありません。 リレーショナルデータベースでは、スキーマはテーブル、フィールド、リレーションシップ、ビュー、インデックス、プロシージャ、キュー、データベースリンク、ディレクトリなどを定義します。 スキーマはデータベースとその構造を記述しますが、そのデータベース自体に存在するデータは記述しません。
#5. フリーウェアとシェアウェアの違いは何ですか?
#6. ソフトウェア機能成熟度モデルにおいて、「一定の結果をもたらす再現可能プロセス」を提供するのはどのレベルですか?
ソフトウェア機能成熟度モデルのレベル2は、再現性を持ちます。一部のプロセスが再現可能であり、一定結果が得られる成熟度のレベルです。プロセスの規律が厳密ではないですが、既存のプロセスを維持するのに役立ちます。よって正解は、「レベル2」になります。
レベル1では、通常文書化されておらず、動的に変化している状態です。ユーザーやイベントによって、その場しのぎで、制御されていない、反応的な方法で動かされる傾向があります。そのため、プロセスは混沌とした不安定な状態にあります。
レベル2では、成熟度ではいくつかのプロセスが反復可能であり、一貫した結果が得られるでしょう。プロセスの規律が厳格になることはありませんが、存在する場合には既存のプロセスが維持されることを保証するのに役立ちます。
レベル3では、文書化された一連の標準プロセスが確立されており、時間をかけてある程度改善されています。
レベル4では、目標達成のためにプロセスの評価が行われています。プロセスの利用者は、複数の様々な条件でプロセスを経験し、能力を実証することができます。
レベル5では、漸進的かつ革新的な技術的変更/改善により、プロセス性能を継続的に改善することに重点を置いています。
#7. プログラマが注意するべきいくつかの攻撃があります。攻撃者が任意のコードを実行しようとするとき、どのような攻撃を仕掛けていると考えられるでしょうか?
〇:バッファオーバーフロー
バッファは、ユーザー入力などを格納するために確保されるアプリケーションの予約領域です。アプリケーションが入力を受信した後、命令ポインタはバッファに入れられます。誤った入力により、コード内の命令ポインタを上書きし、バッファ領域に書き込むことを可能にする際にバッファオーバーフローが発生します。命令ポインタが上書きされると、アプリケーションのセキュリティコンテキストの下で実行されてしまいます。
×:トラフィック分析
トラフィック分析は、ネットワーク上のトラフィックパターンを見て情報を明らかにする方法であるため、正しくありません。
×:レース条件
競合状態では任意のコードを実行することにはできないため、間違っています。2つの異なるプロセスがリソースにそれらのタスクを実行する必要がある場合、それらは正しい順序で処理することを必要とします。
×:隠密ストレージ
隠密ストレージチャネルにおいて、プロセスはシステム上のストレージスペースのいくつかのタイプを介して通信することが可能であるため、正しくありません。
#8. 第3世代のプログラミング言語に関連した長所と短所の正しい説明は、次のうちどれですか?
〇:構造的な言語で使用され、開発時間が減少しますが、ややリソースが集約的になります。
第3世代のプログラミング言語は、以前の言語に比べて扱いやすいです。これは、プログラム開発時間を短縮し、簡略化されかつ迅速なデバッグが可能になります。しかし、第2世代プログラミング言語と比較した場合これらの言語は、リソースが集約されます。よって正解は、「構造的な言語で使用され、開発時間が減少しますが、ややリソースが集約的になります。」になります。
実際の試験で今回のような”丁寧な”日本で出題されるかは不明です。直感的=ヒューリスティック、構造的な言語=アークテスト言語など、日本語で受けられる際には直訳に近い形での出題もされる可能性もあります。
×:直感的な操作によるプログラミングで労力を低減しますが、特定のタスクのための手動のコーディングの量は前の世代よりも大きくなる傾向があります。
第4世代プログラミングの長所と短所を説明になります。第4世代のプログラミング言語でのヒューリスティックな使用が大幅にプログラミングの労力と、コード内のエラーを減少させたことは事実です。ただし、手動コーディングの量は、第3世代言語の必要とされるよりもあることは事実とは言い切れないところがあります。
×:バイナリをコーディングに使用することで非常に時間がかかりますが、潜在的なエラーが少なくなっています。
機械語の説明であり、第1世代のプログラミング言語の長所と短所を暗示ため、正しくありません。
×:プログラミング処理時間を減少させることに貢献しますが、マシン構造に関する知識は必須である。
第2世代のプログラミング言語を記述しているので正しくありません。これらの言語はマシンアーキテクチャの豊富な知識を必要とし、その中に書かれたプログラムは、特定のハードウェアのみになります。
#9. さまざまな顧客向けにモバイルデバイスアプリを開発するための新しいソフトウェア開発会社が立ち上げられました。 同社には才能のあるソフトウェアプログラマーが雇用されていますが、時間の経過とともに改善できる標準化された開発プロセスを実装することはできませんでした。 次のうち、ソフトウェア開発プロセスを改善するためにこの会社が取る最良のアプローチはどれですか?
〇:能力成熟度モデルの統合
能力開発成熟度モデル統合(CMMI)は、製品とソフトウェアを開発するための包括的な統合ガイドラインです。 コンセプト定義、要件分析、設計、開発、統合、インストール、運用、保守、各段階で何が起こるべきかなどソフトウェア開発ライフサイクルのさまざまなフェーズに対応しています。 このモデルでは、ソフトウェア開発プロセスの成熟の基礎となる手順、原則、実践について説明します。ソフトウェアベンダーが開発プロセスを改善するのを支援するために開発されたものです。ソフトウェアの品質を向上させ、開発のライフサイクルを短縮し、マイルストーンを作成して適時に満たすことができ、効果の低い反応的アプローチよりも積極的なアプローチを採用できるでしょう。よって正解は、「能力成熟度モデルの統合」になります。
×:ソフトウェア開発ライフサイクル
ソフトウェア開発ライフサイクル(SDLC)が、ライフサイクルを通してシステムをどのように開発し維持するべきかを記述し、プロセスの改善を伴わないため正しくありません。
×:ISO/IEC 27002
ISO/IEC 27002が国際標準化機構(ISO)および国際電気標準会議(IEC)が組織情報セキュリティ管理システム(ISMS)を作成および維持する方法を概説する国際標準であるため誤りです。 ISO/IEC 27002には、情報システムの取得、開発、保守を扱うセクションがありますが、ソフトウェア開発のプロセス改善モデルは提供していません。
×:認定および認定プロセス
認証および認定(C&A)プロセスが事前定義された基準に対するシステムのテストおよび評価を処理するため、正しくありません。これは、ソフトウェア開発プロセスの改善とは関係ありません。
#10. 次のうちディレクトリサービスを正しく記述していないものはどれですか?
〇:X.509標準に準拠し、LDAPによってデータベース内のアクセスされる各オブジェクトに名前空間を割り当てます。
ほとんどの企業には、会社のネットワークリソースやユーザーに関する情報が含まれるディレクトリがあります。 ほとんどのディレクトリは、X.500標準(X.509は公開鍵基盤の規格)に基づく階層データベース形式と、LDAP(Lightweight Directory Access Protocol)のようなプロトコルの一種で、サブジェクトとアプリケーションがディレクトリとやりとりすることを可能にします。 アプリケーションは、ディレクトリへのLDAP要求を行うことによって、特定のユーザーに関する情報を要求することができ、ユーザーは同様の要求を使用して特定のリソースに関する情報を要求できます。 ディレクトリサービスは、アクセスされるX.500標準に基づくデータベース内の各オブジェクトに識別名(DN)を割り当てます。各識別名は、特定のオブジェクトに関する属性の集合を表し、ディレクトリにエントリとして格納されます。
×:名前空間を使用してディレクトリ内のオブジェクトを管理します。
階層型データベース内のオブジェクトはディレクトリサービスによって管理されます。 ディレクトリサービスを使用すると、管理者は識別、認証、許可、およびアクセス制御をネットワークの設定および管理ができます。ディレクトリ内のオブジェクトは、ディレクトリサービスがオブジェクトを整理した状態に保つ方法であり、名前空間でラベル付けされ識別されます。
×:アクセス制御とアイデンティティ管理機能を実行することにより、セキュリティポリシーを実施する。
ディレクトリサービスはアクセス制御とID管理機能を実行することで設定されたセキュリティポリシーを実施します。たとえば、ユーザーがWindows環境のドメインコントローラにログインすると、ディレクトリサービス(Active Directory)はアクセス可能なネットワークリソースとアクセスできないネットワークリソースを決定します。
×:管理者は、ネットワーク内で識別がどのように行われるかを構成および管理できます。
ディレクトリサービスは、管理者がネットワーク内での識別の設定および管理を可能にします。 また、認証、認可、およびアクセス制御の構成と管理も可能です。
#11. Webサーバーへのインジェクション攻撃を軽減したいと考えています。どんな助言をすべきですか?
#12. クロスサイトトレーシングを防御する方法はどれでしょうか。
#13. データベースソフトウェアは、ACIDテストと呼ばれる要件を満たす必要があります。 OLTPにおいて、ACIDテストの要件の1つであるトランザクションの原子性をデータベースソフトウェアが実行するのはなぜですか?
〇:データベースが中断することなく単一のユニットとしてトランザクションを実行するようにするため。
オンライントランザクション処理(OLTP)は、データベースをクラスタ化して高いフォールトトレランスとパフォーマンスを提供する場合に使用されます。 問題が発生したときに問題を監視し、対処する仕組みを提供します。 たとえば、プロセスが機能しなくなった場合、OLTP内の監視機能が検出してプロセスを再起動しようとします。プロセスを再起動できない場合、発生したトランザクションはロールバックされ、データが破損していないこと、またはトランザクションの一部のみが発生していることを確認します。OLTPは、トランザクションが(リアルタイムで)発生したときに記録されています。通常は分散環境内の複数のデータベースを更新します。
このようにトランザクション処理がどこまで適当によりされているかでの区分は非常に複雑です。そのため、データベースソフトウェアはACID特性を実装する必要があります。その中でも、原子性・不可分性(atomicity)とは、全て実行されるか、全く実行されないかにしておくことです。トランザクションは完全に実行されるか、まったく実行されないかのどちらかでなければならないという性質です。よって正解は、「データベースが中断することなく単一のユニットとしてトランザクションを実行するようにするため。」になります。
このような問題が不正解であったときに、OLTPを知らなかったから解けなかったと判断することは今後の勉強法に支障をきたすでしょう。問題文はややこしい言い方をしていますが、実際の問題を解くのにOLTPの定義を記憶するよりも、ACIDにおける原子性とは何を理解していることが重要なポイントとなっています。
×:データベースの一貫性のルールを確立できるようにするため。
データベースのセキュリティポリシーに示されている一貫性ルールを強制しますが、トランザクションの原子性を意味するものではありません。
×:ロールバックが発生しないようにするため。
トランザクションの原子性は、ロールバックを抑制することについて言及していません。
×:並行プロセスが互いに相互作用するのを防ぐため。
独立性・分離性・隔離性に当たります。独立性・分離性・隔離性(isolation)とは、処理中は他の操作からは隠蔽されることです。トランザクションを複数同時に実行しても、単独実行の場合と同じ処理結果にならなければないという性質です。
#14. どのタイプのデータベース性質が、タプルがプライマリキー値によって一意に識別されることを保証しますか?
〇:エンティティの完全性
エンティティの完全性は、タプルが主キー値によって一意に識別されることを保証する。 タプルは、2次元データベースの行です。 主キーは、各行を一意にする対応する列の値です。 エンティティの整合性のために、すべてのタプルには1つの主キーが含まれていなければなりません。 タプルにプライマリキーがない場合、タプルはデータベースによって参照されません。
×:並行保全性
並行保全性は、データベースソフトウェアの正式な用語ではないため、正しくありません。整合性サービスには、セマンティック、参照、エンティティの3つの主要なタイプがあります。 並行処理とは、複数のユーザーやアプリケーションが同時にアクセスするソフトウェアのことです。 コントロールが配置されていないと、2人のユーザーが同じデータに同時にアクセスして変更することができます。
×:参照整合性
参照整合性は、既存の主キーを参照するすべての外部キーを参照するため、正しくありません。 存在しないレコードまたはNull値の主キーへの参照が外部キーに含まれないことを保証するメカニズムが存在する必要があります。 異なるテーブル間の関係が正常に動作し、適切にアクセスできるようになります。
×:意味的完全性
意味的完全性は、データベースの構造的および意味的規則が確実に行われるものです。データ型、論理値、一意性制約、およびデータベースの構造に悪影響を及ぼす可能性のある操作に関係します。
#15. コンピュータプログラミングでは、結合度と凝縮度が使用されます。 次の中で結合度と凝縮度の好ましい組み合わせはどれですか?
モジュールが低い結合度と高い凝縮度を有することは、良いことです。凝縮度が高いほど、更新や変更が容易になり、相互作用する他のモジュールには影響しません。 これはまた、モジュールの再利用と保守が容易であることを意味します。結合度は、1つのモジュールがそのタスクを実行するために必要な相互作用の量を示す測定値です。モジュールの結合度が低い場合は、モジュールが他の多くのモジュールと通信してジョブを実行する必要がないことを意味します。他の多くのモジュールに依存してタスクを実行するモジュールよりも理解しやすく、再利用も容易です。 また、これらのモジュールの周りの多くのモジュールに影響を与えることなく、モジュールを変更する方が容易になっていくでしょう。よって正解は、「低結合度、高凝集度」になります。
#16. 上流工程から下流工程へ作業が流していき、原則前のフェーズに戻ることができないプロジェクト管理方法論はどれですか?
〇:ウォーターフォール
ウォーターフォールとは、一方向的で各フェーズは次のフェーズに直接つながります。純粋なウォーターフォールモデルでは、前のフェーズに戻ることはできません。よって正解は、「ウォーターフォール」になります。
×:アジャイル
アジャイルとは、システム開発は柔軟にやった方が良いという考え方です。適応計画、進化的開発、早期提供、継続的改善に重きを置き、トライアルアンドエラーな開発手法です。アジャイルは従来のプロセスをモデル化する考え方とは異なり、主義や主張をチーム全体で共有し、あらゆる状況にも対応する試みです。
×:サシミ
SASHIMIモデルとは、各フェーズの終点と始点の並行稼働を許したシステム開発プロセスのモデルです。多くの場合、成果物の提出・レビューをもって次のフェーズに移行するウォーターフォールモデルが利用されます。ただ実際には、引き渡し後に要件が変わったことで修正する場合もあります。
×:スパイラル
スパイラルモデルとは、各機能ごとに設計からテストを繰り返して開発していく手法です。計画・分析・設計・実装・試験・評価から成る一連のプロセスを一つのプロジェクト内で何度も繰り返し、次第に完成度を高めていく方式です。ソフトウェアプロジェクトでは、これらのフェーズを繰り返します。
#17. リサは、ほとんどのデータベースが同時実行制御を実装していることを学びました。 並行性とは何ですか?また、なぜそれを制御する必要がありますか?
〇:同時に実行されているプロセス。適切に制御されていないとデータベースの整合性に悪影響を与える可能性がある。
データベースは、多くの異なるアプリケーションによって同時に使用され、多くのユーザーが一度にそれらとやり取りします。同時実行性とは、異なるプロセス(アプリケーションおよびユーザー)が同時にデータベースにアクセスしていることを意味します。これが適切に制御されないと、プロセスは互いのデータを上書きしたり、デッドロック状況を引き起こしたりする可能性があります。並行処理の問題の最悪の結果は、データベース内に保持されているデータの整合性の低下です。データベースの整合性は、並行性保護メカニズムによって提供されます。同時実行制御は一つは、ロックです。ユーザーが他のユーザーによって使用されているデータにアクセスしたり変更したりすることはできません。
×:異なるレベルで実行されているプロセス。適切に制御されていないとデータベースの整合性に悪影響を与える可能性がある。
並行処理は異なるレベルではなく、同時に実行されているプロセスを参照するため、正しくありません。 並行処理の問題は、異なるユーザーやアプリケーションによって同時にデータベースにアクセスできる場合に発生します。 コントロールが適切に配置されていないと、2人のユーザーが同じデータに同時にアクセスして変更することができ、動的環境に有害になる可能性があります。
×:アクセス可能なデータのレビューから新しい情報を推測するプロセス。推論攻撃が発生する可能性がある。
アクセス可能なデータをレビューすることから新しい情報を推測する能力は、より低いセキュリティレベルのユーザーが、より高いレベルのデータを間接的に推論する場合に生じます。これは、推論攻撃につながる可能性がありますが、並行性には関係しません。
×:データベース内の複数の場所にデータを格納するプロセス。正しく制御されていないとデータベースの整合性に悪影響を与える可能性がある。
複数の場所にデータを格納することは並行性に問題がないため、正しくありません。2人のユーザーまたはアプリケーションが同じデータを同時に修正しようとしているとき、並行性は問題になります。
#18. 攻撃者が知らないURLを論理的に推測できる場合、それはどのような危険性がありますか?
#19. フランクは、同社のオンラインアプリケーション、Webサーバー、およびWebベースの活動のセキュリティを担当しています。ウェブアプリケーションは、複数のユーザーが同時にウェブページを編集したり、お互いの仕事を上書きしたりすることができないように、動的に「ロック」される能力を有しています。監査では、このソフトウェアロック機能が適切に構成されていても、複数のユーザーが同じWebページを同時に変更できることが明らかになりました。この事情を最もよく表しているのはどれでしょうか。
〇:TOC/TOU
特定の攻撃は、システムが要求を処理してタスクを実行する方法を利用できます。 TOC/TOU攻撃は、システムがタスクを完了するために使用する一連のステップを処理します。 このタイプの攻撃は、マルチタスキングオペレーティングシステムで発生するイベントが個々のタイミングに依存することを利用します。TOC/TOUは、条件のチェックとその条件チェック機能からの結果の使用を可能にするソフトウェア脆弱性です。 この質問では、Webアプリケーションが正しく構成されている可能性が高いという事実は、このアプリケーションのプログラミングコードがこの種の脆弱性をコード自体に埋め込んでしまっていることを示しています。
×:バッファオーバーフロー
過剰に大きなのデータが特定のプロセスへの入力として受け入れられると、バッファオーバーフローが発生します。問題文の事象とは一致しないため、間違っています。 バッファはメモリの割り当てられたセグメントです。 バッファは大きなデータ入力でオーバーフローする可能性がありますが、攻撃者に使用されるためにはバッファに挿入されるコードが特定の長さでなければならず、攻撃者が実行するコマンドも必要です。
×:ブラインドSQLインジェクション
ブラインドSQLインジェクション攻撃は、真実か偽の質問をデータベースに送信するSQLインジェクション攻撃の一種であるため、間違っています。 基本的なSQLインジェクションでは、攻撃者はSQL形式の特定の命令を送信して、関連付けられたデータベースに問い合わせます。 ブラインドSQLインジェクション攻撃では、攻撃者はデータベースの応答を分析して機密情報を収集するために、一連の真偽の質問をデータベースに送信します。
×:クロスサイトリクエストフォージェリ(CSRF)
クロスサイトリクエストフォージェリ(CSRF)は、悪意のある要求や操作を含むWebページを読み込むように犠牲者を騙そうとする攻撃タイプであるため、正しくありません。攻撃操作は、被害者のアクセス権のコンテキスト内で実行されます。 要求は被害者の身元を継承し、被害者のために望ましくない機能を実行します。 このタイプの攻撃では、攻撃者はシステムにアカウント情報の変更、アカウントデータの取得、またはログアウトなどの意図しない動作を実行させることができます。 このタイプの攻撃は質問に記載されているシナリオに関係する可能性がありますが、ユーザーがWebアプリケーションに組み込まれているロックメカニズムをどのようにバイパスできるかに焦点を当てています。
#20. Javaアプレットの実行におけるJava仮想マシンの役割について、最も適切に説明している選択肢はどれでしょうか?
〇:バイトコードをマシンレベルのコードに変換します。
Javaは、オブジェクト指向のプラットフォームに依存しないプログラミング言語です。 Javaは、プロセッサ固有のバイトコードではない中間コードを作成するため、プラットフォームに依存しません。Java仮想マシン(JVM)はバイトコードを、特定のシステム上のプロセッサが理解できるマシンレベルのコードに変換します。
×:ソースコードをバイトコードに変換し、サンドボックスをブロックします。
Java仮想マシンがバイトコードをマシンレベルのコードに変換します。 ソースコードをバイトコードに変換するのではなく、Javaコンパイラが行います。 JVMは、サンドボックスと呼ばれる環境内に仮想マシンも作成します。 この仮想マシンは、アプレットがアクティビティを実行する囲まれた環境です。 アプレットは通常、要求されたWebページ内でHTTP経由で送信され、アプレットが到着するとすぐに実行されます。アプレットの開発者が正しく機能しなかった場合、意図的にまたは誤って悪意ある行為を実行する可能性があります。したがって、サンドボックスはアプレットのシステムリソースへのアクセスを厳密に制限します。 JVMはシステムリソースへのアクセスを仲介して、アプレットコードが独自のサンドボックス内で動作し、確実に動作するようにします。
×:特定のオペレーティングシステム内の特定のプロセッサでのみ動作します。
Javaはオブジェクト指向のプラットフォームに依存しないプログラミング言語です。 他の言語は、特定のオペレーティングシステムおよびプロセッサ用のオブジェクトコードにコンパイルされるため、特定のアプリケーションはWindowsでは実行できますが、Mac OSでは実行できません。Intelプロセッサは、Alphaプロセッサ用にコンパイルされたマシンコードを必ずしも理解するとは限りません。Javaは中間コード・バイトコードを作成するため、プラットフォームに依存しません。
×:ユーザーのブラウザで動作するアプレットを開発する。
Java仮想マシンはアプレットを作成しないため、正しくありません。 Javaは、本格的なプログラミング言語として採用され、ユーザーのブラウザで動作するアプレットと呼ばれる完全なプログラムと短いプログラムを記述するために使用されます。 プログラマはJavaアプレットを作成し、コンパイラを介して実行します。 Javaコンパイラは、ソースコードをバイトコードに変換します。 その後、ユーザーはJavaアプレットをダウンロードします。 バイトコードは、JVMによってマシンレベルのコードに変換されます。 最後に、呼び出されるとアプレットが実行されます。