JNode on a Pocket PC?

How hard would it be to port the JNode core (or at least the hardware access to a Pocket PC?

I ran across something called PocketLinux (not defunct) that was intended to replace Windows CE with a Java OS... I thought (Oh Yes!) and immedialy thought of JNode.

If any java os could do it, I bet a JNode port would be the best candidate.

Thanks to HP for supporting Linux development on the IPAQ, and it means the information to do it is availible.

Is anyone else interested in running JNode on a handheld?


I've come across the OpenMoko device, Neo1973.


I just thought I'd mention it in this context. No questions/ambitions.

I tried some similar apps on

I tried some similar apps on my hp tablet pc but haven't found any that im happy with.

Possible but...

Current version of JNode is simply too big to run on embedded system like PocketPC. To do this, we need :

.- J2ME implementation of classpath.
.- Small vm implementation (see this document for implementation of an embedded vm).
.- Port jnode to ARM processor.

Fabien Lesire

SavaJe OS has proven ...

SaveJe with the former SavaJe OS ( a full Java SE 1.3 compatible OS for ARM processors ) has already proven it is :

- technically possible
- feasible with a limited amount of (skilled) people
- creates an efficient OS that is performing better than Windows CE series

I wish the guys of SavaJe had chosen the OpenSource way and focuse only to be an integrator / consultant firm to provide expertise for the telecom operators and the mobile phone manufacturer. But SaveJe is now funded by those guys (IMHO, the still keep SavaJE alive, simply to make MS cut their WinCE mass price down) Sad

I tested successfully a SavaJe OS version on an iPaq for several days testing the Java2D pipeline and the webstart capabilities ... all this was just : "dream come true" !

SaveJe is about to release a cut-down version (only focusing to Java ME CDC scope now). An hk mobile phone with savaje built in will be sold at next JavaOne, if anybody can pick one for me Eye-wink

Anyway, What I see is that we need very serious skills on assembler and embeded platforms. But I am sure Jnode on PPC can be done !


PS: I don't have any ASM or embeded skills at all or I would have already started this Sad

Whats too big?

What’s too big?
J2ME would not make a very good api for something like an IPAQ, it's simply too limiting... Don't forget we're talking about machines that have as much power as your desktop did not long ago, e.g. to IPAQ I have runs at something like 400Mhz and has 1gig of storage.

There are several Linux implementations for the IPAQ already:

So, the only part that requires a bit of finesse is the code to access to hardware resources, but that will be much smaller than what JNode has to have because the hardware is pretty much fixed (you can't change the video hardware for instance).

As for the core API, J2ME is a bit too limiting... we could use Personal Profile but I suspect that we would do well to implement a completely new API specifically for the OS (which is a bit of slog work, but well within my own capability.

Anyway, it look well within the realm of possibility.

JNode at embedded ARM platforms

It would be nice to see JNode running at tiny ARm based machines.
Some people say that "how do you see all that huge descktop applications with such low-speed processors?"

The first answer, just read above - Linux runs with GUI with such hardware! Java is potentially not worser than Linux kernel.

The second answer is: sometimes we do NOT need GUI, but only services
likes networking, serial ports, GPIO, PCMCIA, USB-masstorage e.t.c

I would like to see JNode running also with industrial ARM platfroms which are very close to HandHelders:

I'm ready to participate porting JNode for ARM, but I can't do it alone, I'm not a big adept in compiler internal organisation.
But I have a lot of ARM based machines to play with hardware enablement.

If somebody who understand well JNode bytecode compilation API is ready to provide some skeleton for ARM I would be glad to contribute.

Just start it!

ARM support

There are many things to consider for porting jnode to ARM based paltforms, the compiler is only one of them:
- booting
- proting the nano kernel
- ARM support in the assembler
- ARM support in the compiler
I think the assembler is a key component in the picture because on one hand the compiler is based on it and on the other hand it can be used to compile the ARM nano kernel by the means of jnasm.
So if you would like JNode to run on the ARM platforms in the future creating ARM assembler support can be a good first step.
See the org.jnode.assembler package in the core project and it's subpackages. Besides the current org.jnode.assembler.x86 you will create a package org.jnode.assembler.arm and extend org.jnode.assembler.NativeStream just like it is done for x86, by creating the org.jnode.assembler.arm.ARMAssembler, org.jnode.assembler.arm.ARMTextAssembler and org.jnode.assembler.arm.ARMBinaryAssembler and related classes.

Regards, Levente

What about the JP2x project?

Some of the porting tasks for the ARM might have been undertaken by projects like the JP2X (cross linked from the using JP2x to run JNode on game console post.

Implementing platfroms assemblers

Is JNode structure is stable enougth now to start work with other platfrorms?

Is anybody ready to start work with ARM or PPC assembler now?

Too many tasks at once:
porting nanokernel and provide compiler infrsatructure, ugh!

Still could we start with implementing assembler and postpone nanokernel porting after assembler refernce implementation is ready?

The structure of the

The structure of the assembler related parts should definetly be stable enough for starting to add support for new platforms.
ARM stands out like a particularly interesting one among them for JNode due to the increasing capabilities of the upcomming ARM based mobile devices like OpenMoko. We are also thinking about providing support for other (then x86) platforms based on the maxwell assembler infrastructure (https://maxwellassembler.dev.java.net/) which has support for x86, PPC and SPARC but not for ARM. So this is an other reason for starting to code the ARM support from scratch.
Implenenting the NativeStream (org.jnode.assembler.NativeStream) level support for ARM looks like a good beginning to me.

Regards, Levente