JUCE will not stop you from linking the DDEML into your application. That way you can interoperate with existing DDE aware software (I haven’t done that).
However, using this restricts your application for use on windows only.
@matkatmusic posted an abstraction JUCE provides. It communicates via NamedPipes or TCP sockets. This might be an alternatice, if you only want to communicate with your own programs or other JUCE made software.
It is also easy to implement the counterpart in different languages, as it is very low level. It simply adds 8 bytes to each packet, 4 bytes being a magic number for identification and 4 bytes as the number of bytes for the following packet.
We use this e.g. to communicate with an electron (node.js) frontend.
The Mac version (or one of them) is the XPC API: https://developer.apple.com/documentation/xpc
Another version is to use the LaunchServices, which is used to send data to another application to let it deal with it.
It can be used for more tasks than only open, save or print: https://developer.apple.com/library/content/documentation/Carbon/Conceptual/LaunchServicesConcepts/LSCConcepts/LSCConcepts.html
This is e.g. used for FxPlug plugins for FinalCut etc.