OracleはJava 7/8を15年前の技術で作ってるっぽい?
Windows 2000 や XP に Java 8 をインストールすると、毎回 Java アプリ起動時に jp2launcher.exe が 『プロシージャ エントリポイント QueryFullProcessImageNameA が ダイナミックリンクライブラリ KERNEL32.DLLから見つかりません』とかたわごとをいうので。 Windows 2000に該当 関数を実装してみました。
Windows 2000でQueryFullProcessImageNameっぽい関数を作る
以前作った関数を KERNEL32.DLL 組み込むわけですが、Windows 9x なんてとうに絶滅したはずのいまいまだに、 ANSI ベースの QueryFullProcessImageNameA だけで Windows Vista 以降の 関数を使った機能を作る Oracle はもう、だめなんじゃないですかね?
jz L004054C2 push [ebp-7Ch] push ebx push edi call esi cmp eax,ebx jz L004054C2 lea ecx,[ebp-78h] push ecx lea ecx,[ebp+000003C8h] push ecx push ebx push eax mov dword ptr [ebp-78h],00000104h call [KERNEL32.dll!QueryFullProcessImageNameA] |
さらに 逆アセンブルしてわかることは、 Java 8 は MAX_PATH (260 文字)までに基づいてプログラミングされている。つまり、260文字以上のNTFSのPATHには対応できないということです。(眩暈)
コンシューマ向け製品なら別にそれでも構わないのだが、これは基幹システムなどでも使われるエンタープライズ製品のファミリーだということです。
こういう綻びがあちこちにあって、オーバーフローやら引き起こしてるんじゃないんでしょうかね
今どき、ANSIベースでプログラム組むなら、Windows 98とか、レガシーOSもサポートしてるつもりなんでしょうか?
真新しい機能だけ盛り込んでベースが15年前の技術で不安定なんじゃ…新しくする意味なんてないと思います
最新OSだけサポートしてコスト削減しつつ、技術力は15年前と変わってない
だから以前よりセキュリティーホールが多いJava バージョンリリースしてる
…なんて思っちゃいますね
くだらない広告アプリ導入する位なら、もうちょっと自社の技術を振り返ってみてはどうなんでしょうかね・ω・
No more Oracle !
とりあえず、ここに v2.4d2 を置いておきます
Windows 2000 Kernel32 改造計画【BM】
本当に”黒い神託(Oracle)”って、Java に限らず、他所から分捕って来たものを駄目にする事にかけては超一流ですよね。
OpenOffice.org 然り、MySQL 然り・・・
某”黒林檎”とは異なるベクトルで真っ黒・・・