The Java port of BMF — second implementation of the parser, targeting the JVM instead of native C++. Compiles to Jasmin) JVM assembly. Every BML source file in the archive carries Compiler: JBMF (R) Compiler in its header — by the time those files were typed, the system was already bootstrapping itself through Java.
Year
2000 · ships in the archive at Java/JBMF.exe
Substrate
Java · Jasmin JVM assembly · cross-platform where the JVM runs
Sister VM
BMCPU — the C++/COM Win32 host. Same parser; different substrate.
Drives
Compiles BML source to executable artifacts on the JVM. Header banner on every .bml file.
Ancestry
Jasmin) — the JVM-bytecode assembler that made it tractable to generate verifier-clean class files in 2000.
Why the second port mattered
A language with one implementation is a project. A language with two implementations on different substrates is portable architecture. JBMF demonstrated that BML's semantics — including the speculation, the choose-and-undo, the four-ancestor synthesis — translated cleanly across substrates. Same parser, different VM. Same source files, same banner, different runtime.
Two substrates, one parser
BMF's grammar is described in BML; the parser itself can be implemented anywhere there's a host language. The 2000 project shipped two: one in C++ ( BMCPU ) targeting Win32 + COM, and one in Java (JBMF) targeting the JVM. The grammar source file BMF-grammar.bml was the same for both.
The two-implementation pattern. The grammar lives once;
the host substrate is a port concern.
The same conviction shows up across the network now. The Coherence Network's API speaks JSON over HTTP; clients are web (TypeScript), CLI (Node + Python wrapper), and direct graph access (Cypher). The interface is the contract; the host substrate is incidental. JBMF was the first time that posture was load-bearing in a system this body shipped.
Banner · every BML file
JBMF (R) Compiler
Open any .bml file in companion/source-samples/ and the eight-line header is the same:
Platform: BML Virtual Machine and Compiler: JBMF (R) Compiler — the file announces what runtime expects it and what compiler produced its bytecode. By April 2000 (the date on the Cut primitive) the system was self-aware enough to stamp every source file with its compilation lineage. That's the maturity-mark of a working language: the banner stops being aspirational and starts being a fact.