JDxpc is a reimplementation of dxpc(Differential X Protocol Compressor) in pure Java and encrypts the compressed data stream in SSL.
dxpc is an X protocol compressor designed to improve the
speed of X11 applications run over low-bandwidth links
(such as dialup PPP connections).
More detailed descriptions about dxpc are available at its
Here, instead of listing explanations,
Alan Cox's comments about dxpc on
Boardwatch Magazine,February,1998 are quoted.
"... Dxpc is the alternative most people prefer.
These systems act as proxy X11 servers and
compress datastreams by well over 50 percent for normal requests,
often reaching a reduction to 25 percent of
the original bandwidth usage.
With dxpc, X windows applications are quite usable over a 28.8 modem
link or across the Internet."
- JDxpc is in pure JavaTM.
- JDxpc is under LGPL.
- JDxpc is compatible with dxpc-3.7.0(the newest version of dxpc is 3.8.0).
- The compressed X protocol stream is encrypted in SSL.
To use this functionality,
Java2 and JSSE(Java Secure Socket Extension) are required.
- JDxpc support MultiClientProxy.
This functionality allows to run multiple client proxies on a server
in one process. The MultiClientProxy has been developed by Marcus Schiesser. Check README.MultiClientProxy.
The server proxy and the client proxy have been implemented.
JDxpc is now free from dxpc binaries.
How To Try
Suppose that you are in front of a machine, named "local", on
which an X server is running and you want to run x clients on a
machine, named "remote". Try,
If "remote" is a big endian machine, JDxcp may not work correctly.
- on remote: java com.jcraft.jdxpc.ClientProxy &
- on local: xhost +localhost
- on local: java com.jcraft.jdxpc.ServerProxy remote
- on remote: export DISPLAY=localhost:8.0
- on remote: xlogo &
- on remote: xterm &
Encrypting the Compressed Data Stream
JDxpc encrypts the compressed data stream between proxies by
JSSE(Java Secure Socket Extension). Check README.
Needless to say, JDxpc has been based on the awesome works of
the dxpc authors.
Many thanks to them and many contributes of dxpc.
- Brian Pane(email@example.com) is an original author of dxpc.
- Zachary Vonler(firstname.lastname@example.org) is a current maintainer.
Particularly, we would thank to Brain Pane,
who kindly allow us to distribute JDxpc under LGPL.
Now, JDxpc has bee provided to the world on demand
with WiredX(pure Java X server).
JDxpc 0.0.6 is available.
- In current version, some inefficient code are included;
for example, in marshaling operations. We will improve them.
- JDxpc encrypts the data stream and this functionality depends
on the implementation of JSSE. At present, Sun provides its
reference implementation and some vendors has announced that
they will release their own implementation, but it seems
they are not 'free'. So, the current situation is almost same
in the early days of KDE, which had depend on 'proprietary' Qt.
We want to change this situation.
If we have time and abilities,
we will try to implement JSSE in free.
- We have planed to improve compression algorithms.
JDxpc will be downloadable on demand, so algorithms will be
changed easily. This point is an advantage to dxpc and LBX.
Comments/suggestions are accepted at