views:

320

answers:

2

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.

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 Google GWT) and for desktop capturing, desktop presenting, audio and video I want to use Java applets.

The server side runs using Java Servlet technology with a database back-end (Hibernate and a SQL based data source). For data streaming my plan is to use RTP/RTSP transport over UDP (for desktop data the internal protocol will be VNC (RFB) but the transport will be RTP itself). For audio and video RTP is used for the transfer.

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.

My question is - is my technology decision correct? I mean, I decided to go pure Java because of multi-platform support. Nowadays we have Silverlight which have more advanced desktop support, but it is limited to only one platform (Windows).

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?

For actual screen capture I'd start with AWT 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 FPS for screen capture so I believe Java Robot will make it.

+1  A: 

Check out Adobe AIR and JavaFX.

Gandalf
Flex? That's from Adobe. You probably meant to say JavaFX :)
BalusC
Correct, edited to reflect this.
Gandalf
+1  A: 

Java applets can do it, but they're a bit legacy nowadays. In Java terms, you nowadays also have the choice of Java Web Start (the better Google keyword is JNLP) and JavaFX. If you don't shy away from learning a new language and wanted to have a real RIA, then go for JavaFX. Otherwise, Java Web Start A.K.A. JNLP is a fine choice. With Java you can just do everything as if it is a client application, as long as it's all within the borders of the security restrictions.

Here are some tutorials of use: JavaFX tutorial and Web Start tutorial.

BalusC