Open12

Sun Microsystems による最新の Java IDE「Java Workshop 2.0」 で遊ぶ試み

ぺやんぐぺやんぐ

Java Workshop 2.0

  • Sun Microsystems という,かつて Java を作っていた会社がある。
  • Java SE 1.2 の時代に出していた「Java Workshop 2.0」という Java 用 IDE のパッケージ版を入手した。
  • Windows 11 で動かして, Java 1.2 を楽しみたい。
ぺやんぐぺやんぐ

インストールを試みる

CPU は Intel Core i7 14700Kで,メモリーも 32GB ほど, ディスクに至っては 4 TB ほど空いている。
OS はMicrosoft Windows 95 か Windows NT 4.0 があれば良いらしい。
なるほど,これは一筋縄ではいかないみたいだ。

ぺやんぐぺやんぐ

知ってた。相当古いバイナリであることは知っていたが,「せいぜい互換モードを使えばなんとかなるだろう」程度に思っていた。甘かったようだ。

とりあえず,何も考えずに汎用ファイルアナライザ「青い空を見上げればいつもそこに白い猫」に掛けてみた。

なるほど,どうやらこれは 16 bit のバイナリのようだ(私は NT やネイティブについてあまり詳しく無いので,ツメの甘い部分があったら見逃してほしい…)。

ぺやんぐぺやんぐ

GPT-5(以下,チャッピー)に聞いてみたところ,WineVDM(OTVDM) なるソフトウエアを使えば良いらしいので,そうしてみる。

おおお!
遂に…遂にか…?と思って暫く凝視してみたが,何故か進捗が 47% から進まない上に,1分程で落ちてしまう。
ぐぬぬ。

ぺやんぐぺやんぐ

タスクマネージャで「Install」 的な単語を入れていると,次の項目を見つけた。

なるほど,どうやらこいつが悪さをしているようだ。
とりあえず拡張子を .EXE に変更 -> 互換モードをオン -> ._MP に戻す,といったことをしたが,解決しなかった。

暫く調べていると,Microsoft が「16 ビット InstallShield サポート パッケージ」なるものを出しているのを発見した。
これを入れてもう一度試してみる。

ぺやんぐぺやんぐ
version: 2446
b91c:fixme:module:LoadModule_wine_implementation Strange error set by CreateProcess: 740
f8b0:err:file:RedirectDriveRoot c:\stopthis.now => C:\OTVDM-~1.0\c\stopthis.now
f8b0:err:file:RedirectDriveRoot c:\stopthis.now => C:\OTVDM-~1.0\c\stopthis.now

ぐぬぬ。
740 エラーということは,管理者権限で実行する必要があるみたいだ。
しかしながら,もう既に SETUP.EXE を管理者権限で走らせているうえに,Microsoft のアレを入れてからは _INS0432._MPの開始前にも例のダイアログが出てくるように成っている。
うーむ。どうしたものか。

ぺやんぐぺやんぐ

その後色々試したが,全くダメだった。
謎海外サイトに落ちていた 16bitインストーラを 32bit にするやつを動かしてみようとしたところ,PC に入れていた Norton が働いた。
どうやら,Norton CyberCapture なる機能があり,これはPC内で始めて動作するプログラムをサンドボックス内で走らせるとともに,その動作をヒューリスティック解析するものである。

暫く放置していたところ,急にセットアップウィンドウが立ち上がった。

とりあえず動くことは分かったので,どうにかしてPCにインストールしたい所存である。

ぺやんぐぺやんぐ

正攻法を諦めた。
今持っているファイルから,バイナリ等々を抜き出そうと思う。

これらの中で WorkStation 本体が入っているファイルは,大きさ的に DATA.Z ファイルだろうか。

というわけで,軽く調べてみたところ…

GitHub: wfr/unshieldv3 より)

なるほど,どうやらこれは 「InstallShield Z format」なるフォーマットらしい。
ということで,適当な Python スクリプトを落として実行したところ,WorkStation のファイルを得られた。

$ python .\idecompy.py .\DATA.Z
 Date     Time  OrigSize Attr CompSize Name
 ======== ===== ======== ==== ======== ====
 97-10-27 23:45      182 A___      151 readme.txt
 97-09-18 11:55    85303 A___    30401 JDK\CHANGES
 97-09-17 02:34    20480 A___     7874 JDK/bin\agent.dll
 97-09-17 02:34    22528 A___     7655 JDK/bin\agent_g.dll
 97-09-17 02:34     6144 A___     2400 JDK/bin\appletviewer.exe
 97-09-17 02:34     6144 A___     2356 JDK/bin\appletviewer_g.exe
 97-09-17 02:34     5120 A___     1475 JDK/bin\jar.exe
 97-09-17 02:34     5120 A___     1493 JDK/bin\jar_g.exe
 97-09-17 02:34     6144 A___     2074 JDK/bin\java-rmi.cgi
 97-09-17 02:34     6144 A___     2077 JDK/bin\java-rmi_g.cgi
 97-09-17 02:33     5120 A___     1404 JDK/bin\java.exe
 97-09-17 02:34     5632 A___     1863 JDK/bin\javac.exe
...

GitHub: lephilousophe/idecomp を使用した。)

ぺやんぐぺやんぐ

いろいろ楽しそうなファイルがある。
JavaWorkShop が入ったら ぜひ fastjavac.exe を真っ先に試してみたい。

ぺやんぐぺやんぐ


SUN だぁ。


果たして製品登録はできるのだろうか。とりあえず入力してみる。


アンケートもしっかり入力してみた。
「Register」!!



しってた。

ぺやんぐぺやんぐ


なんか色々起動した。

とりあえず,緑色の「▶」ボタンを押してみる。

おおお!

ぺやんぐぺやんぐ

んー,プログラムを実行した瞬間に IDE のほうが落ちてしまう。。。
コアダンプを見てみる

コアダンプ全文
FILE_IN_CAB:  jws.exe.20448.dmp

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

CONTEXT:  (.ecxr)
eax=0000000a ebx=0403c400 ecx=047c7410 edx=00030190 esi=047c7160 edi=063ffecc
eip=00000000 esp=063fed64 ebp=063fed80 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246
00000000 ??              ???
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 00000000
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000000
   Parameter[1]: 00000000
Attempt to read from address 00000000

PROCESS_NAME:  jws.exe

READ_ADDRESS:  00000000 

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.

EXCEPTION_CODE_STR:  c0000005

EXCEPTION_PARAMETER1:  00000000

EXCEPTION_PARAMETER2:  00000000

IP_ON_HEAP:  04355fd0
The fault address in not in any loaded module, please check your build's rebase
log at <releasedir>\bin\build_logs\timebuild\ntrebase.log for module which may
contain the address if it were loaded.

FRAME_ONE_INVALID: 1

STACK_TEXT:  
WARNING: Frame IP not in any known module. Following frames may be wrong.
063fed60 04355fd0     04355ff8 00000000 04355fd8 0x0
063fedac 054ccfe7     04355fd0 04355f28 00000000 0x4355fd0
063fedd0 054cb45d     04355fd0 07db5e50 00000003 sunwjit!java_lang_Compiler_start+0x1af47
063fee0c 054b1ed0     04355fd0 07db5e50 00000003 sunwjit!java_lang_Compiler_start+0x193bd
063fee30 1004832a     04355fd0 07db5e50 00000003 sunwjit+0x1ed0
00000000 00000000     00000000 00000000 00000000 javai!set_single_stepping+0x1181a


FAILED_INSTRUCTION_ADDRESS: 
+0
SYMBOL_NAME:  sunwjit+1cfe7

MODULE_NAME: sunwjit

IMAGE_NAME:  sunwjit.dll

STACK_COMMAND: dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~6s; .ecxr ; kb

FAILURE_BUCKET_ID:  INVALID_POINTER_READ_c0000005_sunwjit.dll!Unknown

OS_VERSION:  10.0.26100.1

BUILDLAB_STR:  ge_release

OSPLATFORM_TYPE:  x86

OSNAME:  Windows 10

FAILURE_ID_HASH:  {5247ec4e-517a-345e-3f38-0cc61d2e1de4}

Followup:     MachineOwner
---------

モジュール sunwjit で良くないことが起きているらしい。JIT を無効化すればいいのかナ?