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. This library, and several applications that use it, can be installed by visiting
https://billzaumen.github.io/bzdev/and following the instructions provided there. The location of the Debian repository is temporary—it is provided for initial use with a presumably small number of users.
The library uses 'factory' classes for configuring simulations and animations. Annotation processor makes it relatively easy to create a factory class and provide support for dynamic methods in which the types of a method's arguments are determined at run time instead of compile time. It also provides a Java-specific scripting language (ESP—Expression Sequence Processor) that can be used to run simulations and animations. It also provides an implementation of a secure authentication algorithm called Secure Basic Authentication for use with web servers.
The library is provided as a series of Java modules, each with its own JAR file. The source code is available on GitHub:
https://github.com/BillZaumen/libbzdev
All of the module and package names start with
org.bzdev
, which was chosen mainly for brevity.
There are also several applications and additional class libraries based on the BZDev class library. The more complex applications have web pages describing them. The libraries do not as the API documentation can be downloaded as part of an installation. These applications and libraries include
https://github.com/BillZaumen/cvrdecode/
https://github.com/BillZaumen/ecdb/
https://github.com/BillZaumen/epimodel/
https://github.com/BillZaumen/epts/
https://github.com/BillZaumen/evdisk/
https://github.com/BillZaumen/geth/
https://github.com/BillZaumen/osg-batik/The current package includes a stripped-down copy of Apache Batik because of an issue with Java modules: the Batik code duplicated some XML-related classes from packages whose names start with org.w3c and those classes cause a conflict that prevents the use of the standard Batik JAR files as Java automatic modules. When that issue is resolved, libosgbatik will be modified so that it just contains the classes specific to the
libbzdev
modules.
org.bzdev.anim2d
Java package. This package is particularly useful in the event of
a car accident where an animation would help describe the situation
(the author wrote it after being involved in a "fender bender" caused
by an aggressive drive trying to pass by using a shoulder while the
author was making a right turn from a right-turn-only lane onto a
street with only a single lane in each direction).
For the source code, please visit
https://github.com/BillZaumen/librdanim/This library contain 1866 lines of source code (augmented by 3768 lines of code generated by an annotation processor used to create classes supporting factories). It is short enough and straightforward enough to be used as an example.
https://github.com/BillZaumen/libbikeshr/
https://github.com/BillZaumen/QRLauncher/
https://github.com/BillZaumen/webnail/A Docker container can run webnail's internal web server. The web page
https://hub.docker.com/r/wtzbzdev/webnailcontains instructions.
While there is extensive API documentation, there are also several books currently in preparation or being planned that provides more of a tutorial.
transfertest.jar
is
placed, run the command
To run the utility, useln -s /usr/share/bzdev/libbzdev-desktop.jar .
orjava -jar transfertest.jar
The output can be printed or saved in a file. The 'default' option changes the text field representing the drop location to an uneditable text field and replaces its transfer handler. Without this option, new text may appear in the text field when a drag and drop operation completes.java -jar transfertest.jar default
https://github.com/BillZaumen/utils/
Besides providing a name, the adjacent figure shows an orbit around a black hole (no electric charge and not spinning), with color changes denoting redshifts due to both the relativistic Doppler effect and time running at different rates at various distances from the center. It was produced by using the BZDev class library to
Readers may find the design kind of "old fashioned" as it uses hand-written HTML with a style sheet to control the layout, font-sizes, colors, etc. It was designed to load quickly (only a single, small image), and to be fully usable with a small screen width. That's useful if you are using an adjacent terminal window.