After looking into a [related post on Stack Overflow](https://stackoverflow.com/questions/25449/how-to-create-a-pluginable-java-program), I found there to be a variety of different tools at my disposal to do "plugin" style development. First, I was close with "API" but the correct solution is an "SPI" or Service Provider Interface. I found a very good post describing the difference [on Stack Overflow](https://stackoverflow.com/questions/2954372/difference-between-spi-and-api?rq=1). To summarize: API is a set of classes/interfaces/methods that you CALL and USE to achieve a goal. Compared to a SPI which is a set of classes/interfaces/methods that you EXTEND and IMPLEMENT to achieve a goal. There are many ways I am still looking through to find the right solution for me, but it seems that using Java's `ClassLoader` or `URLClassLoader` will be the way to go. Oracle provides a great tutorial on how to implement this [here](https://docs.oracle.com/javase/tutorial/ext/basics/spi.html). There are many tools out there that can provide support for this such as [Apache Aries](http://aries.apache.org/modules/spi-fly.html) and [OSGi](https://www.osgi.org/).