JDSP is a library of digital signal processing tools written in Java aimed at providing functionalities as available in scipy-signal package for Python. The goal is to provide easy-to-use APIs for performing complex operation on signals eliminating the necessity of understanding the low-level complexities in the processing pipeline.
This is an open-source project under the MIT License and is free to use in commercial applications.
JDSP is written purely in Java. It has dependencies on 2 core libraries: Apache Commons Math and IIRJ both of which are also open source projects. It also uses XChart for plotting. As privacy concerns grow with time, the need for edge-processing becomes paramount. Java as a programming language is one of the most popular among both enterprises and hobbyists. Additionally, the Android OS supports Java and holds more than 80% market share. Hence, if any signal processing task needs to be done on-device, there is a need for a library which can perform such tasks. JDSP is the only library which has a comprehensive list of tools (close equivalent of scipy-signal from which it is inspired) capable of handling digital signal processing tasks in Java.
Matlab is a programming language designed for engineers and scientists. However, most often, Matlab is used as a testing ground for operations, and not in production. Matlab as a tool is extremely user-friendly and very intuitive and easy to use. It has simple one-line calls for complex operations like filtering and signal transformations. Although Matlab supports OOP, it is often not used during tests and research for convenience. Java strictly follows OOP and therefore the method calls in JDSP are slightly more verbose compared to Matlab. But most operations can be completed within 3 lines of code: creating the object, performing the operation, getting results. Further details for the usage is provided in the website and also in the Github Wiki.
JDSP binaries are hosted on Maven Central Repository and the documentation is hosted on javadoc.io. All of this is managed through the Nexus Repository OSS by Sonatype. Nexus is an open source tool for managing binaries and build artifacts. It also hosts these binaries for open source projects and creates a proxy repository which points to Maven Central. Since JDSP is hosted on maven, it can be pulled in as a dependency for Maven, Gradle Scala-SBT to name a few.
JDSP is an open source project. Open source is an important way for helping build and support a community, while building quality code for software people love. This project opens up all source code and allows redistribution in the form of source code as well as compiled form. The project is available under the MIT License.