Java Structure Viewer  
Steffen Weber 1999


JSV runs also on Linux It can also calculate Xray diffraction intensities. The Diffraction Viewer module XRDL allows the 3D/2D display of the diffraction pattern. You can view 0.layers while rotating the 3D pattern in real time or scan along some axis to see higher order layers only. (very useful for people interested in precession or electron diffraction simulations !) Also Laue patterns are possible in real time rotation. (useful for finding effect of misalignment)


This page introduces JSV (Java Structure Viewer) , which I am presently developing as a stand-alone application. In order to run it you will need to have a Java Virtual Machine (JVM) installed on your computer wich can be downloaded for free in form of Sun Microsystem's JDK 1.2 . Then you can use either the "java" command or the "jre" (Java Runtime Environment) command to execute JSV. 

You might ask "why Java and not VRML?", since everybody knows that VRML gives very nice display quality for crystal structures. Well, it has some disadvantages, too. It is easy to convert a set of cartesian data into VRML data, but if you only have unit cell data, then you need some software to generate the atom positions first. Some commercial programs do that (e.g.: ATOMS). VRML can be viewed in a webbrowser with a VRML plug-in, which you need to install first or with a separate stand-alone VRML viewer (GLView3.6).  When viewing VRML you are not able to measure atom distances and angles by clicking at them or switch the display of atom labels on and of. Therefore if one does not only limit oneself to simply displaying a structure a separate program becomes necessary. That's why I am writing JSV.  I personally want to use it for displaying quasicrystal structures where at least 1000 atoms might be needed for a representative region. Using the VRML browsers I found it annoying that I cannot switch to orthonormal projection. For so many atoms this is a very welcome feature.

One of the major tasks for future updates will be to implement the new Java3D libraries which will enable JSV to display real 3D-graphics (similar to VRML) in contrast to the 2D- or pseudo3D-graphics it uses now.

Any comments and suggestions on JSV are welcome. User feedback is desired so that I see if there is any interest in JSV at all, which might be a motivation to speed up my efforts to improve it. After all, JSV is only one of several hobby projects of mine.

The Java codes in this package are obfuscated to prevent reverse engineering.

Click here to see screen shots of JSV's components

Download links

download Java Interpreter

download Java3D for JDK1.2

JSV's HTML-documentation
(these docs are also included in the JSV package)

download JSV1.07 (previous version)

download JSV1.08lite


Main features of JSV
  • runs on Windows, Solaris, Linux
  • accepts input data for asymmetric unit cell, full unit cell or cartesian coordinates
  • all spacegroup symmetries included for generating atom positions
  • atom display modes: shaded spheres, discs, circles
  • stereo pairs
  • coordination polyhedra
  • real time rotations by mouse drags (use economy mode if necessary)
  • shifting and zooming by mouse drag
  • measuring distances and angles by clicking atoms
  • removing atoms by mouse clicks
  • optional sliders for atom radius factor, bond radius, zoom and perspective factor
  • inputfile editor
  • periodic table for radius and atom color settings
  • output of PostSript, VRML1.0, VRML2.0, GIF, JPG
  • simple bond creation (by clicking at atoms)
  • show spherical regions around a selected atom (study site environment)
  • select any atom as rotation center
  • 3D/2D X-ray diffraction patterns (real time rotation and layer scanning) + Laue pattern
  • Stereographic projections onto Wulff-net
  • unit cell visualizer (based on my JCELL applet)
  • periodic table with basic elemt properties (based on my JPT applet)
  • direct printing support under Windows/Solaris (raster image, spooling is quite slow)
  • new in JSV1.07
    • external Java3D window (you need to install the Java3D API)
    • search and display of interstitial spaces (search options include radius,neighbours,coordination)
    • calculate the radius of a hole at a given position
    • import of several structure file formats: MICRO-POWD (*.pwd), POWDERCELL (*.cel), FAT-RIETAN (*.cif)
    • an additional JPG output routine (using JDK's own JPG encoder)
    • stick bar diagram in the XRDL modul (2theta positions)
    • file history list, and save size and location of JSV on screen
    • interstital viewer modul
    • powder diffractogram viewer modul (MICRO-POWD's *.cmb files and MDI's *.mdi files)
    • difference plot viewer modul (FAT-RIETAN's IGOR files)
    • individual bond styles and colors
  • new in JSV1.08lite
    • fixed bugs (cell range, color PostScript, history)
    • new polygon menu for adding polyhedra manually
    • new shading for spheres (onscreen and PostScript)
  • new in JSV1.08
  • new: imports SHELX, ICSD, PDB, MOL
  • new: POVRAY file output
  • new: generates chiral nano-tubes (C, BN) !!!
  • new: generates nano-cones (C,BN) !!!
  • new: provides and imports Fullerene library !!!

filename extensions

JSV input files DO NOT NEED to have a file extension (eg. *.jsv) . However I recommend to use them, since that allows you to associate these files with jsv.bat (under Windows) for automatically starting JSV when you double click a *.jsv file. The *.SDF files (Structure Description File) which are created by JSV NEED the extension *.SDF !


At present JSV only supports tetrahedra and octahedra. (squares, cubes, triangles may be created for VRML output, but they will be incorrectly displayed within JSV)

  1. click here to see how to make tetrahedra
  2. click here to see how to make octahedra

You may also add polyhedra manually (not generated) using the new menu: Polygons . Then polyhedra such as cubes or square pyramids can be used also. I used this technique to create the High-Tc superconductor gallery.

update information


Please let me know if anyone of you has tested JSV successfully on SOLARIS or a LINUX distribution other than RedHat5.2.

1. First download the file jsv108lite.zip or jsv108lite.jar using the links above.


If you use the zip file then just use WinZip to install JSV1.08lite.

If you use the JAR file then put jsv108lite.jar on your hard disk in a directory of your choice.
Go to DOS prompt in that directory and type "jar  xvf  jsv108lite.jar" which will create the directory JSV1.08lite and extract all individual files including some subdirectories
(you may delete the directory META-INF/ which is created by jar)

(you need to have JDK1.2 on your machine for the "jar" tool, which means the jdk1.2/bin directory has to be in your PATH)

3. then read the file README or start by executing jsv.bat (corresponds to "java -cp jsv.jar JSV")

Note : A major criterion for performance of a JAVA program is RAM. You need a minimum of 32Mb RAM, although 64 is better.

Hint: On some systems like LINUX the JVM (Java Virtual Machine) may  use a default heap memory size of only 12-14 Mbyte. If you have more RAM then you can specify new minimum and maximum heap sizes using the -Xms and -Xmx options (eg. java -Xms12m -Xmx32m JSV , for using 12-32 Mbyte) As mentioned above you may also use the  jre  command instead of the  java  tool.  

Windows: Windows users may just execute the provided batch files to start JSV or optionally other individual modules. You can create desktop shortcuts and associate JSV inputfiles with the jsv.bat so that double clicking a *.jsv or *.SDF file automatically starts JSV.

Performance : Java is an interpreted language and therefore slower than native code. You need at least a 166 MHz CPU, I guess. I use a 266MHz & 300MHz Pentium II computer , and I am satisfied with the performance. Of course that depends on the number of atoms,bonds and polyhedra that you display. If rotations are too slow you should switch the bonds and polyhedra off while rotating or use the economy mode.

Restrictions : JSV1.07 only allows tetrahedral or octahedral coordination polyhedra. The maximum number of atoms and bonds is set to 5000.

GIF output examples

gradient background, spheres, labels

three interpenetrating icosahedra (polygons manually added, cut atoms invisible)

some of the different bond styles

see galleries generated with JSV1.08 :