The answer to this adds an additional layer of complexity. All programming languages are pretty simple things at their core, you have the ability to create functions (which you can think of as verbs or actions that may or may not take an input and may or may not return something when it’s done) and you have data types like: booleans (true/false), integers (whole numbers), floats(numbers with decimals), strings (a sequence of letters/characters), and collections of those data types. For example one type of collection is an array (called a list in some languages). You might have an array of integers like [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]. Lastly you can combine these basic types to create structures and/or objects that represent some concept with multiple properties/fields. So you might have a person object with a firstName string property, a lastName string property, and a shoeSize float property, a boolean property called isAlive and an integer property for that person’s hitPoints. There might be a function (remember it’s like a verb or action) associated with that person called receivedImpactFromFallingAnvil() that has the effect of decreasing the person’s hitPoints by a random number between 6 and 8. If that causes the person’s HP to fall to 0 or below, then it will set the isAlive boolean to “false.”
You can use these objects to make even more complex objects, and so on. The result of this is that people create and share frameworks that allow you to do useful stuff without writing every little detail from scratch. You don’t have to draw each pixel point-by-point and can instead use a drawing framework that someone wrote and call a function in the framework that might look like drawWindow( 0, 0, 300, 500 ). This will create a new window at origin (0, 0) with a height of 300 and a width of 500. You don’t have to understand how the machine is rendering that window onscreen, only how the function is supposed to be used. I hope it’s clear how that simplifies things. If everyone was always trying to reinvent how to make a window all of the time, nothing would get done. Instead someone smart figures out how the window code should work, and then they publish it for everyone to use in a framework.
I’m not very familiar with Java, but I know there are many very popular frameworks that exist for it. So when people say “Java is good for mobile,” what they mean is there are some good mobile frameworks written in Java that you can use to make mobile apps. In this particular case, Android apps are written in Java with Google’s Android frameworks. There are probably many server frameworks for Java that allow you to write server Java code without having to reinvent the wheel that probably take into account the best security practices, etc and you can just trust the framework and make your program.
As I understand it, Java is a decent language. It was very popular in the late 90’s to the early-mid 2000’s. As a result there are many people who know it. That said, there is nothing particularly remarkable about it that I’m aware of, other than being widespread. If you’re researching where to start with programming, I would encourage you to take a look at Python first. It’s a “clean,” “simple,” and “elegant” language that many schools use as a first language (including MIT). It’s interpreted so it’s a bit slower and you’re not going to write a high performance first person shooter in Python, but there are a bunch of frameworks for writing games and web development with Python. Furthermore, by the time you’re ready to write performance critical code, you’ll be able to learn new programming languages much more quickly (so don’t get too hung up on performance in the beginning).
Hope that helps.
@jerv LMFAO