パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

電子政府が使えない理由、縦割りの弊害?JREの弊害?」記事へのコメント

  • ってそんな駄目駄目なの?
    • Re:JREの互換性 (スコア:2, 参考になる)

      by Anonymous Coward
      Java Appletを作成した時に同じような問題に悩まされたことがありますが基本的にはコンパイル時の問題ではないでしょうか?

      デフォルトのままjavacでコンパイルすると、コンパイルしたバージョンより低いバージョンのJREでは実行できないコードが作成されます。
      source="1.3" などのオプションを指定することでJRE1.3で実行できるコードが作成できます。
      バージョン間で多少の非互換な機能があっても、基本的には下位互換は保たれているため、"source"で指定したバージョン以降のJREであれば実行できます。

      リンク先にあるように本当に古いJRE1.3.1でしか動かないサービスがあるなら、互換性がない機能をあえて使っているってこと?
      この程度のことを放置しておくというのは役所の対応としては信じられないのだが・・・

      --
      実は余り詳しくないのでAC
      • Re:JREの互換性 (スコア:2, 参考になる)

        by Anonymous Coward on 2006年03月27日 16時50分 (#909776)
        > source="1.3" などのオプションを指定することでJRE1.3で実行できるコードが作成できます。

        source [sun.com]はソースコードの解釈(1.4で導入されたアサーションとか5.0で導入されたGenericsとかを認識するか)を変えるオプションで、生成されるバイトコードに影響を与えるのはtarget [sun.com]オプションです。
        まあsourceに低いバージョンを指定するとtargetもそれに合わせて引き下げられるので結果的にそういう動作に見えるのかもしれませんが、Generics等を使いつつ1.3で動くバイトコードを生成することも可能なわけです。

        > コンパイルしたバージョンより低いバージョンのJREでは実行できないコードが作成されます。

        これはJDK 5.0になってからの話で、JDK 1.4ではデフォルトで1.2以降のJREで実行できるコードが生成されていました [sun.com]。つまり1.3を指定するとかえって1.2で動かなくなります。

        > バージョン間で多少の非互換な機能があっても、基本的には下位互換は保たれているため、"source"で指定したバージョン以降のJREであれば実行できます。

        今のところヘッダのバージョン番号が書き換わるだけで、バイトコード自体の仕様はまったく変わっていません。
        # その結果配列のインデックスが64bitに対応していないとか、古くなってきた点もあるけど
        コンパイラのバグが修正される [srad.jp]ことで生成されるバイトコードに影響はあるかもしれませんが。

        # なんつーかこのストーリー知ったかぶり大杉
        親コメント
        • by Anonymous Coward
          > Generics等を使いつつ1.3で動くバイトコードを生成することも可能なわけ
          SUN純正のjavacでは不可能です。
          # なんつーかこのストーリー知ったかぶり大杉

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...