[Prev][Next][Index][Thread]

GUI projects (suggestion)



Hi!

I'm interested in Flux+Kaffe (maybe someday Flux+Japhar, but Japhar is
not yet at that point).  Specifically, I'd like to see a system boot
up to Java, and have a desktop OS that is totally Java (and not a lame
network slave like the JavaOS Sun tried to make).  I think I'm currently
not able to do this (I tried and had problems, but don't remember what
they were ...  though I read somewhere and can no longer find that there
were problems with gcc2.91.* and egcs, and I have gcc2.91.66 on a Linux
Mandrake 6.1 distribution, so maybe that was it ... this was all over
Canadian Thanksgiving weekend in the beginning of October).

Anyways, I've been thinking about how the docs mentioned that Flux+Kaffe
(Kafflux?) could run AWT via an X server.  My thoughts were then that
Flux+Kaffe would probably need to run an X server to get things to display
locally, and I was thinking about trying to get that going once I ever
got things working (which I haven't yet).

However, a new idea has come to mind, and I thought I'd share it with
the list.  I'll propose a few "what if this existed" concepts and then
put them together.

1. Imagine an implementation of java.awt.Toolkit that returned Peers based
   on lightweight components, such as Swing components.

   It includes creation of a root pane that is actually a [subclass of]
   JDesktop that has no parent and cannot really do anything.

   Imagine the createFrame function returning a JInternalFrame that is
   hooked up to the JDesktop.

   I'm not sure how creating the Window and things like popups would
   work, but it would probably be something that is also a lightweight
   component that lives in one of the layers of the JDesktop -- something
   could be figured out, I'm sure.

2. Imagine a concrete implementation of the above that creates the JDesktop
   I mentioned and assigns to it a special Graphics object that passes
   all of its calls through to SVGALIB.  Therefore your graphics screen
   would be a JDesktop that is the full screen.  Hmm, how would events
   work?  Keyboard and mouse would have to be grabbed somehow.

3. Imagine Kaffe+Flux booting up, and then running www.alphaworks.ibm.com's
   RemoteAWT Server, which uses the Toolkit implementation mentioned in #2.

4. Imagine client programs that are started in Kaffe+Flux running with
   www.alphaworks.ibm.com's RemoteAWT Client software as their toolkit.
   They would display in the server that's running from #3 above.

5. Imagine the JDesktop mentioned in #1 being extended to be a full
   desktop program, that could launch other programs and do other window
   manipulations, and initiate a shutdown of the system when requested.

At this point, we have a Kaffe+Flux that boots up to a graphical
desktop, from which you can launch (in separate processes) new programs
(new instances of the Kaffe VM, or am I misinterpreting how Kaffe+Flux
works?) that display on the graphical desktop OR can be set to display
on a separate machine's graphical desktop (as long as it is running a
RemoteAWT server).  The only native code is the Graphics->SVGALIB level.
(What about fonts, you ask?  Doesn't Classpath use an all-software
implementation of TrueType fonts?)

I'm sure I've missed a lot of details, but I'm currently thinking that
the whole system could work and would be really cool.

Unfortunately, I'm not able to get Kaffe+Flux working right now, and I'm
working overtime at my Real Job(TM), SO I DON'T HAVE TIME TO WORK ON THIS.

But I thought I'd mention it in case anyone had the time and wanted
to work on such an implementation, and once I had time and could get
things working I could help out.  I'd certainly want to hear from anyone
that is interested in working on this.  I'd also be interested in hearing
why this would never work (if that's the case).  :)

Cheers,
Chris Dailey