Useful Third-Party Java Libraries
Over the coming months, I'll be adding links
to this page pointing to pages that describe useful (and fun)
third-party libraries for Java. Initially, my choices will
be based on the ones I've used while setting
programming assignments in the "Discrete Maths" and "Algorithms"
courses that I teach.
Each page will contain several complete Java programs that
illustrate how the library can be used, along with a local copy
of the libraries, and batch files for easily compiling and
executing the programs. There will also be links to the website
for the library, which will point to its API documentation,
tutorials, and the current versions of the libraries.
I'm using batch files to compile and execute the examples because
there's no need for anything more complicated. Also,
it's quite easy to translate batch code into shell scripts.
The local copies of the libraries will be stored as JAR files,
and will include all the dependencies necessary to get the examples
to compile and run. If a library's website doesn't include JARs,
then a great resource is JAR
Download.
Libraries (last updated Dec. 20th, 2022):
- Apfloat: an arbitrary precision arithmetic library that improves on Java's BigInteger and BigDecimal.
- Apache Commons CSV:
for reading and writing various styles of CSV files.
- Apache Commons Collections:
additional map, list, set and other data structures,
and related utilities.
- Java binding of Hunspell:
a fast, extendable spell-checker. I've used it here
for solving word puzzles (e.g. word ladders, grids, wheels,
and anagrams).
- ImageJ: a graphics application
and API with an emphasis on scientific imaging.
- Jacop: a constraint solver, and
a great way to solve logic puzzles.
- Java Embedded Python (JEP):
a great way to allow Java to use Python and its third-party
modules.
- JFreeChart: a charting library.
For something easier to use, see "Simple Java Plot" below.
- JGraphT: graph theory data
structures and algorithms.
- jSpace: tuple spaces
for parallel and distributed programming.
- JTS: 2D computational geometry.
- Jzy3d: a 3D scientific
charting library.
- lanterna: a library
for writing text-only GUIs, in the style of ncurses.
- libGDX: a gaming library,
but my focus is on using it to write applets.
- News API: a REST API for
searching and retrieving news articles from multiple
sources on the Web.
- Number theory: several
libraries that I've used for teaching number theory,
including Apache Commons Numbers, java-math-library, and Big-Math.
- Picocli: for
parsing command line options and parameters.
- Apache POI: for manipulating
Microsoft files.
- Simple Java Plot: a simple,
but very useful, plotting library, that's a lot easier to learn
than JFreeChart.
- SQLite and JDBC: how to use SQLite
from Java.
- StdDraw: a versatile but simple
2D drawing library.
- Apache Velocity:
a template engine that can easily generate a wide range
of text formats, including XML, JSON, HTML,
and Java code.
- zt-exec: a library for
running external commands/programs from Java. My examples
use Pandoc, SystemInfo, Powershell, netstat, Gnuplot,
and GraphViz.
- More libraries to come ...
Dr. Andrew Davison
E-mail: ad@coe.psu.ac.th
Back to my home page