The best programming language to learn to expand your knowledge is one that is outside your current knowledge.  Java, perhaps, but C++ is further outside your knowledge since it can go more low-level than Java can.  Rust might be at the same level as C++, and might be easier to learn.<p>Or, you could go up - to higher-level instead of lower-level.  Lisp or Haskell might be worth your while.