Different tools have different advantages and Java is as suitable as many others. IOTA needs to prove that protocol is sound, so it doesn't matter if it's in Java, Rust, Go, Python... This point makes the author much less credible in my eyes.
That said, I steer clear of IOTA too. Relevant search terms for me are "IOTA roll your own crypto", "IOTA ternary logic" and "IOTA hash collision". And their whitepaper is indecipherable. Red flags all over the place, IMHO it's a scam.
What I don't get about Cardano is that it has almost NO use at all. The number of transactions per MINUTE can be counted using only your hands (every so often you may need to include your toes):
Cardano is a cryptocurrency written in Haskell with the goal of conforming to "high assurance" standards. Looks pretty promising, but like all 3rd gen cryptocurrencies, it is still early days (seems more functional than IOTA though.. no pun intended)
I wonder if something like OCaml would be a good choice. It's a safe language with good performance plus it gives you an easier route to formally verify the important parts of it. Cross platform is going to be trickier though.
Hmm, interesting. I wasn't sure if they were only name dropping that formal verification was possible but they say their developers have backgrounds in it. People mention about making Ethereum more secure using formal verification for example but it's not something you can just do as an afterthought.
That said, I know some great software can be produced in Java, ElasticSearch been one on top of my mind.
If Security is the goal, nor CPP nor Java is great. Proven Haskell or Rust might be more of a valid option.