Version 1.0[Download] [How To] [JavaDoc]
Important: VNCj has very limited support for serving the operating system desktop. A number have people have thought they could use VNCj to serve the desktop from an applet. That would be great for help-desks but, alas, it won't work well due to Java's cross-platform limitations. If you are looking for a desktop remote control solution, you should install the dedicated VNC server for your operating system.
What does it do?Using VNCj, you can create a full graphical user interface (GUI) in Java, using Swing and AWT, and immediately export it to anyone on the network with a VNC viewer. Viewers are essentially dumb terminals that supply a graphic display, a keyboard and a pointing device, and are available for almost any operating system and platform (including Java). In fact, VNCj contains a tiny web server that can serve the Java applet to any Java-enabled web browser. Multiple users can connect at the same time and will each have their own user interface, and can also share a single session. VNCj also makes use of the AWT Robot class (introduced in JDK 1.3) to allow limited control of the operating system desktop.
What is VNC good for?
Dumb terminals solve many of the problems of distributed applications by exporting only the user interface. Because the application runs on a single machine, its data is secure, development is straightforward, and deployment is as simple as providing the tiny VNC viewer. Even if you plan to have the client run a full-blown distributed application in the future, VNC can let you quickly test it without going through distributed development woes.
What is VNCj good for?
While VNC is useful for remote controlling your desktop, it can also be used to remote control applications in certain situations:
Note that VNCj, and VNC for that matter, are bandwidth and CPU vampires. This is not an efficient distributed solution as far as resource use is concerned, but its straightforward deployment may be just what you need. If your clients support Java, check out my more ambitious pet project, Java URL, that allows running a full Java application at the client securely and without installation, with minimal resource use. You may also want to take a look at jVNC Server, another 100% Java VNC-based application server, based on a different scheme. If you can allow text-based clients, you should check out my 100% Java telnet server toolkit, telnetj.
How do I get it?
You may download VNCj with its full source code as long as you agree to the terms of GNU Lesser General Public License, which basically gives you complete freedom to change and adapt the code to suit your needs, though you are required to continue to redistribute it under the same license. The latest release is available here. Read the status below for more information.
Source code is available at GitHub. Please report bugs there, too!
How do I use it?
Important! You can run servers and viewers on the same machine, but performance will be worse than on a local network! The reason is that viewers aren't designed for loopback connections. They keep polling the socket for updates, but because these updates come too quickly, they are overwhelmed. In fact, VNCj adds a small delay for loopback connections, otherwise they are too sluggish to work. Do your testing through the network for more realistic results.
Right now, VNCj requires the Java 2 Platform, Standard Edition (JDK version 1.4.0).
Demo servers are available in the distribution (vncj-demo.jar) with a batch file for Windows (vncj-demo.bat) and a properties file (vncj.properties) where you can define passwords and connection restrictions. The default password for all demo servers is "test". There is a demo for each of the six VNCj models:
All demos support shared sessions. For example, the shared lightweight model demo, when shared, acts as a network whiteboard.
How do I contact you?
My name is Tal Liron, and this is one of my pet projects. Contact me at "tliron at threecrickets dot com" if you want to help in development or report a bug, or to pay me for product support and consulting.
Known problems and limitations:
Latest version tested on:
"Oracle" and "Java" are registered trademarks of Oracle and/or its affiliates. RealVNC®, VNC®, RFB® and deskhop® are trademarks of RealVNC Limited and are protected by trademark registrations and/or pending trademark applications in the European Union, United States of America and other jurisdictions.