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'
}
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)