자바 바이트코드

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

자바 바이트코드(Java bytecode)는 자바 가상 머신이 실행하는 명령어의 형태이다. 각각의 바이트코드는 1바이트로 구성되지만 몇 개의 파라미터가 사용되는 경우가 있어 총 몇 바이트로 구성되는 경우가 있다. 256개의 명령코드 모두가 사용되지는 않는다.

자바와의 관계[편집]

자바 프로그래머가 자바 바이트코드를 꼭 인지하거나 이해할 필요는 없다. 하지만 IBM의 developerWorks journal에서 제안했듯이 "바이트코드를 이해하고 자바 컴파일러에 의해 바이트코드가 어떻게 생성될 것인지를 이해하는 것은 C나 C++ 프로그래머가 어셈블리어를 이해하는 것과 같다" 라고 볼 수 있다. [1]

역컴파일러[편집]

이렇듯 기계가 직접 실행하는 기계어가 아닌 중간단계인 바이트코드 형태로 변환되는 관계로 자바는 역컴파일러(逆compiler) 혹은 디컴파일러(decompiler)라고 불리는 실행코드에서 소스코드를 역으로 추출하는 프로그램에 취약한 편이다. 특히 라인정보 등의 디버깅 정보를 포함하여 컴파일 할 경우는 주석문을 제외한 거의 완전한 소스코드를 추출할 수 있다.

이에 대한 대비로 역컴파일을 어렵게 하고 만일 성공하더라도 원래의 소스 구조를 알기 힘들게 변경하는 프로그램(obfuscator) 들이 존재한다. 이 프로그램들은 주로 클래스 파일의 디버깅 정보를 제거하고 클래스명/함수명/변수명등을 임의의 단문자 형태로 치환하기 때문에 생성되는 클래스파일의 크기를 줄이는 목적으로 사용되기도 한다.

참고문헌[편집]

  1. Understanding bytecode makes you a better programmer

바깥 고리[편집]