자바소스(.class)를 Java Compiler 가 (.class) 파일(Byte code)로 변환해주고 이 바이트 코드를 JVM이 실행해 기계어로 바꿔준다는데!

바이트 코드는 무엇인지 ? 중간언어(바이트 코드)를 왜 두는 건지? 알아봅시다.
바이트 코드(ByteCode)
> definition of Wiki
바이트코드(Bytecode, portable code, p-code)는 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법이다. 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에, 보통 기계어보다 더 추상적이다.
바이트 코드는 JVM이 이해할 수 있는 0과 1로 이루어진 이진코드라고 이해하면 쉽다.
왜 바이트코드가 필요할까? (왜 중간 코드가 있어야 할까? )
- 중간 코드가 없는 경우
N X M개의 컴파일러를 만들어야하는 수고로움이 있었다.
Our team has started a new Java project . So, I want to find language of sense in Java again. Today I solved 3 Basic Algorithm problems after work.
- find String
find number of times a string occurs as a subsequence in given string.

2. case conversion
Replace Lower Case to Upper Case and UpperCase to Lower Case in a String.

Why Java is WORA(Write Once Run Anywhere)?
이는 Sun이 자바의 cross-platform(여러 종류의 컴퓨터 플랫폼에서 동작할 수 있다는 것을 뜻하는 용어)의 장점을 나타내려고 내건 슬로건이다. Sun이 왜 이런 슬로건을 내걸었을까 ?
전통적인 언어 (C, C++) 등으로 작성된 프로그램들을 컴파일하고 나면 특정 하드웨어가 이해할 수 있게 바꿔야했다. 같은 코드를 다른 하드웨어에 적용하려면 다시 컴파일을 해 그 하드웨어에 맞춰서 바꿔줘야했다.
하지만 자바에서는 이럴 필요가 없다.
자바 컴파일러는 바이트코드(byte code)라고 불리는 중간 언어로 바꾸고 이 바이트 코드를 JVM에서 실행시키는데, JVM이 바이트코드를 해당 하드웨어가 이해할 수 있는 머신코드로 바꿔주기 때문이다.
그래서JVM만 설치되어 있으면, 어떤 하드웨어에서도 실행 가능하다.
Reference
https://www.geeksforgeeks.org/why-is-java-write-once-and-run-anywhere/