I've tried some of the libraries for Java, didn't like the way the author programmed them so just ended up using the most relevant part which was the NPUB/NSEC key pair generation and the function to verify signatures on the JSON messages.
The rest of the protocol isn't difficult since you basically just need to send JSON back and forth. The advanced options are complex but they're basically exotic cases for the most part.
I've enjoyed NOSTR a lot but feel that the definition of "relay" has been lost in recent times and NOSTR relays are today a set of huge servers that host data and act as databases, rather than the original goal of just connecting people in P2P style.
For my apps I'm developing a platform where relays go back to the original definition of "relay" and devices connect to each relay as a connecting bridge to engage in P2P between themselves using webRTC and bluetooth.