DEV Community

Md Sazzad Hissain Khan
Md Sazzad Hissain Khan

Posted on

jSciPy: A Practical SciPy-Inspired Scientific Computing and Signal Processing Library for Java & Android

Python’s SciPy ecosystem dominates scientific computing, but Java developers working on JVM backends, Android, or embedded systems lack an equivalent, modern, signal-processing-focused library.

jSciPy aims to fill that gap.

jSciPy is an open-source Java scientific computing and signal processing library, inspired by SciPy, designed for JVM and Android, with a strong focus on DSP, transforms, and numerical utilities.


Why jSciPy Exists

Java has excellent general-purpose math libraries, but DSP-heavy workflows still face problems:

  • No SciPy-like signal processing API in Java
  • Fragmented FFT and filter implementations
  • Android incompatibility of many JVM math libraries
  • Heavy abstractions for simple numerical tasks

jSciPy focuses on practicality:

  • Minimal dependencies
  • Clear APIs
  • Android compatibility
  • SciPy-like mental model for engineers switching ecosystems

Core Capabilities

Signal Processing

  • FIR and IIR filters
    • Butterworth
    • Chebyshev
    • Elliptic
    • Bessel
  • Zero-phase filtering
  • Detrending
  • Peak detection
  • Median filtering
  • Savitzky-Golay smoothing

Spectral Analysis and Transforms

  • FFT / IFFT
  • STFT / ISTFT
  • Hilbert Transform
  • DCT / IDCT
  • Spectrogram
  • Periodogram
  • Welch PSD estimation

Window Functions

  • Hann
  • Hamming
  • Blackman
  • Rectangular
  • Kaiser
  • Bartlett
  • Triangular

Numerical Utilities

  • Convolution and correlation
  • Resampling
  • Interpolation (linear, cubic spline)
  • RK4 ODE solver

JVM and Android First

jSciPy is designed to be Android compatible and avoids heavy native dependencies, making it suitable for:

  • Android applications
  • Wearables
  • Embedded JVM systems
  • Edge devices

Installation (Gradle)

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.hissain:jscipy:VERSION'
}
Enter fullscreen mode Exit fullscreen mode

Comparison: jSciPy vs SciPy

Feature SciPy (Python) jSciPy (Java)
Language Python Java
Signal Processing Yes Yes
FFT / STFT Yes Yes
Welch PSD Yes Yes
DCT Yes Yes
Android Support No Yes
Native Dependencies Often No
Runtime CPython JVM

Comparison: jSciPy vs Apache Commons Math

Aspect Apache Commons Math jSciPy
Focus General math Signal processing
DSP Filters Limited Extensive
FFT Basic Advanced
Android Friendly Mixed Yes
SciPy-like API No Yes

Comparison: jSciPy vs EJML

Aspect EJML jSciPy
Focus Linear algebra Signal processing
FFT No Yes
Filters No Yes
DSP Tools No Yes
Matrix Operations Excellent Minimal

Typical Use Cases

  • Audio signal processing on JVM
  • EEG and ECG analysis
  • Android sensor data processing
  • Embedded DSP pipelines

Design Philosophy

  • Clarity over abstraction
  • Practical DSP focus
  • Minimal dependencies
  • Engineering-first design

Final Thoughts

If you work with signal processing on Java or Android, jSciPy provides a practical, SciPy-inspired toolkit that has been missing from the JVM ecosystem.

Top comments (0)