자바 바이트코드의 장단점?
자바 바이트코드가 많은 장점이 있는 반면 일반적인 컴파일언어보다 속도가 느린 단점도 있다고 알고 있는데요
어떤 장단점이 있는지 알려주시면 감사하겠습니다..
자바의 바이트코드는 Native code에 비해 속도가 느린 단점은 이미 잘 알려진 문제입니다.
하지만 왜 자바는 바이트코드를 사용하는 가?라는 질문에서 출발해야 한다고 봅니다.
자바는 제임스 고슬링이 만든 언어로써 이식성이 높은 언어를 만들기 위해 출발했습니다.
여기서 이식성이란? 여러 다른 환경의 운영체제에나 시스템에서도 같은 코드를 사용해서 운영할 수 있도록 하는 것입니다.
지금도 마찬가지지만 1995년에 윈도우CE, 임베드 리눅스 같은 서로 다른 환경에서는 크로스컴파일도 되지도 않았고
막 인터넷이 대중화되던 초기라 기술적으로도 인터넷으로 모든 문제를 해결하기 쉽지 않았습니다.
지금 같으면 웹으로 모든 기기와 운영을 연결을 쉽게했겠지만 그때는 기술이 그정도로 성숙되지 못했습니다.
그러한 시대에 자바는 윈도우, 리눅스, iOS 상관없이 어떤 운영체제에서도 같은 코드를 사용해서 똑같은 동작을 하는 결과를 얻어낼 수있었습니다. 또한 웹에 가장 잘 어울리는 언어였습니다.
물론 Perl과 같은 언어가 있었지만 엄청 사용하기 어렵고 문법도 쉽지 않았습니다. 대중성에서 배우기도 쓰기도 어려웠죠.
이식성을 위해 자바는 바이트코드를 사용했고 이를 해석하기 위한 JVM(Java Virtual Machine)을 사용합니다.
JVM은 각 운영체제에 맞게 만들어지며 32비트와 64비트가 존재합니다.
이후 속도가 문제가 되어 JNI(Java Native Interface)기능을 추가하면서 C에 가까운 성능을 가지게 됩니다.
물론 C보다 빠를 순 없지만 C에 근접한 속도를 낼 수 있다는 것입니다.
정리하면 자바의 장점은 이식성, 객체지향언어로 타 언어보다 배우기 쉽다, 웹에 가장 잘 어울리는 언어, 대규모 학습(Practice)가 있는 것이라 볼 수 있습니다.
단점은 C보다 느리지만 현재는 거의 근접한 속도를 내는 JNI 기술을 사용한다. 최근 자바 라이센스 문제로 더이상 무료 소프트웨어가 아니다라는 정도라고 봅니다.
참고 자료
영국 임페리얼 칼리지 JIT 자료 http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol1/msa1/bytecode.html
레딧의 질문 What are advantages/disadvantages of byte-code instrumentation compared to source code instrumentation?https://www.reddit.com/r/learnprogramming/comments/8t082s/what_are_advantagesdisadvantages_of_bytecode/
쿼라 https://www.quora.com/What-are-the-advantages-and-disadvantages-of-programming-in-Java