Thanks John! I agree that in an IoT environment where you can have many devices, a central gateway and a fast local network, a solution based on remote display could work well.
Daniel On Jan 22, 2014, at 1:07 AM, John Smith <john_sm...@symantec.com> wrote: > Monocle is a very interesting and exciting development for the JavaFX team. > > I think that it is an avenue of approach which may help enable the > development of various innovative solutions, both in providing access to > JavaFX applications through traditional web UIs or providing remote GUI > access to myriad small devices which make up the Internet of Things. > > Ø Since WebSockets are part of Java EE I don't think this is something that > could be part of the standard JavaFX build > > Yes, I agree. There are some excellent existing WebSocket solutions for > Java, such as Tyrus https://tyrus.java.net/ and Kaazing. Though the > WebSocket protocol is simple to users, there are many tricky pitfalls in > creating a robust WebSocket server, so using those complete and well-tested > solutions is the best route. As the client app would actually be installed > on the server much like a normal JEE app, using a standard JEE lib is > perfectly appropriate I think. The tricky part (at least for me) would be to > take the VNC (or OpenGL) commands and tunnel them through a WebSocket system. > > Anyway, something to think about in my spare time. > > Thanks a lot for the replies and posting to the list Daniel. > > John > > From: Daniel Blaukopf [mailto:daniel.blauk...@oracle.com] > Sent: Tuesday, January 21, 2014 2:45 PM > To: John Smith; openjfx-dev@openjdk.java.net > Subject: Re: Monocle with VNC [was: Re: openjfx/8u-dev/rt: RT-35441 [Monocle] > Provide a VNC back-end] > > Hi John, > > On 01/22/2014 12:24 AM, John Smith wrote: > Would it be possible to develop a web based VNC client rendering to HTML > canvas that connects to the Monocle VNC server over WebSockets such as that > discussed in Kanaka’s answer here: > http://stackoverflow.com/a/3902817/1155209? > > I’m just interested in the feasibility of the approach as a basis for future > development of a potential 3rd party JavaFX app deployment solution outside > of JavaFX core. > I understand that this is probably not the primary reason the Monocle VNC > work was implemented, but I’m curious if it could be repurposed for this > mechanism. > Essentially, my goal here is to enable AppStreaming JavaFX > http://aws.amazon.com/appstream/ without requiring a proprietary amazon > solution. > > In your opinion, would such a solution be a feasible basis for developing a > distribution mechanism for JavaFX applications which does not require > anything on the client outside of an HTML5 compliant browser? > > It would absolutely be feasible, although the lag would probably be annoying. > Since WebSockets are part of Java EE I don't think this is something that > could be part of the standard JavaFX build, but Monocle allows for pluggable > screen implementations and it shouldn't be much work to modify VNCScreen.java > to do this. Alternatively we could put just enough of an implementation of > WebSockets in VNCScreen to be able to talk to the browser directly. > Fromhttp://www.websocket.org/aboutwebsocket.html the protocol doesn't look > complicated. Unless you need a secure authenticated connection of course, in > which case the answer would have to be Java EE. > > However, what would be 100x better in terms of perfomance would be to stream > the OpenGL commands to a WebGL client. We'd still have the lag though. We did > an experiment for a few days last month in the JavaFX team with marshalling > up OpenGL calls into a stream and sending them down the wire to a client > doing the rendering on another device, and the performance looked promising. > A bit like http://sourceforge.net/projects/virtualgl/, but without the video > stream. > > Thanks, > Daniel > > > Thanks, > John > > From: Daniel Blaukopf [mailto:daniel.blauk...@oracle.com] > Sent: Tuesday, January 21, 2014 12:53 PM > To: John Smith; openjfx-dev@openjdk.java.net > Subject: Monocle with VNC [was: Re: openjfx/8u-dev/rt: RT-35441 [Monocle] > Provide a VNC back-end] > > Hi John, > > This is a mostly complete implementation of Glass that instead of rendering > to the screen, renders to an offscreen buffer and serves the buffer up to > clients using the RFB protocol. So you should be able to connect to it with > most VNC clients, although I haven't been able to get it to work with desktop > sharing on the Mac. You can also provide mouse input to JavaFX using the VNC > client. > > To use (BTW, this is noted in the JIRA > https://javafx-jira.kenai.com/browse/RT-35441): > > Run with: -Dglass.platform=Monocle -Dmonocle.platform=VNC -Dprism.order=sw > > Connect with a VNC client to port 5901. I used TigerVNC > (http://sourceforge.net/projects/tigervnc/files/) since the OS X desktop > sharing client didn't like the 15-year old version of the RFB protocol that > VNCScreen.java implements. > > As noted in the JIRA, I think it would make sense to do what Dave Hill > previously did in Lens and make the VNC server an option in all embedded > back-ends instead of requiring the user to make a choice between having a > local display or a remote display. So there would be Linux framebuffer with a > VNC server option, EGL framebuffer with a VNC server option and headless with > a VNC server option. > > Thanks, > Daniel > > On 01/21/2014 08:46 PM, John Smith wrote: > What does the VNC backend for Monocle do and how can it be used? > > -----Original Message----- > From: openjfx-dev-boun...@openjdk.java.net > [mailto:openjfx-dev-boun...@openjdk.java.net] On Behalf Of hang...@oracle.com > Sent: Tuesday, January 21, 2014 5:48 AM > To: openjfx-dev@openjdk.java.net > Subject: hg: openjfx/8u-dev/rt: RT-35441 [Monocle] Provide a VNC back-end > > Changeset: ebf7575491e0 > Author: Daniel Blaukopf <daniel.blauk...@oracle.com> > Date: 2014-01-21 15:43 +0200 > URL: http://hg.openjdk.java.net/openjfx/8u-dev/rt/rev/ebf7575491e0 > > RT-35441 [Monocle] Provide a VNC back-end > > ! modules/graphics/src/main/java/com/sun/glass/ui/monocle/Framebuffer.java > ! > modules/graphics/src/main/java/com/sun/glass/ui/monocle/MonocleApplication.java > ! > modules/graphics/src/main/java/com/sun/glass/ui/monocle/headless/HeadlessScreen.java > + modules/graphics/src/main/java/com/sun/glass/ui/monocle/vnc/VNCPlatfor > + m.java > + modules/graphics/src/main/java/com/sun/glass/ui/monocle/vnc/VNCPlatfor > + mFactory.java > + modules/graphics/src/main/java/com/sun/glass/ui/monocle/vnc/VNCScreen. > + java > > >