What was that? You want to write code to compile native Mac apps, PPC
and 68k both, with no special runtimes, and, simultaneously, generate
a separate Java Applet out of it? So that your program also runs on
any Java-powered OS released across the decades, for any JDK version?
Then this is THE page, and THE program, you were looking for.
========== Details ==========
This page is dedicated to providing the very first few releases of the
legendary cross-compiling IDE and programming language, "REALbasic",
including all the releases under its original name, "CrossBasic". All
of them were distributed as "DR1" releases, originally as shareware,
then later as "public releases", all predating the transition towards
the commercial releases, starting with [REALbasic F1, then 1.0, and so
on][1].
What makes these "DR1" releases so special is that they are the latest
versions of REALbasic able to target Java Applets (or Java anything),
while still primarily targeting native PPC/68k Mac apps ("DR1r35a"
aside). Not even later versions of REALbasic, Real Studio and Xojo
have this ability. So code away without restraint your cross-platform
native Mac and Java Applets in 2024 and beyond!
Thanks to the efforts of Garden members [@LanHawk][2] and
[@siddhartha77][3], all versions contained here so far can be used
free of restrictions natively both on PowerPC and 68k Macs.
Otherwise, there's a nag that, unless if the year and/or month of your
system is matching close enough with the program version's, it will
tell you that it "expired", then quit. The original, unmodified
versions are nonetheless also available here.
Such date checks only apply to the "DR1" versions, but not the later
ones. And even when they do apply, the programs that are created
through them are free of this constraint.
The recommended version to download is REALbasic DR1r33: It is the
latest version that we currently have that is able to target not only
PPC and 68k native Mac apps like "usual", but also Java Applets.
If you have or ever find more CrossBasic / REALbasic DR1 versions,
please kindly upload them to this page, in any order. Others can tidy
it up for you, don't worry. In particular, we are searching for the
following versions:
\- DR1r34 (12 May 1998)
\- DR1r34a (18 May 1998)
\- DR1r35 (21 May 1998)
Those versions might still have Java targeting capabilities, and are
newer than DR1r33 which we have. Later versions, such as DR1r35a,
don't.
====== Original Downloads ======
Download #01 is REALbasic DR1r35a, sourced from MacPeople 1998-07-01.
Created date: 1998-05-26 (Modified on 27th)
Download #02 is REALbasic DR1r33, sourced from Univers Mac #80.
Created date: 1998-05-04
Download #03 is REALbasic DR1r31c, sourced from MacPower 1998-06.
Created date: 1998-04-10
Download #04 is CrossBasic DR1r22, sourced from HyperLib 1998 Winter.
Created date: 1997-10-28 (Modified on 29th)
Download #05 is CrossBasic DR1r21, sourced from MacPower 1997-12.
Created date: 1997-10-14
Download #06 is CrossBasic DR1r7. Created date: 1997-06-28
====== Patched Downloads ======
These downloads have been cracked for both PPC and 68k to remove the
time bomb.
Download #07 is REALbasic DR1r35a.
Download #08 is REALbasic DR1r33.
Download #09 is REALbasic DR1r31c.
Download #10 is CrossBasic DR1r22.
Download #11 is CrossBasic DR1r21.
Download #12 is CrossBasic DR1r7.
For some of the extra goodies, such as some of the documentation,
please refer to the "original downloads" above as well, which
sometimes includes them.
======== Extra Goodies ========
Java Support Classes \- This is a folder sometimes seen bundled with
both CrossBasic and REALbasic, up to least [REALbasic F1][1]. It is
unknown why this was sometimes bundled even with versions that no
longer supported Java. Java-compatible versions also do not seem to
require it to compile Java Applets.
It contains 9 Java bytecode ".class" files of unknown purpose and
unknown usage. The checksums of these files are identical regardless
of what CrossBasic / REALbasic version they were coupled with, so far.
If you know their purpose, and/or what they can be used for, please
let us know.
Currently, it is included with the original downloads of the following
versions:
\- [REALbasic F1][1]
\- [...]List under construction[...]
Documentation \- These were updated and released regularly, often or
always matching every minor DR1 release. They usually include the
"Language Reference" (a syntax manual), plus other guides that explain
to you the IDE's options, and some programming background.
Currently, we have partial documentation bundled with the original
downloads for the following versions:
\- REALbasic DR1r33
\- [...]List under construction[...]
If you have or ever find the full documentation for these versions, or
even any documentation for the other DR1 versions, please kindly
upload them to this page.
Notice that we do have what seems to be the full documentation
included with our download of [REALbasic F1][1], which can also help
clarify things even for some of the DR1 releases. The F1 release,
which stands for "Final Candidate 1", is the release that came right
after the final DR1 release, DR1r39.
========= Java Help ==========
Run your Java Applet on a web browser or Apple Applet Runner \- You
can run your compiled Java Applets by using an ultra-simple HTML file
as a middleman. This is by design, and what makes a "Java Applet"
different from a "Java Desktop Application". Java Applets contain a
method within them called "init()" to kickstart them, which is
automatically invoked by a Java-capable web browser (which either uses
its own Java Virtual Machine, or your system's Virtual Machine such as
MRJ) or an applet runner program, such as MRJ's Apple Applet Runner,
included for example in [MRJ SDK 2.2][4].
Note that Java Applets, also by design, are much more constricted in
features than a full blown Java Desktop Application, and is part of
the reason for why some CrossBasic / REALbasic DR1 features are
exclusive to native PPC / 68k Mac apps. You can enforce the IDE to
check for and constrain you to its Java-compatible subset by going to
"Edit > Project Settings..." in the top menu, then check the "Java
Applet Compatibility" checkbox, then push the "OK" button, as seen in
the screenshots above. Note that this hides the "Menu" control from
the "Project" window, which prevents you from working on it, so I
recommend ignoring this option. You can compile your native Mac AND
Java Applets regardless of it, as well.
Getting down to business, run your Java Applet by creating your HTML
file: open ANY text editor (SimpleText will do) and enter the
following line:
> < html>< body>< applet code="Window1.class" width=150 height =25><
> /applet>< /body>< /html> [Remove the extra spaces]
Now save your file in the same folder as your Java Applet. Open your
file in a Java-enabled browser or applet runner, and there you go!
Note that you adjust the pixel width and height of your Java Applet
inside the file you just created: simply replace the values in it
accordingly. Likewise, replace "Window1.class" with whatever your
".class" file is called (actually, it wants the full class name with
namespaces, but in our case that matches our file name).
The Java Applet will not use the window dimensions set on your IDE.
This is also by design, and what yet again distinguishes a Java Applet
from a Java Desktop Application.
Convert your Java Applet into a Java Desktop Application \- You can
also turn your Java Applet into a regular Java Desktop Application, by
simply using a wrapper. In "normal" Java development, you would simply
convert the applet into an application, but CrossBasic / REALbasic DR1
does not give you Java source code output, but only pre-compiled Java
binary (AKA bytecode) output, so short of reverse-engineering the
binary, which by the way is also feasible, especially if you just need
to rework the entry point ".class" file, you can instead just as well
simply wrap it up.
The main difference between a Java Applet and a Java Desktop
Application is that the latter MUST contain an entry point method,
with the name, signature and declaration of "public static void
main(String[])". Although technically workarounds to this requirement
do exist, they would only further complicate the process for our goal
of just wrapping up our Java Applet, for no gained benefit.
Since we won't use the HTML file to specify the pixel width and height
anymore, we instead do so from inside our new Java wrapper. And since
we are not using a web browser or applet runner anymore, we also
invoke the "init()" method of the Java Applet ourselves in order to
kickstart it.
As such, the following boilerplate / canned code can be used as your
wrapper:
> [...]Section under construction[...]
And there you go! You've got yourself a Java Desktop Application out
of your Java Applet now! Just remember to adjust the width and height
defined inside it according to your desire. You can also add any other
customizations to your application that you would like via further
Java code. When you are done, simply save your code using a text
editor, and preferably name the file with ".java" in the end.
You can now easily compile this ".java" source code file into a
".class" bytecode file via the "javac" (Java Compiler) tool included
for example in [MRJ SDK 2.2][4]. Because we are on the venerable Mac
OS, which offers superior UX to ALL of its CLI-based rivals (including
Mac OS X), the included version of "javac" is visual (GUI-based), and
can easily be used like in the example below:
[...]Picture under construction[...]
Now simply push the "Build" button on the bottom-right corner, and
you're done! Now your compiled Java Applet is now simultaneously also
a Java Desktop Application with the addition of your new ".class"
wrapper file.
Package your Java Desktop Application as a double-clickable Mac app
(with PPC startup code via MRJAppBuilder) \- [...]Section under
construction[...]
Package your Java Desktop Application as a double-clickable Mac app
(with 68k startup code via JBindery) \- [...]Section under
construction[...]
Compatibility
Architecture: 68k PPC
For both the program and its resulting applications (tests done with
version DR1r33):
Confirmed running from Mac OS 9.2.2 all the way down to System 7
(tested with 7.5.3).
The original 68000 processor won't work, but 68020 and up will. There
are also no issues with running in pure Black & White mode.
System 6 and lower are unfortunately incompatible.
If you try running on a 68000 processor or in System 6, the OS will
crash and require a restart (or it should go to MacsBug if you have it
installed). NOTE: a Java Applet created from RB DR1r33 or earlier
should still work either under System 6 and/or 68000 processors, as
long as there is an Applet Runner or web browser that is compatible
with them, assuming one exists.
Works fine in Mini vMac emulating a Mac II with an emulated 68020,
tested from a Mac OS 9.2.2 host with Mini vMac 3.4.1.
Compatibility unknown for Classic VM/emulator in OS X.
[1]:
http://macintoshgarden.org/apps/realbasic-1x-2x-3x-4x-5x
[2]:
http://macintoshgarden.org/forum/calling-all-hackers-old-software-needs-hacking?page=16#comment-102989
[3]:
http://macintoshgarden.org/forum/calling-all-hackers-old-software-needs-hacking?page=19#comment-108731
[4]:
http://macintoshgarden.org/apps/mrj-sdk-22