I should add here since nobody seems to have mentioned it, that there really is no lowest common denominator here.
There are two strains of J2ME:
- CLDC and MIDP are on one side, which is what pretty much all phones support.
- CDC and PP are on the other side, which is what pretty much all PDAs (except for Palm) support. As has been mentioned, CDC and PP is basically a subset of J2SE.
The lowest common denominator, if you had to give one, would be CLDC. But CLDC has no GUI functionality at all, so isn't really suitable for anything except libraries and such.
On the GUI side, you're pretty much screwed. Any GUI classes you can use to make MIDP apps are not available in PP, and any GUI classes you can use to make PP apps are not available in MIDP. No lowest common denominator whatsoever.
It was actually for this reason that last year, I asked whether anyone knew of ways to run MIDP stuff inside PP (supposing that someone wrote a compatibility layer, it would be quite possible to do.) But since nobody answered and Google couldn't find it, I assume that such a thing doesn't exist.
If you want to support both sides then, you should design your application using an MVC paradigm to save work. Write an MIDP view, a PP view, and a single model which both views can use.