You can write your canister logic using any language that compiles to Web Assembly. The most mature languages are Motoko, Rust, and C, but we’ve seen people in the community successfully build proof of concept compilers for other languages like AssemblyScript.
We do plan to support more agents, but our SDK team currently has plenty on our hands between now and launch.
I’d probably recommend using Rust or Motoko for your backend at this point, since I don’t expect Java support in the short-term.
Dart should probably be fine - I’m not an expert on it, but I think that Flutter can call out to either a Rust or a JS agent to make the needed calls for the meantime. I think that’s what most people are doing for now. Some discussion in this thread: Flutter for frontend - #18 by cryptoschindler