Stephan van Hulst wrote:The heavyweight components are implemented through native calls to the windowing system.
Note "windowing system", not "operating system".
Although some systems - notably Microsoft Windows - incorporate the windowing system as an integral part of the OS, that is not universally the case. In Unix/Linux, the windowing system was typically an X client (client and server have un-intuitively opposite meanings here). On the Commodore Amiga, the OS was in 3 parts - the task and resource managing Exec, the filesystem-managing AmigaDOS (written in BCPL), and the graphical subsystem, which provided graphics layering functions, graphics primitives, windowing functions, and the GUI desktop.
Unix-style OS's are often run without any windowing system at all. My own server farm runs that way. Saves system resources for more profitable functions. This does lead to some problems, however. Not only do GUI systems like Swing, AWT, and SWT depend on an underlying graphics infrastructure, so do things like webapps that generate charts and graphs. In such a case, the JVM has to be configured to run what is referred to as "headless graphics".
Although the JVM will invoke external graphics functions to render graphic objects and - where applicable, interact with an external windowing system, the graphics systems themselves almost always interact closely with the machine's graphics card. That's because modern-day graphics
cards are much more efficient at graphics rendering than CPU code and have been ever since the Amiga pioneered graphics co-processors with its "blitter" chip. Thus, you might put a high-performance graphics card in a headless system if that machine was responsible for generating lots of graphic images.