JSR 209 AGUI on CDC devices and SwingX
been very busy recently ;-)
Anyway, on my free time i had a friend bring me a Jasper SavaJe device from
the states... Since our application already has support for MIDP (very
limited) I wanted to try my hand at porting to CDC over the weekend.
Tiger feature hell...
First, let me say how low my opinion is of all the unnecessary language
changes in 1.5 with the possible exception of meta data not a single one of
these things provides any value other than adding yet another layer of
complexity for users to grasp (including the small issues caused by these
features not existing in the original versions of Java).
But that's a big debate, these things are here no point in crying over them.
However, CDC is far from supporting them even with RetroWeaver like tools
(have you tried getting retro weaver to work in the complex CDC/CLDC build
environment? Its a pain) and removing all of this stuff from SwingX is just
hell. I worked on it for two days and still couldn't get anything proper
working (but that's including JSR 209 which is terrible).
Anyway, I've been talking with some guys and after reviewing 209 there are
many things that should be different. I don't like it very much and it seems
like the guys in charge there were not the biggest Swing experts around.
The problem is that even if I ever get SwingX to compile for CDC it will be
ridiculously different from the original, so this is really a heads up on
1. If you have deep connections in Sun (or work at Sun), try to talk with
the 209 guys. Try porting an application to 209 and find out the basics i.e.:
you have to use internal frames for everything, no ui manager (which is fine
but makes porting a pain).
So generally the API was not designed with any portability in mind, I think
some work is still needed here...
2. Is there a possibility of "layering" SwingX?
Probably not for 1.0 (I'd hate to delay it for something that isn't GA), but
even if its not for 1.0 the API needs to be ready for something of this
type. The general idea is move the "advanced" features (such as PLAF's)
into a different project where the basic project will just be a standard CDC
project. Also abstract all of these differences (such as Windows etc...)
behind a unified API that we can also use for portability externally.
Obviously if I get something working it will be contributed back but you
would hardly recognise it ;-)
BTW Jasper phone is really nice but extremely flaky if you are considering
one. Don't buy it for actual use as a phone ;-)