If you're just starting out, Head First Java is the way to go. Then expand your knowledge, look at things like Lombok, or go for one of the languages built on the JVM (Kotlin/Scala). Want insane performance out of the box? Look at Vert.X. There's a library for everything as the language has been around since '95.
If you want to learn functional programming, learn Rust or Haskell. Rust is more pragmatic and is used more than Haskell, but Haskell has more FP features.
I recommend against Go because it's not really FP, and it has a lot of language inconsistencies compared to Rust for example.
Second criteria would be a language which I knew an expert in. There are plenty of good languages, but when you are stuck or need advise, there is nothing like being able to call up your brother and 'discuss' how you plan to do things.
Portability is a nice feature, but with all the available virtual environments, it is less important. Although I must say to be able to occasionally program on my phone, during a boring meeting, would be nice.
Debugging is also a bliss.
answer, err := GetAnswer()
if (err != nil) {
return "Rust"
}
(but yes, you probably want Go)
There is a poll HN feature if you are curious
ohh, f# or Haskell