# HyperView 3.2 Build

Package: `com.multiversesocial.hyperview`  
Main class: `com.multiversesocial.hyperview.ViewMain`  
License: MIT (see `LICENSE`)

## Layout

```
hyperview3.2/
  src/com/multiversesocial/hyperview/*.java   # sources
  src/com/multiversesocial/hyperview/res/     # bundled gif/jpg/au
  lib/comm.jar                                # third-party javax.comm (NOT redistributed)
  build/classes/                              # javac output (generated)
  dist/hyperview-3.2.jar                      # runnable jar (generated)
  dist/lib/comm.jar                           # optional copy next to the jar (Class-Path)
  compile26 / compile26.bat                   # build
  run26 / run26.bat                           # run from jar
  dev/java/                                   # HTML class docs
  README.md / README_3.2.txt
  BUILD.md                                    # this file
  LICENSE
```

## Compile (JDK 26)

From the `hyperview3.2` root:

- MSYS/bash: `./compile26`
- Windows cmd: `compile26.bat`

This cleans `build/classes`, compiles every `src/**/*.java` with
`-encoding US-ASCII -cp lib/comm.jar`, copies `res/` into the classes tree,
writes `build/MANIFEST.MF`, and creates `dist/hyperview-3.2.jar` plus
copies `lib/comm.jar` to `dist/lib/comm.jar` when present.

Scripts assume JDK at `/e/java/jdk-26.0.1` (MSYS) or `E:\java\jdk-26.0.1` (Windows).
Change the `PATH` line in the scripts to point at another JDK.

Exact `javac` / `jar` lines: see README.md.

## Run

From the `hyperview3.2` root (so written data files such as prefs / `.dat`
land in the working directory as before):

- MSYS/bash: `./run26`
- Windows cmd: `run26.bat`

Equivalent:

```
java -Dsun.net.useExclusiveBind=false -Xms1000m -Xmx1000m -jar dist/hyperview-3.2.jar
```

## Signing (optional, later)

Do **not** sign `lib/comm.jar` (third-party; not redistributed by default).
Sign only the HyperView jar after you have a keystore:

```
jarsigner -keystore <keystore> -tsa <tsa-url> dist/hyperview-3.2.jar <alias>
jarsigner -verify -verbose -certs dist/hyperview-3.2.jar
```

## Notes

- Bundled media is loaded via `HyperView.resolveResourceURL` /
  `getImageFromJar` / `SoundClip` from `res/` inside the jar (or classes
  folder), with a loose-file fallback for existing filesystem layouts.
- Data the program **writes** (prefs, `HyperView.dat`, `ObjectRegistry.dat`,
  etc.) stays on the filesystem in the working directory / user home ? never
  inside the jar.
- `comm.jar` is third-party javax.comm and is referenced by the jar manifest
  `Class-Path: lib/comm.jar` (path relative to the jar file). Public release
  packages omit `comm.jar`; the app still starts without it (serial feature only).
- Package conversion helpers (historical): `GetString`/`Gob`/`SoundClip` use
  `HyperView.resolveResourceURLStatic`; `HyperConstants` adds `HV_PACKAGE` /
  `HV_RESOURCE_DIR`; `HyperDefs` qualifies default class-name preference
  strings; `ObjectRegistry` / `SerializationLink` use `hvForName`.
