シニアJAVAプログラミング:クロスプラットフォーム環境で動作するプログラムは、メモを書いて



"コンパイルは、どこでも実行する"ことをJava言語では、最大の利点を使用してアプリケーションを記述することですが、これはすべてのJavaプログラムでは、クロスプラットフォーム機能されていることを意味しない、実際には、Javaプログラムのかなりの部分は、他のオペレーティングシステムではない正しくは、どのように、真にクロスプラットフォームなJavaプログラムを書くことができますか?以下は、Javaプログラムは、注意すべき点のいくつかのクロスプラットフォームの準備です:

クロスプラットフォームのJavaアプリケーションの調製には、JDK1.0、1.1,1.2を選択するか、などのGUI開発ツールをサポート:JBuilderのは、Visual AgeをJavaなどが、唯一のJavaコアAPIのパッケージを使用することができますあなたのJavaプログラムへの注意を払う必要がありますあなたは、サードパーティのライブラリパッケージを使用する場合、ライブラリは、Javaのコアパッケージによって開発されたパッケージ化する必要があります、またはリリースのための手順では、JVMが発行するJavaクラスライブラリパッケージのサポートを持っている場合。言い換えれば、あなたのプログラムは、純粋なJavaを100%にする必要があります。例として、Visual J + +は純粋なJavaではないのVisual J + +プログラムは、プラットフォームに依存しないで書き込むことはできません。

あなたはすべての警告を開いている必要があります時のオプションをコンパイル時には、JDKまたはその他の開発ツールを使用しているかどうかは、コンパイラは、多くの文は可能な限りプラットフォームは、警告を与えることができます。しかし、警告、エラーは、クロスプラットフォームのプログラムする必要があることを保証するものではありません、コンパイル時間があるが、手順は非常に警告は、非プラットフォームに依存しないことができると間違っている。

文書に見て、いずれかのメソッドを使用してプログラムでは、メソッドは、ドキュメントに記載されているされていない使用することを確認し、旧式のメソッドは、(非推奨メソッド)されているれておらず、それは暗黙的なドキュメントでは、メソッドを(文書化されていないメソッド)を示すものではありませんです。

ないてみてくださいjava.lang.Systemのを使用するには、Javaプログラムのexitメソッドを終了します。別のJavaプログラムを実行された場合、終了の方法は、プログラムを終了するには、JVMを終了するには、我々は見て欲しい明らかにされていない閉鎖されているプログラムを許可し、使用の終了方法。実際にJavaプログラムを終了するには、()destory使用することができますスタンドアロンプロセスを終了します。マルチスレッドプログラムでは、我々はすべての非デーモンスレッドをオフにする必要があります。唯一のプログラムが終了を使用してプログラムを終了させる唯一の方法を終了したとき。

は避けて、対応するJavaクラスを使用して独自の関数を作成する限り、このメソッドをオーバーライドし、ローカルメソッドおよびローカルコードを使用します。あなたは、ネイティブメソッドを使用する必要がある場合、あなたは、サーバープログラムは、メソッドを呼び出して、書き込むことができますし、プログラムは、クライアントプログラムとしてサーバープログラムを記述します、またはCORBA(共通のObject Request Broker)は、プログラムの構造を検討してください。

それ自体は、プラットフォームから独立している方法が、コマンドとコマンドのパラメータへのメソッド呼び出しは、Java、Delphiのような方法winexecでは、java.lang.Runtimeにクラスのexecメソッドは、プラットフォームに関連付けられている我々は、彼らがコマンドとそのパラメータを設定するユーザーをさせる必要があります他のプログラムを呼び出す場合したがって、プログラムの準備で、回避するために。たとえば、プログラムではLinuxでviを呼び出す必要がありますウィンドウプロシージャで、notepad.exeを呼び出すことができます。

すべてのオペレーティングシステムでは、クロスプラットフォーム用のJavaプログラムは、大きな悪いニュースは、中国のソフトウェアの言うことができないUnicode文字セットをサポートするため、コード内のすべての情報をプログラミングするのはASCII文字セットを使用する必要があります。

行区切り文字は、ファイルの区切り文字で、パスの区切り文字などのプラットフォームに関連付けられている任意の定数は、これらの定数は、ハードプログラムでコーディングしないで、ファイルの区切り文字など、さまざまなプラットフォーム上でさまざまなされているUNIXとMACです"/"ウィンドウで"は、ファイルの区切り文字を取得することができます"(でFile.separator")は、これらの定数を使用する場合、あなたはjdava.util.Propertiesにjava.util.Properties.getPropertyなどのクラスgetPropertyメソッドのメソッドが必要"getPropertyメソッドは、("line.separator")行区切り文字をは、getProperty("path.separator")戻り値のパスの区切り文字を返します。

クロスプラットフォームのWebアプリケーションの作成では、のgetAddressは、同じIPアドレス形式を、他のプログラムgetを使用することをお勧めします別のホスト名の形式の異なるプラットフォームのためのホスト名を取得java.net.InetAddressクラスのgethostnameを使用しないすべてのホスト名は、その他必要な対応するIPアドレスを交換するwww.javafan.netように、IPアドレスで置き換える必要があります。

手順は、ファイル操作に関連する注:くださいハード、プログラムファイルのパスにコーディングされていないと8は、同じ理由が、これはこれは別に、特に重要です。また、ファイル名の文字と最大ファイル名の長さの要件については、使用される様々なプラットフォームが異なっていると、時間は、ファイルの一般的な名前としてASCIIコードの文字を使用するようにプログラムを書くために同じ名前が既にプログラムに存在するプラットフォームであることができない場合は、それ以外の場合はwill競合します。

あなたのプログラムは任意のサイズと設定し、サイズと位置を視覚的なコンポーネントの管理、またはJavaのレイアウトマネージャを(レイアウトマネージャ)を使用する必要がコンポーネントの位置を設定することはできませんAWTコンポーネントの使用で書かれたGUIプログラムされている場合レイアウトは混乱を引き起こす可能性があります。

別のオペレーティングシステムでは、別々のマシンのため、システムは、色、画面サイズと解像度はどのようにこれらの属性を取得するために、異なるサポートしていますか?背景色クラスは、ウィンドウフレームのクラスinactiveCaptionイベントタイトルなどjava.awt.Systemcolor色、必要な使用を得ることができる、メニューは、メニューの背景色です。getScreenResolutionは、ディスプレイの画面解像度の単位としてjava.awt.Toolkitの"インチあたりのピクセル数"を使用することができます。GetScreenSizeクラスは、画面のサイズ(インチ)、loadSystemColorsのは、すべてのシステムの色を表示することができます得ることができます。

参考文献から、これらの問題のいくつかは、Javaプログラムを書くことに彼の長年の経験のいくつかは、私はあなたのプログラムの設計に役立つと信じて