2

プロパティファイルを扱う単純なライブラリを設計しています。

PropertiesJRE 1.5 以降、クラスは次のようなメソッドを定義していることに気付きました。

public synchronized void loadFromXML(InputStream in)
public void storeToXML(OutputStream os, String comment)

これがこのクラスの API の実際の拡張であるという事実に疑問を抱いています。JRE 1.5以降、プロパティファイルはテキストベースのファイルであり、新しく導入されたXML形式は、別の形式を使用する可能性を除いて、機能に何も追加していません.

  1. より冗長
  2. より複雑 (理解する、変更する、解析する)
  3. より非効率的です (dom を内部的に使用して hastable にパースします。より多くのメモリを消費し、実装にヘルパー クラスが必要であり、おそらく速度も遅くなります)
  4. より壊れやすい (xml では文字 <>&"' のエスケープが必要ですが、プロパティでは Java のバックスラッシュのエスケープもサポートされているため、バックスラッシュのみをエスケープする必要があります)
  5. JDK 1.4 を実行しているユーザーは xml プロパティを読み取ることができないため、それを使用するプログラムの下位互換性が失われます。(わかりました、誰が気にします...)

そのため、Sun のエンジニアがこの機能を追加した理由がわかりません。

質問は:

従来のテキスト ベースのプロパティ ファイルよりも XML ベースのプロパティ ファイルを使用する方が有利だと思う人はいますか?

前に引用した単純なライブラリに無駄な機能を追加したくないので、この問題を評価する必要があります。

Java プロパティ ファイルではなく XML ベースのプロパティ ファイルを使用したことがありますか? なぜ?

注:Log4J xmlファイル形式についても同じ質問をすることができますが、少なくともLog4J xml形式はネスト機能と何らかの意味を持つある種の構文を追加し、私はそれを理解しています. しかし、プロパティのこの xml 形式では、そうではありません。

4

3 に答える 3

2

Java 環境にとどまる場合は、Java プロパティ ファイルを使用すると効果的です。他のプログラミング言語がライブラリと対話することを期待している場合でも、おそらく「通常の」プロパティ ファイルで問題ありません。ただし、階層データの場合は XML が標準です。この変更をサポートしたい理由、およびおそらく Sun がそれを含めた理由は、他のプログラミング言語には階層データの XML ファイルを解析するための広範なライブラリがあるためです。

私が答えている理由は、私が実際にこの機能を以前に使用したことがあるからです! しかし、大きな理由ではありません。私が現在取り組んでいるあるプログラムでは、一連のデータをプロパティ オブジェクトに保持するのが最も簡単であることがわかり、後で Python で読み取れるようにオブジェクトを XML に出力しました。現時点では、データは Python スクリプトでさらに操作され、さらに子が XML ファイルに追加されます。XML に簡単に出力できなければ、これは少し面倒です。時間があれば、わざわざ XML に出力するつもりはありません。私が XML を取り込む Python コードを使用している主な理由は、他の誰かが書いたものであり、プログラムのそのセクションを再評価して再コーディングする時間ができるまで一時的に使用しているためです。

XML を使用するのには理由があります。それは良いことではありませんが、理由があります。
ほとんどの言語には堅牢な XML 解析ライブラリがあり、階層データの操作が容易になるため、プロパティを XML として出力することで他の言語との互換性が向上する、このようなケースは他にもあると思います。また、科学的プログラミングでは、1 つの言語に固執するという贅沢はめったに得られないようです。

于 2013-01-23T02:39:41.890 に答える
1

私の知る限り、エンコーディングのために XML 形式が推奨されています: (仕様により) プレーン ファイルの場合は厳密に ASCII ( http://mojo.codehaus.org/native2ascii-maven-plugin/をお勧めします)、UTF-8 (デフォルト) の場合http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Properties.htmlに記載されている XML プロパティ ファイル

編集:ご容赦ください:プロパティプレーンファイルのISO-8859-1

于 2013-01-23T21:48:06.317 に答える
1

いくつかのポイント:

  • 標準のクロスプラットフォーム ツールを使用して作成できます
  • 標準ツールを使用できるため、エスケープや文字エンコーディングの特殊性について心配する必要はありません。これにより、実際にはより堅牢になります。古いプロパティ ファイル形式は、指定が不十分です。
  • 標準のクロスプラットフォーム ツールでデータを使用できます。
  • Java が使用されているほとんどのアプリケーションでは、少しの起動時間は大きな違いにはなりません (特に、システムの残りの起動時間を考えると)。
  • Java SE 1.6 は、その寿命を完全に迎える一戦です。1.5 より前のバージョンは、Java SE (または EE) には特に関係ありません。

いいえ、実際に使用されているのを見たことはありません。

于 2013-01-23T01:05:50.047 に答える