The history of Java on BeOS…
Well, until beunited tells me to shut up (probably won’t be long) I’m going to attempt to set the record straight and describe the current status of Java on BeOS. I’ve seen a ton of inaccurate information disseminating about the community and feel something should be said by someone who actually does know what’s going on. That seems to be the general state of Haiku / beunited at this point. Too many people don’t know anything and think they do, or like to speculate, and the people who really know things are too busy working on them to keep people overly informed.
Granted, you’ll always have rumors. Occasionally it’s good to seed them. But when I see outright lies being spread rampantly on BeShare to new users who’ve never expirenced BeOS before, I have to call offenders out on it. It’s my moral duty. Ok, so maybe not my moral duty, but it’s the right thing to do. We’re supposed to be helpfull, not misleading, conceited, and egotistical. So without further ado, here are a list of questions and answers common to BeShare and other BeOS discussions about Java on BeOS.
The Java for BeOS story goes back very far. In july of 1998 javaworld.com had an article on this very topic. Eventually Sun Microsystems and Be, Inc. announced a partnership to port J2SE to BeOS. Metroworks reportedly had a working version at one point, and BeIA (and the BeIA development environment) had a PersonalJava (very minimalist java 1.2 + embedded goodies) implementation. This ran on R5 with BONE, and to my knowledge is what ships with YellowTabs Zeta at the moment.
Is there a complete Java VM for BeOS that I can use?
Short answer: No.
Long answer: BeKaffe has a developer release you can download. There’s some things you need to know about Kaffe though.
- It has never passed the Java compatibility tests (which is why it’s not a certified java implementation).
- It does -not- have Swing, SWT, or any GUI that you’ll probably want to use.
- The BeOS port was buggy as sin and incomplete.
- This has been dead on BeOS for ages.
At other various points in time there have been other java implementations on BeOS that worked to various degrees… I can’t find the links right now…
What about this pjava thing in BeIA and exp/dano?
It’s a PersonalJava impelementation. Probably not quite what you had in mind. PersonalJava was the precursor to J2ME (java2 micro edition) and the embedded / smart device Java specification. It’s not a full-blow j2se environement, and as such dosen’t properly behave in all the ways a J2SE implementation should. It’s more-or-less java 1.1.8 with some bolt-ons and a slimmed down set of classes.
What’s up with beunited.org? Aren’t they porting Java?
beunited.org is porting Suns J2SE 1.4.2. When completed, it will be a fully compliant Java 2 implementation and be of the quality you’d expect from a commercial java implementation. Meaning, solid, stable, fast, compliant.
The beunited.org port started out as a port of J2SE 1.3 headed up by Clay Atkins. See my post to the openbeos mailing list from January 2002 This was before beunited.org managed to take up the cross of porting Java. I had indeed talked to clay on the telephone. Unfortunately, he was terribly wrong about the state of the port — which would have been impossible for anyone to know without getting the build system working. There were major chicken-and-egg problems since the Java build system actually uses java to build java.
After much prodding of different people in the community (and finally consigning to the idea that it would never happen) trying to get the Java port going again, beunited.org contacted Clay, got him to donate the code from the team he had been leading for the 1.3 port, and we picked up where they left off.
Using C++ replacements for javah and javac, figuring out the build system, and getting things to start building, beunited.org was able to start working on the hotspot virtual machine. Much of the work (including most all the host system abstraction layer) was done in the code donated to beunited. After the source release of Java 1.4.1 by Sun, the trees were merged. It was official, we were working on java 1.4.1.
I will not discuss the current status of the BeOS Java port from beunited in great detail, but I will say this. The virtual machine runs beautifully. It’s been quite stable for many months. The last time a change was made to the VM was literally at the 2004 WalterCon in Columbus Ohio. The command line applications we’ve tried are all running without any problems. The VM is solid. We’re currently working on porting the rest of the Java class libraries to BeOS. This includes the AWT, Java2D, media, etc… all the things that let you do something usefull endusers can interact with.
There is a skeleton and basic implementation of the AWT that is ‘working’. Graphics primitives do not work yet (in progress) and many of the event listeners don’t receive events yet (in progress). This is about the 3rd AWT interal design we’ve done, and we’ll probably refactor / redesign it once more before it’s all said and done. Literally the day before WalterCon was the first time a Java program was able to put a BWindow on the screen using the beunited Java implementation. Those of us on the beunited.org team are busy people with jobs and responsibilities. You’ll have to be patient until we can get this done. It’s not easy work, it’s often not even fun work, but it’s definately educational and rewarding.
Here’s a few screenshots of the current AWT running java programs on BeOS. Notice the layout managers are working.
Reimplementation of the BeOS BasicButton Demo in Java See how simple it is? One little file…
Can I help?
Maybe… contact the head of beunited.org‘s developer relations and beg to join up!
What about SWT?
You don’t need the beunited.org VM to port SWT. Go ahead, do it yourself if you’re so smart. Actually after looking at SWT, it looks bloody easy to port compared to AWT. But good luck on those SWT objects that BeOS dosen’t have. *cough*html view*cough* SWT is not part of the official Java specification, and as such isn’t within the scope of the beunited.org port. It would make an interresting side-project or would be excellent for an upcoming genius student to port. That’d be some good bragging rights for a resume, and might put you in well with the folks at IBM errrr Eclipse.org.
What about Java3d?
Java3d isn’t part of the base spec for a J2SE port. However it is usefull. See the same information above about SWT. The same applies here. However, it’s important to note, Java3d requires Java2D, which is part of the AWT spec. So until Java2D is working, you’re hands are tied.
Is it a native port?
You bet your bippy. We’re using real BeOS system calls and the BeAPI is beaten around in our source code like a red-headed stepchild.
Can I beta test?
No. beunited.org is bound by the terms of the Sun source license and what Sun dictates. THIS IS NOT A BAD THING. Having a corporate entity concerned with how a product reflects upon them is not something that will work against beunited.org. Furthermore, beunited.org is officially a Not For Profit organization. As such, I would assume Sun will be able to perform tax-writeoffs for any resources they do allocate to handle compatibility testing or any developers they might assign to handle our problems.
We cannot release anything until it passes all the Sun Java platform certification tests. Meaning, by the time we’re able to release, it’s guaranteed to be one stable as heck product. No beta testing required, Sun handles that.
If you have any other questions / comments, I’ll be happy to try and answer them. If I can’t, I’ll either delete your comment (hahah!) or forward it on to someone who knows.

September 5th, 2004 at 11:42 am
Frog! :D
September 5th, 2004 at 8:18 pm
Thanks for clearing the air about the Java project Bryan. I don’t see beunited telling you to “shut up” so long as you are telling the straight truth and nothing but the truth. :P You can also always submit such info to our Director of PR to have it officially posted on beunited.org. ;)
A little known side bit of trivia about Java and BeOS is the fact that Tomaso, and I think it was Duncan Wilcox (Be engineer), actually worked on BeKaffe prior to Clay’s port and Be’s Sun agreement. Tomaso was slated to be the team lead of beunited’s project, but then “real-life” took over before we recieved the source from Clay and he had to move on to other things.
Deej
September 5th, 2004 at 10:25 pm
Thanks,easiest read on java I have seen :)
September 6th, 2004 at 1:41 am
Thanks for this nice reading :)
September 6th, 2004 at 4:44 am
Shut up ! Also, your cell phone is tracking you. I am making lots of money.
I know where you are.
/not really Simon
September 6th, 2004 at 6:07 am
Great article!
September 6th, 2004 at 6:46 am
nice reading. . clears up a few things
September 6th, 2004 at 6:57 am
Great reading! Even though you clear current state what about the future ? What is next milestone and when do you plan to reach it ? 6 months ? 2 years ?
keep up great work anyway :pp
September 6th, 2004 at 7:42 am
You missed a couple of Java implementations.
CoffeBEans was probably the first. It was back in the DR days, and done as a final year project by a student. IIRC he didn’t get past the command line ;-)
The second is a bigger one… MW released a fully “working” Java 1.X implementation circa MW Codewarrior for BeOS version 3. This possibly only ever worked on PowerPC. I have a copy of this, and it certainly compiles and runs Java code just fine ;-) AWT et al. It’s possibly the implementation you mention in passing, but it certainly *was* released for PowerPC. I can’t remember the exact version of Java, but 1.1.4 rings a bell. AFAIK it was post 1.01 at any rate.
September 6th, 2004 at 10:05 am
Matt – I couldn’t remember for the life of me when writing the article the name of CoffeBEans. Thanks for jogging my memory! I also haven’t been able to find the website for it.
The MW jre was before my time as a full BeOS user. Although I followed the development and company from the DR8 days, I didn’t have hardware it would run on until R5 was released. I do know that this release was PPC only.
Right now, our release is x86 only. I don’t expect it to become PPC as well until we can get the Haiku kernel and toolchain going. The thought of attempting to use MWCC on this build scares me. Of course there’d also be a decent amount of work in supplying ppc-specific files for all the x86 specific files. Lukily the build -does- take that into consideration, and the foundation for ports to other architectures within an OS platform is all there. We inherited that from SUN.
As for the status of the port right now, and what the next major milestone is…
We’re on about the 3rd or 4th design of an AWT. They’ve all worked, but we keep making them better, the longer we take, the better the end result will be. When I talk about the AWT I normally mean just the widgets. The AWT itself is actually dependant and related to a number of technologies in the JRE, including all the graphics libraries, (such as Java2D, etc).
The next milestone will be working graphics primitives in the form of Java2D running on our implementation of AWT widgets. At that point, we -should- have Swing running, and the SwingSet demo should work. That’s a huge deal. Huge I tell you!
September 7th, 2004 at 4:20 am
Well, I’m a PPC owner – not scared of MWCC (my little “friend”), so maybe I can scream at BeUnited…hmmmm.
Baring in mind that we do have a PPC bootstrap Java 1.1.x compiler and VM that works (at least) under PR and can be coaxed to compile and run command line apps under R5… I also have two dual processor PPC machines (BeBox 66 and a PM9500MP.)
Maybe I’ll mail Simon… Mind I just lost the entire contents of my laptop hard drive, due to hardware failure, so let’s bare that in mind ;-)
September 7th, 2004 at 4:28 am
ftp://ftp.hu-berlin.de/pub/mirrors/ftp.be.com/pub/obsolete/lang/java/
Oh, and this is a link to the CoffeeBEans source… I think the thing that stopped me doing anything with it was the fact you’re required to source an anchient JDK source tree. I couldn’t find that anywhere. If you know where it is available, I’ll resurect this little jem ;-)
Feel free to email me directly….
September 7th, 2004 at 5:14 pm
What about the co-operation with yellowTAB? Isn’t it speeding up thing?
September 7th, 2004 at 5:44 pm
Glad to see Java developing on BeOS. I was one of the founers of the BeKaffe project – and yes, it did have have some basic GUI capabilities (at the time, the non-GUI port of Kaffe to BeOS was pretty decent – we just worked on the GUI portion). But since Kaffe appears dead, and some of the team members when to help BeUnited on the regular port (a better focus of energy, IMHO), (and my use of OSX rather than BeOS – no BeOS in VPC or QEMU ;( ), BeKaffe is long dead. Long live BeKaffe.
September 7th, 2004 at 5:51 pm
BeOS? Someone still uses that?
September 7th, 2004 at 6:05 pm
Long live BeKaffe indeed! If it hadn’t been for you guys we wouldn’t be this far. Your C++ implementation of javah saved the day for bootstrapping!
François – I am not at liberty, nor am I willing to discuss YellowTab’s level of involvement.
After all, Ignorance is bliss.
September 7th, 2004 at 10:12 pm
Re: Kaffe
Sorry about last name mix-up Duncan… been a long time since I mentioned your name. ;) And thank you for all you did for the platform… some of us are still here because of it. :)
Re: PPC
Matt, you may want to contact me, Simon is on vacation at this time.
Deej
September 8th, 2004 at 9:27 am
Thanks for the info! My one comment is that it would be really nice if BeUnited updated the project status a little more often. I don’t need to know how soon until everything is ready for download, but just like the Net+ throbber, its nice to know when work is getting done. Maybe a montly update that is two sentences long: In August we made major headway on two of our major tasks. One of them is XXXXX. Communication is good.
Other than that, I utterly respect every person working on this team – Be needs Java very badly, and this native version is soo much better than I could have hoped for.
September 8th, 2004 at 1:49 pm
No problem about the mix-up…But actually you were close in describing me as a Be engineer.
A little secret history – I was in talks with Be about coming on board to work on their java implementation…Still wonder where I would have been if I did that…
September 8th, 2004 at 1:53 pm
BTW, from the BeKaffe FAQ:
2.1 Does Swing work with BeKaffe?
Of course, here’s a snippet for your .kafferc (placed in the home
directory)
—snip—
for jar in *.jar
do
JARS=${JARS}:${jar}
done
CLASSPATH=.:${JARS}:${HOME}/java/swing-1.1.1beta2/swing.jar:${CLASSPATH}
—snap–
now you can type ‘java StylePad’ and it works….
September 8th, 2004 at 5:18 pm
Nice job, Bryan!
The WordPress works fine. I translated your masterpiece into Hungarian. It wasn’t fun work but it was definately educational and rewarding 8DDD
September 10th, 2004 at 2:47 am
Good work!
Someone asked when you would release it but you didnt really answer that.
I guess many of us would like to know, couldn’t you at least give us approx. dates?
September 10th, 2004 at 3:03 am
For me, release of a stable java platform would probably mean me switching back to Beos again – having loved it but had to leave years ago. Now all of my development is done in Java, so lack of it is pretty bad.
I agree that it’s a good thing that Sun are so involved, it means that the port will be very stable, secure etc.
September 10th, 2004 at 4:20 pm
Because I can’t. I honestly have no idea when a release will be close to ready, when we’ll start attempt to start the Sun testing, or when we’ll even be able to. I have absolutely no idea at al.
Anyone who tries to claim anything other than that, is outright full of it.
There is no answer beyond this one: It will be released once it has passed Sun’s Java compliance and compatibility tests.
The answer to when that will be is: When it’s passed, which means we have to start that process first.
The answer to when that will be is: When we’ve reached a significant milestone, are able to contact Sun, and perhaps get more of a time-line.
The answer to when we hit that milestone is: When we get there, which may be a while. We don’t know. We’re not sure of all the obstacles that may be along the way. I know what’s next to be done, but have no idea how long it will take. That’s the beauty of porting / implementing an interface you didn’t define and aren’t very familliar with yet. You have no idea how well your implementation will work until after you do one.
October 3rd, 2005 at 2:49 pm
web hosting
web hosting