Java is one of the computer programming language, few people say it's a middle level language and others say it's a high level language. According to me(might be I am wrong) it's a high level language, considering the many automated features of java makes it's as a high level programming language.
Java is developed with an aim of write once and run anywhere, which makes java is a very unique compared to any other programming languages. In the sense, compiled java program basically a byte code which instructs the JVM to perform what is the developer intended to do so.
Little bit confused in the above explanation, let me rephrase it. Lets suppose you have developed an application over the windows operating system and you expect to run it in Linux Operating Systems but there will be a big hurdle from one operating system to other operating system in terms of interpreting the instructions, which makes you to rewrite the entire application to run on the different operating system.
Java has a solution to the above problem is nothing but JVM(Java Virtual Machine), we deal more on the JVM in later sections(for now let's keep it as a JVM only). Coming to the problem of running application in different operating system has a solution, the solution is nothing but a Java Language. In the sense if you have written an application in java programming language then it can run in all the operating systems without changing any part of the application
Java makes to run the application in all the platforms with the help of JVM(Java Virtual Machine) which makes java is a platform independent language, meaning that Java Converts written application into byte code, which in terms instructions to the JVM only not for the Operating Systems.
JVM interprets the byte code and converts it into machine level instructions and perform the designated tasks. Meaning that every platform will have different JVM, lets say windows will have different JVM and Linux will have a different JVM but all these JVMs understands the byte code and converts the byte code into machine level instructions.
The byte code is nothing but compiled java application, will understand more on the how the byte code will be generated in later chapters.