I've been working on some modules for the Ghidra reverse engineering tool.
Ghidra is written in Java, which I'd always avoided when I was more actively programming so this is an opportunity to learn it while in semi-lockdown.
Amstrads and Spectrum +3's both used different partly-compatible extended variants of the CP/M disk layout.
DSK is a disk image format for representing standard disks in this family, regardless of the variants as mentioned above. EDSK is an extension the DSK that can also represent non-standard disks such as those with copy protection. Basically DSK is compatible with the OSes that used these disks whereas EDSK is compatible with what the floppy drive hardware could do at a low level.
There are tons of Amstrad emulators around and even more Spectrum emulators. But only a fraction are in Java, and not all support floppy drive emulation. And I suppose some are not open source.
I hunted for any public Java libraries that can handle the disk layout, the disk image formats, or both. So far I haven't found one but I'm new to Java so might not be good at finding them. A stronger possibility is that one of the Java emulators includes some modular code for those functions that I could turn into a library or adapt in some way.