java without X11?

Scott Mitchell scott+lists.freebsd at fishballoon.org
Thu May 4 22:46:30 UTC 2006


On Thu, May 04, 2006 at 09:39:35AM -0300, Fernan Aguero wrote:
> +----[ To freebsd-java at freebsd.org <fernan at iib.unsam.edu.ar> (04.May.2006 09:18):
> |
> | Hi!
> | 
> | I was setting up a headless (no X11, no GUI) box and had to
> | install java (required by apache-ant and by a java code that
> | interacts with an underlying postgresql database).
> | 
> | I want this box to run only the base system (cut down to
> | only essential daemons/processes) and one application
> | (postgresql + associated perl/java layers).
> 
> [ snipped ]
>  
> | I know that a lot of java apps depend on GUI functionality
> | provided by the language, but is this java+X11 a thing that
> | cannot be separated? (i.e.  X11 is rooted too deep into
> | java) or maybe it could be separated and we could have an
> | optional WITHOUT_X11 in the various jdk ports?

The java binary in diablo-1.5.0_06 doesn't have a load-time dependency on
libX11.so or any other X11 libraries, nor libawt.so - I guess the JVM will
dlopen() libawt.so if it needs to do any graphical stuff.  As proof of
concept a simple "Hello, World" Java program compiles and runs just fine on
a machine with no X11 libraries installed.  I expect any program that
didn't use AWT/Swing would work just as well.

Interestingly libawt.so doesn't have any direct X11 dependencies either,
rather it depends on libmawt.so, of which several different versions exist,
in the jre/lib/i386/{xawt,motif21,headless} directories.  The xawt and
motif21 versions depend on various X11 libraries, but the headless version
does not.  It looks like setting the java.awt.headless property to true or
just having no $DISPLAY will cause the headless libraries to be used.  You
should be able to use AWT/Swing classes in any way that doesn't require
access to a real display - so loading any manipulating images should work,
but trying to say open a window will throw a HeadlessException.

Cheers,

	Scott

-- 
===========================================================================
Scott Mitchell           | PGP Key ID | "Eagles may soar, but weasels
Cambridge, England       | 0x54B171B9 |  don't get sucked into jet engines"
scott at fishballoon.org | 0xAA775B8B |      -- Anon


More information about the freebsd-java mailing list