問題タブ [backwards-compatibility]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 6 ソースの下位互換性と SQL
私の理解では、ソース互換性を維持するために、Java はパブリック インターフェイスに新しいメソッドを導入することはありません。インターフェイスを実装している既存のクライアントが機能しなくなるためです。 Java リリース ノートの状態
一般に、ポリシーは次のとおりです。ただし、以下にさらにリストされている非互換性を除きます。
メンテナンス リリース (1.4.1、1.4.2 など) では、新しい言語機能や API は導入されません。それらは相互にソース互換性を維持します。
機能リリースとメジャー リリース (1.3.0、1.4.0、5.0 など) は上位のソース互換性を維持しますが、下位のソース互換性は維持しません。
それでも、パッケージは進化java.sql
しjavax.sql
続け、多くの互換性のない変更が導入されています。たとえば、次の互換性のない変更に気付きました (Java 6 で導入)。
java.sql.Statement
extendsjava.sql.Wrapper
、新しい 2 つの新しいメソッドが必要です。java.sql.Statement
3つの新しいメソッドを導入java.sql.PreparedStatement
19の新しいメソッドを紹介!java.sql.ResultSet
48の新しいメソッドを紹介!
これらのメソッドが追加された方法と理由を知っていますか? java.sql
他のプラットフォームとは異なる扱いを受けていますか? これらの追加に関する議論/JSR を知っていますか?
iphone - iPhone OS 2.2.1 との後方互換性を維持
現在、App Store にバージョン 2.2.1 でビルドされたアプリがあります。つまり、ベース SDK と展開ターゲットの両方が 2.2.1 に設定されています。そのアプリは正常に動作します。それ以来、XCode のバージョンを 3.1.3 にアップグレードし、ベース SDK を 3.0 に設定し、展開ターゲットを 2.2.1 に設定して、アプリの更新に取り組んでいます。これは、OS 3.0 を実行しているテスト用の iPhone デバイスで正常に動作します。問題は、2.2.1 でテストするデバイスがないため、シミュレーターを使用し、現在のビルドでは特定の UI 要素 (主に画像) が表示されないことです。奇妙な点は、シミュレーターで現在のバージョンの XCode を使用して App Store に既にある古いバージョンのアプリをテストすると、同じように UI が消えるという問題が発生することです。同じビルドで異なる結果が得られるのはなぜですか? XCode で何か変更がありましたか? 何'
ありがとう!
mysql - MySQL Connector/Net は下位互換性がありますか?
MySQL サーバー 5.1 を使用している場合、バージョン 5.1 以降のすべてのコネクタを使用できますか?:
- コネクタ/ネット 6.1
- コネクタ/ネット 6.0
- コネクタ/ネット 5.2
- コネクタ/ネット 5.1
http://dev.mysql.com/downloads/connector/net/をクリックすると、デフォルトで 6.0...
internet-explorer-8 - IE8 互換モードの検出
重複の可能性:
IE7 ブラウザーと IE7 互換モードのブラウザーを区別する
かなり大規模なシステムで IE8 を完全にテストする時間はありませんでした。IE8の使用も禁止できないところまで来ています。私たちのユーザーは頑固で、それほど洗練されていないので、「互換モード」ボタンを使用するように指示できるとは思いません。代わりに、一時的な修正として「IE=EmulateIE7」メタ タグを追加します。
問題は、このタグが使用されている場合でも、ブラウザーは自分自身を IE8 として報告し、それがページによって検出されて拒否されることです。サーバー側の検出がメタ タグを検出できない理由は理解できますが (サーバーには、メタ タグが送信されて処理される前に既にユーザー エージェントが存在します)、クライアント側のチェックも失敗します。クライアント マシンで互換モード ボタンがクリックされた場合、ユーザー エージェントは IE7 ですが、メタ タグを使用している場合はそうではありません。
これは、とりわけ、チェックを無効にする必要があることを意味します。その後、どこかで間違いを犯してメタ タグをページに追加するのを忘れると、ページが壊れてしまいます。
他の誰かがこれに遭遇し、より良いアプローチを考え出しましたか? モードが meta タグによって設定されている場合、IE8 が互換モードで実行されていることを検出する方法はありませんか?
そして、すべてのページを IE8 標準モードと互換性を持たせるべきであるという有効な考え方があることは知っていますが、現実の片隅では、それは現時点で実行可能なオプションではありません (指摘しますが、非標準的な方法で書かなければならない 4 つまたは 5 つのバージョンの IE を作成しませんでした)。
python - hashlib/md5。Python2.4との互換性
python 2.6は、md5モジュールが廃止されたため、hashlibを使用する必要があると報告しています。に変更import md5
するimport hashlib
と、python2.5とpython2.6は解決されますが、hashlibモジュールがないpython 2.4は解決されません(ImportErrorが発生します。これをキャッチできます)。
これを修正するために、try / catchを実行し、getMd5()関数を定義して、tryブロックの結果に従って適切な関数が定義されるようにします。この解決策は大丈夫ですか?
たとえば、目的は同じでインターフェースが異なる2つの異なるライブラリがあり、一方を使用したいが、最初のライブラリがそうでない場合はフォールバックしてもう一方を使用するなど、より一般的なケースでこの問題をどのように解決しますか。見つかった。
iphone - iphone 2.0 アプリを iphone os 2.0 および 3.0 以降の os で実行する方法
私はOSバージョンのiPhoneを持っています。2.0 アプリ ストアでは、すべてのアプリケーションを実行する必要があることを読みました 3.0 os.だから、アプリケーションを両方のファームウェアで実行するにはどうすればよいでしょうか。 3.0以上のos.現在、これを使用しています。
両方のファームウェアで動作しますか
>= 3.0 OS 以下でアプリを実行したいのですが...助けてください
アプリケーションで非推奨のメソッドを確認するにはどうすればよいですか...この行は非推奨の cell.text=cellValue; としてしか表示されません
変更するものはありますか。iphone_sdk_3.0__leopard__9m2736__final.dmg という名前の新しい SDK をインストールしました
backwards-compatibility - 古いコンパイラ バージョンのサポートを終了する際の技術的な考慮事項は?
多くのユーザーがシステム用に特別にコンパイルする必要があるため、ソースとバイナリの両方の形式で無料で配布されているプロジェクトに取り組んでいます。古いホスト システム、および主にそのコンパイラとの下位互換性を維持するには、ある程度の考慮が必要です。
GCC 3.2 (2003!)、ICC 9、MSVC (C++ ではなく、ほとんど放棄されたソフトウェア)、および Sun のコンパイラ (私たちがまだ気にかけている古いバージョン) など、これらの最も厄介なもののいくつかは、言語機能のサポートを欠いています。開発をより簡単にします。ユーザーがこれらのコンパイラーを使い続けることを可能にすると、パフォーマンスが大幅に低下するケースも確実にあり、これは私たちが提供する目的に反します。
では、どの時点で十分であると言えますか? 特定のコンパイラのサポートを中止するためのいくつかの議論を見ることができます。
- 生成されたコードのパフォーマンスの低下 (新しいバージョンと比較して、ここで質問されます)
- 言語機能のサポートの欠如
- 開発システムでの可用性が低い (GCC よりもプロプライエタリのほうが多いが、古い GCC を取得するとシステム管理者の問題もある)
- 修正されていないバグの可能性 (ICC と xlC で ICE を分離しました。他に何が潜んでいる可能性がありますか?)
私は他のいくつかを逃したと確信しており、それらに重みを付ける方法がわかりません。それで、私が逃した議論は何ですか?他にどのような技術的考慮事項が関係していますか?
注: この質問は以前はより広義に表現されていたため、多くの回答者は、意思決定は基本的にエンジニアリング プロセスではなく、ビジネス プロセスであると指摘しています。私は「ビジネス」の考慮事項を認識していますが、それは私がここでもっと探しているものではありません. 古いコンパイラをサポートしなければならなかった、またはそれらを廃止することを選択した人々の経験と、それが彼らの開発にどのように影響したかを聞きたいです。
versioning - 後方互換性を壊しているときに明確になるバージョン番号を与える
私は約 6 か月間オープン ソース プロジェクトに取り組んできましたが、すぐに正式にリリースしたいと考えています。問題は、近い将来、おそらく複数回、下位互換性を損なうような方法でプロジェクトを変更したいと思うだろうということです。(私のコードは、特定の API に従ってコードを作成する必要があるフレームワークです。)
このプロジェクトが、下位互換性がすぐに壊れる可能性がある状態にあることを示すには、どうすればよいでしょうか?
Python や Django などの一部のプロジェクトでは、同じ「大きなバージョン番号」を共有するバージョン間で下位互換性が維持されるというルールがあるようです。(つまり、ドットのすぐ左の数字。)
このルールを採用しようと思っていたのですが、もし来週バージョン 0.1 をリリースして、バージョン 1 をリリースするまで下位互換性を破ることができなかったら、ちょっと変です。
何か案は?