title: WEB based application with desktop integration - technologies?
body: <p>This is a general question concerning technology decisions for a product development. 
  My aim is to develop a web based remote support (desktop sharing application) with audio and video communication. </p>
  
  <p>My ideal solution would be to develop it as web product meaning that the client side always run in the browser. Client technology would be JavaScript (using <a href="http://en.wikipedia.org/wiki/Google_Web_Toolkit" rel="nofollow noreferrer">Google GWT</a>) and for desktop capturing, desktop presenting, audio and video I want to use <a href="http://en.wikipedia.org/wiki/Java_applet" rel="nofollow noreferrer">Java applets</a>. </p>
  
  <p>The server side runs using <a href="http://en.wikipedia.org/wiki/Java_Servlet" rel="nofollow noreferrer">Java Servlet</a> technology with a database back-end (<a href="http://en.wikipedia.org/wiki/Hibernate_%28Java%29" rel="nofollow noreferrer">Hibernate</a> and a SQL based data source). For data streaming my plan is to use <a href="http://en.wikipedia.org/wiki/Real-time_Transport_Protocol" rel="nofollow noreferrer">RTP</a>/<a href="http://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol" rel="nofollow noreferrer">RTSP</a> transport over UDP (for desktop data the internal protocol will be VNC (<a href="http://en.wikipedia.org/wiki/RFB_protocol" rel="nofollow noreferrer">RFB</a>) but the transport will be RTP itself). For audio and video RTP is used for the transfer. </p>
  
  <p>My basic version (prototype) will work using a relay server meaning that the clients always connects to the server (logon, authentication, session control) and the server always relays the data between peers. </p>
  
  <p>My question is - is my technology decision correct? I mean, I decided to go pure Java because of multi-platform support. Nowadays we have <a href="http://en.wikipedia.org/wiki/Microsoft_Silverlight" rel="nofollow noreferrer">Silverlight</a> which have more advanced desktop support, but it is limited to only one platform (Windows). </p>
  
  <p>I also fear of Java support for audio/video technologies. I have seen JMF (Java Media Foundation) which seems to have support for RTP/RTSP, audio and video capture/display but this package look very outdated. What do you think about it?</p>
  
  <p>For actual screen capture I'd start with <a href="http://en.wikipedia.org/wiki/Abstract_Window_Toolkit" rel="nofollow noreferrer">AWT</a> Robot class. I know that for high performance desktop capture more low level techniques are necessary like API hooking or mirror driver, but my prototype aims to provide 1 <a href="http://en.wikipedia.org/wiki/Frame_rate" rel="nofollow noreferrer">FPS</a> for screen capture so I believe Java Robot will make it.</p>