<AWT Dev> <Swing Dev> Project proposal: fbtoolkit

Oleg Sukhodolsky Oleg.Sukhodolsky at Sun.COM
Thu May 24 17:42:14 UTC 2007

imho all functionality suggested could be achieved by fb-based XServer, 
why do you need to reinvent the wheel and develop a toolkit which will 
implement some functionality of XServer, some functionality of Window 
Manager, and AWT toolkit.

What is the advantage of the approach you suggest?

Thanks, Oleg.

Steph Meslin-Weber wrote:
> Hi Phil,
> Thanks for your comments, I wasn't certain how verbose the initial
> proposal was supposed to be so we left out the details from the
> usecases.
> In order to keep this thread in one list (it's starting to confuse
> Gmail a bit) we could continue this conversation in discuss for now.
> I have Bcc'd the other lists (including 2d following Mark's use) to
> let everyone on those lists know to check discuss for followups:
>  Bcc: awt-dev at openjdk.java.net
>  Bcc: 2d-dev at openjdk.java.net
>  Bcc: swing-dev at openjdk.java.net
> As the discussion moves on we can move it to the one group that seems
> most appropriate.
> On 23/05/07, Phil Race <Phil.Race at sun.com> wrote:
>> I don't follow what this has to do with Swing. 2D would be more 
>> affected ..
>> Swing is ignorant of whether the Motif or X toolkit is specified
>> and even works with the headless toolkit.
> Agreed, Swing shouldn't use knowledge of the underlying
> implementation. The reasoning behind including Swing in the discussion
> is the SwingAWT work by Roman Kennke. In his project, he implemented
> AWT peers using Swing [1]. Now, whether the Swing implementation is
> native is another topic of discussion :-)
>> Also the existing toolkits can still leverage all of the
>> same internal 2D native code for rendering. I don't see where
>> you are going to get that from unless if its going to be
>> a pure Java solution.
> I think here we tried to show that the example implementation would be
> written in pure Java, with extension points to break to native code as
> needed:
> "This example implementation will prefer pure-Java solutions, with
> public extension points available to enter native resources as
> necessary."
> Starting with pure Java means we have a baseline that is easier to
> understand than one that jumps back and forth to native code, this
> also incidentally makes it an ideal example for those wishing to write
> their own set of peers. It's a given that without those jumps certain
> optimisations aren't practical to implement, but that's why we'd like
> to do this in the open so those situations can be discussed and
> planned for.
> Before going on to a few usecases, I'd like to mention that I already
> have a fair amount of code in support of this proof of concept, including
> providers for raw linux fb, VNC and (as of 2 hours ago, thanks Guillaume!)
> a pure Java X11 provider; there is also embryonic work on an SDL provider
> to ensure we cover as many platforms as possible.
>> > Examples of usage include: implementation debugging, device
>> > emulation, multiple-head clone outputs/inputs, simultaneous
>> > multiple-peer output, etc.
> Example usecases:
> 1) Implementation debugging is one that is fairly simple to explain,
>   it becomes a tool for us to track down AWT/Swing issues by excluding
>   native resources as a possible error source. (Yes it introduces
>   another factor, but at least it's independent). This also allows for
>   some device emulation, screen sizes, pixel encoding, etc.
> 2) Realtime output/input on a device (say an N800 [2]) with
>   simultaneous output/input of the exact same screen contents on an
>   attached PC. This is in effect multiplexing two different devices onto
>   a single Java stack. Control of the device from the PC. Useful when
>   your touchscreen driver isn't written yet.
> 3) Distributed remote software agents exposing a VNC or X11 capable
>   UI. Easier to secure and to use than a fullblown VNC or X11 server on
>   a dedicated host. Easier to deploy too. This is in effect a
>   kernel+jvm+libc on any hardware. Including headless ones like a
>   router.
> 4) Point of Sale, The network is the machine, etc... lightweight PXE
>   images booting a rich Swing UI direct to their framebuffer. Small PXE
>   image, few external dependencies. For bonus points, let the client
>   decide which provider to load from a Jini cloud depending on need.
> 5) Multicast a single UI via VNC, kiosk-type advertising or
>   interaction: one window per terminal.
> Please let me know if I've left a few out.
> Thanks,
> Steph
> [1] awtswing, http://kennke.org/~roman/swing-based-awt.png
> [2] N800, http://www.nseries.com/n800
> [3] Maemo, http://maemo.org/

More information about the discuss mailing list