AFAIK Java has access to all the same CPLEX libraries that C++ does. There are some low-level things you can do only in C (and maybe C++, using C code), but not in any of the other APIs. I've made it 20 years or so without needing any of them. I think C# has access to the same libraries that Java does.
I code exclusively in Java (and some R), so I'm biased toward Java. That said, if you are not coming from some other programming language (such as C++), Python may be the easiest to learn. Because it is less structured (and less verbose) than Java, you can probably code up heuristics faster in Python (meaning less programmer time, not faster execution). One reason I stick with Java is that it is very good at protecting me from myself. Things that would raise compiler errors in Java will fail silently in Python. For instance, if "foo" is an instance of a Java class with a field named "bar", typing "foo.bar" is fine, but if I type "foo.bear" either the IDE or the Java compiler will complain. In contrast, if I type "foo.bear" in Python, Python will think I want to attach a new field named "bear" to "foo", and will incorrectly assume that I know what I am doing.
#CPLEXOptimizers#DecisionOptimization