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

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

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

      by Anonymous Coward on 2006年03月26日 14時54分 (#909109)
      Java Appletを作成した時に同じような問題に悩まされたことがありますが基本的にはコンパイル時の問題ではないでしょうか?

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

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

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

        by Anonymous Coward on 2006年03月26日 15時08分 (#909117)
        古いバージョンでコンパイルしてあるものが、新しいJREで動かないことはありました。
        だから、古いバージョンを指定してるのかなと思いました。
        互換モードがあれな良いのにな。
        親コメント
        • by Anonymous Coward
          > 古いバージョンでコンパイルしてあるものが、新しいJREで動かないことはありました。

          JDK 1.0.2 や 1.1 で生成したバイトコードが Java VM 仕様に準拠していなかった [sun.com]という太古の問題ですか?
          1.3以降のバージョン間でもそんな問題が起きるとは聞かないのですが、まあ一度植え付けられた先入観はいつまでもいつまでも尾を引くからある意味仕方ありませんか。
          せめて
          > 古いバージョンでコンパイル
          > 新しいJRE
          が具体的にどのバージョンだったのかくらいは書いてくれないと、FUDだと思われても仕方ありませんね。
          • by kubox (23429) on 2006年03月28日 7時31分 (#910130)
            FUDかどうかはともかく、互換性があり、正しく動作していれば、FUDは出てこないと思うのです。
            親コメント
            • by Anonymous Coward
              で、それが1.1以前の話をしているのであれば、まあ一生言ってなさいってなもんですね。
          • by Anonymous Coward
            いいえ。 1.3で作成したバイナリが1.4で動作しないという問題です。 http://java.sun.com/j2se/1.4/ja/compatibility.html#incompatibilities1.4
      • 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では不可能です。
          # なんつーかこのストーリー知ったかぶり大杉

アレゲは一日にしてならず -- アレゲ研究家

処理中...