これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド japicompat です。
プログラム:
NAME
japicompat - Java API のバイナリの下位互換性をテストします。
SYNOPSIS
ジャピコンパット [-svqhtjw4] [-または アウトファイル] [-私 ファイルを無視する]
DESCRIPTION
ジャピコンパット はjapitoolsの一部であり、JavaAPI間の互換性をテストするために設計されています。
これらは元々、Java 自体の無料実装をテストするために設計されました。
Sun の JDK との互換性がありますが、下位互換性のテストにも使用できます。
あらゆる API のバージョン間で。
ツールはjapizeとjapicompatです。 Japize は、次のリストを出力する Java プログラムです。
機械可読形式の API。 Japicompat は、そのような XNUMX つのリストを取得して比較します。
これらは、Java 言語仕様で Sun によって定義されているバイナリ互換性のために使用されます。
OPTIONS
-s 追加のバイナリ互換性チェックを無効にします (JLS によって定義されたチェックのみを実行します)。
-v 軽微な互換性問題のチェックを有効にします。
SerialVersionUID チェック: シリアル化可能なクラスが存在する場合、japicompat はマイナー エラーを報告します。
XNUMX つのリリース間で SerialVersionUID が異なります。
非推奨チェック: クラスまたはメンバーが非推奨の場合、japicompat は軽度のエラーを報告します。
元の API では非推奨ですが、チェックされている API では非推奨ではありません。
-q 進捗レポートを無効にします。
-h HTML 形式で出力を生成します。 生成されるHTMLファイルはjapi.cssに依存します。
ファイルを使用して魅力的なプレゼンテーションを実現します。
-t テキスト形式で出力を生成します。 これがデフォルトです。
-j 生の機械可読形式で出力を生成します。 生成されるフォーマットは次のように呼ばれます
「japio」形式であり、慣例により「.japio」ファイル拡張子を付けて保存する必要があります。
スタンドアロンの japiotext および japiohtml ユーティリティを使用して、この形式を変換できます。
HTML またはテキストに変換します (実際には、japicompat は、次の場合に内部的に japiotext または japiohtml を呼び出します)
-h または -t フラグが使用されます)。 Japio ファイルは、-i フラグと一緒に使用することもできます。
JDK バージョン間の非互換性によって引き起こされるエラーの無視をサポートします。
-w 古いバグのある japi ファイルに対して実行する場合の警告を無効にします。 デフォルトではjapicompat
古いバージョンで生成された japi ファイルに対して実行すると、警告が生成されます。
japifix では除去できない既知のバグがある japitools のバージョン。
-4 1.4互換モードを使用してください。 これは、比較する API に次のものが含まれない限り機能します。
1.5限定アイテム。
-o
出力を次の宛先に送信します標準出力の代わりに。 このファイルの形式は次のものに依存します。
-h、-t、および -j フラグ。
-i
Java API を実装しようとしているとします。 あなたは(かなり)持っています
初期の JDK バージョン (1.0 および 1.1) は完全にカバーされていますが、まだ一部がカバーされています。
1.4 の完全なカバレッジを達成するための距離 (これはすべてのカバレッジの正確な説明です)
執筆時点ではフリー ソフトウェア Java 実装)。 japicompat を使用して、
実装を JDK 1.4 と比較すると正確な結果が得られますが、
以前のバージョンの範囲を示したいと考えています。
残念ながら、Sun は JDK 間の独自のバイナリ互換性ルールに従っていません。
japicompat がテストする拡張ルールは言うまでもありません。 したがって、を実行すると、
JDK 1.1 と実装を比較すると、偽のエラーが発生します
1.4 と互換性があるが 1.1 とは互換性がない場合にレポートします。
明らかに、あなたが本当に望んでいるのは、このようなエラーを無視することです。
その方法を提供します。 まず、-j オプションを使用して 1.1 と 1.4 の比較を実行します。
スイッチ。 次に、1.1 と実装の間の比較を実行し、
「-i」オプションは、前回の実行の出力を指定します。 例えば:
$ japicompat -joignore-11-14.japio jdk11.japi.gz jdk14.japi.gz
$ japicompat -ho jdk11-myimpl.html -iignore-11-14.japio jdk11.japi.gz
myimpl.japi.gz
次のコマンドを実行しても同じ効果が得られます。
$ japicompat -ho jdk11-myimpl.html -i jdk14.japi.gz jdk11.japi.gz myimpl.japi.gz
これは明らかに単純で入力が早いですが、次のことを比較する必要があります。
jdk11 と jdk14 は毎回実行されます。 japio ファイルを手動で作成すると、
保存して次回再度使用できるようにするため、japicompat を実行できるようになります。
XNUMX倍の速さで。
比較する API に対応する japi ファイル。
japicompat は、XNUMX 番目の引数に下位互換性があるかどうかを具体的にテストします。
最初のものと。 したがって、JDK 1.1 を完全に実装しても、何も生成されません。
引数の順序に関係なくエラーが発生しますが、完璧な実装です。
JDK1.1 と JDK1.2 の一部は次のようにテストする必要があります。
$ japicompat jdk11.japi.gz myimpl.japi.gz
$ japicompat myimpl.japi.gz jdk12.japi.gz
これらのテストの両方に合格する実装を作成することはおそらく不可能です。
Sun 独自の JDK1.2 は、JDK1.1 に対してテストすると多数のエラーを生成するためです。 を参照してください。
この状況に対処する方法については、上記の -i オプションを参照してください。
圧縮 (.japi.gz) または非圧縮 (.japi) ファイルのいずれかを渡すことができます。
japicompat: ファイル拡張子は、入力をパイプするかどうかを決定するために使用されます。
gzip を介するかどうか。
onworks.net サービスを使用してオンラインで japicompat を使用する