The BZDev class library supports discrete-event simulation, graphs and plotting, mathematical functions and numerical algorithms, 2D animation, 3D printing, writing graphics to output streams, integration of scripting with applications, additional Swing components, etc. The library uses 'factory' classes for configuring simulations and animations. An annotation processor makes it relatively easy to create a factory class. The code is partitioned into several Java modules. The dependencies are shown in the following graph (click on the module names as a shortcut):

All of these modules are dependent on the module org.bzdev.base, but only some dependencies are shown explicitly to reduce clutter: just enough so that the diagram will show at least an indirect dependency. Two modules, org.bzdev.dmethods and org.bzdev.parmproc, are not shown as these are used only for annotation processing.
For a more detailed description of this library, please use the following links:
- Library description (includes Compilation instructions and a Module/Library list).
- Factory API.
- Documentation for the ESP scripting language.
- Secure Basic Authentication (a description of a HTTP authentication algorithm that is simple to implement, very secure, and included in this library).
- An introduction to the BZDev Java class library [in preparation]. This book provides an overview of the classes provided by this library with coding examples.
- The ESP scripting language and its use with factory classes. [in preparation] This book describes the ESP scripting language, both its syntax and semantics, and shows how it is used with the factory classes provided by the BZDev class library. The book is an extended version of the ESP API documentation. ESP is essentially a subset of ECMAScript with a few constructs borrowed from Java and with a few additional operators. It was written because the Nashorn ECMAScript implementation has been removed from Java-15, and GraalVM does not support multithreading adequately for use with the BZDev library's simulation classes. One of the goals for ESP is stability: it can be used to configure simulations that may be re-run years after they were written.
- Programming BZDev named objects and their factories [in preparation]. This book describes how to create named objects as defined in the BZDev class library, and how to create the factory classes that create named objects.
- A scripting guide for the org.bzdev.roadanim package [in preparation].
The package org.bzdev.roadanim provides several classes that extend
classes in the org.bzdev.anim2d package to support animations showing
cars, bicycles, and pedestrians. This guide provides an overview
of these classes and specifically how to use them with the ESP
scripting language. The source code is available on
GitHub.
- A programmable bicycle-sharing simulation [in preparation]. This book describes a simulation that provides a realistic test case for simulation classes provided by the BZDev class library. At the time it was written, a number of cities and towns in the U.S. were experimenting with bicycle-sharing programs. The simulation shows that how these services were priced was at best dubious, so it is not surprising that many of these services had problems. The source code is available on GitHub.
In addition, several applications were written using the BZDev class library. As they were written, classes that seemed to be useful for other applications and that were a good match for those already in the library were added to the library so they could be shared with other applications. These programs are
- epts. This program is a graphics editor that
creates and edits two types of objects: points and paths. It can
also write a description of these objects to a file, using
templates to specify the form of the output. Built-in templates
can create
- SVG files.
- ECMAScript/JavaScript files or ESP files in a format usable by the simulations the BZDev class library provides.
- HTML image maps (the image above uses an image map created with epts).
- lists of path lengths or the areas of closed paths.
- geth. This program is a simple utility that issues HTTP requests and prints the headers in a response. It can also print the content if the content is text. The headers include all those in an exchange, including HTTP redirects. Headers can be set in requests as well, which is useful for analyzing web sites that base their responses on the browser or operating system in use. The source code is available on GitHub.
- webnail. This program can scale images (one or
more) to fit into a specified bounding box. For just scaling
images, the output can be in a variety of formats: single images,
a directory, or a zip file. In addition, webnail
can create a web site in one of four format:
- A web-site directory. The directory will contain an HTML file and several subdirectories containing images and two ECMAScript files, both used for navigation and to run slideshows.
- A web-site ZIP file. The ZIP file created contains the same files and directory structure used in the first option (a web-site directory).
- A directory for a web archive. This option creates a web-archive directory containing images, ECMAScript files for controlling a slideshow, and a servlet for cases in which multiple systems should show the same images at the same time.
- A web-archive (WAR) file. This option creates a web-archive file (WAR file) containing images, ECMAScript files for controlling a slideshow, and a servlet for cases in which multiple systems should show the same images at the same time.
libbzdev-java
.ServletAdapter
in a servlet.