반응형
자바(Java)란?
- 자바(Java)는 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어다.
- 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있다. 따라서 자바는 어느 운영체제에서나 같은 형태로 실행될 수 있다.
자바의 역사
- 처음에 자바는 가전제품 내에서 동작하는 임베디드 프로그램을 위한 언어로 썬 마이크로시스템즈(Sun Microsystems)사의 제임스 고슬링(James Gosling) 팀에 의해 개발되었다.
- 1991년에 오크(Oak)라는 이름으로 시작하여, 1996년에 발표된 1.0.2 버전부터 자바(Java)라는 이름을 사용하게 되었다.
- 썬 마이크로시스템즈사는 1997년에 ISO/IEC에서 표준화 절차를 밟았으나 성사되지 못한다. 이후 자바는 자발적 표준(de facto)으로써 자바 커뮤니티 프로세스(Java Community Process)를 통해 관리된다.
- 1998년 발표된 J2SE 1.2에서는 웹에서도 자바를 돌릴 수 있게 해 주는 자바 애플릿(Java Applet)이 추가되며, 자바의 인기는 급상승하게 된다.
- 2007년에 썬 마이크로시스템즈사는 자바의 코어 부분을 대부분 GPL 라이선스로 오픈한다.
- 2009년에 썬 마이크로시스템즈사가 오라클과 인수 합병됨에 따라 자바에 대한 권리 및 유지보수 또한 현재는 오라클에서 수행하고 있다.
자바 프로그래밍의 실행 과정

자바 컴파일러(Java compiler)
- 자바 컴파일러(Java compiler)는 자바를 가지고 작성한 자바 소스 코드를 자바 가상 머신이 이해할 수 있는 자바 바이트 코드로 변환한다.
- 자바 컴파일러는 자바를 설치하면 javac.exe라는 실행 파일 형태로 설치된다.
자바 바이트 코드(Java bytecode)
- 자바 바이트 코드(Java bytecode)란 자바 가상 머신이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다.
- 자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불리고 있다.
- 자바 바이트 코드의 확장자는 .class입니다.
- 자바 바이트 코드는 자바 가상 머신만 설치되어 있으면, 어떤 운영체제에서라도 실행될 수 있습니다.
자바 가상 머신(JVM)
- 자바 가상 머신(JVM, Java Virtual Machine)이란 자바 바이트 코드를 실행시키기 위한 가상의 기계다.
- 자바로 작성된 모든 프로그램은 자바 가상 머신에서만 실행될 수 있으므로, 자바 프로그램을 실행하기 위해서는 반드시 자바 가상 머신이 설치되어 있어야 한다.
- 서로 다른 운영체제라도 자바 가상 머신만 설치되어 있다면, 같은 자바 프로그램이 아무런 추가 조치 없이 동작할 수 있다. 따라서 개발자는 한 번만 프로그램을 작성하면, 모든 운영체제에서 같이 사용할 수 있는 장점이 있다. 단, 자바 프로그램과는 달리 자바 가상 머신(JVM)은 운영체제에 종속적이므로, 각 운영체제에 맞는 자바 가상 머신을 설치해야 한다. 또한, 자바 프로그램은 일반 프로그램보다 자바 가상 머신이라는 한 단계를 더 거쳐야 하므로, 상대적으로 실행 속도가 느리다는 단점을 가지고 있다.
- 자바 가상 머신의 구성
- 자바 인터프리터(interpreter): 자바 컴파일러에 의해 변환된 자바 바이트 코드를 읽고 해석하는 역할을 하는 것이 자바 인터프리터(interpreter)다.
- 클래스 로더(class loader): 자바는 동적으로 클래스를 읽어오므로, 프로그램이 실행 중인 런타임에서야 모든 코드가 자바 가상 머신과 연결된다. 이렇게 동적으로 클래스를 로딩해주는 역할을 하는 것이 바로 클래스 로더(class loader)다.
- JIT 컴파일러(Just-In-Time compiler): JIT 컴파일러(Just-In-Time compiler)란 프로그램이 실행 중인 런타임에 실제 기계어로 변환해 주는 컴파일러를 의미한다. 동적 번역(dynamic translation)이라고도 불리는 이 기법은 프로그램의 실행 속도를 향상시키기 위해 개발되었다. 즉, JIT 컴파일러는 자바 컴파일러가 생성한 자바 바이트 코드를 런타임에 바로 기계어로 변환하는 데 사용한다.
- 가비지 컬렉터(garbage collector): 자바 가상 머신은 가비지 컬렉터(garbage collector)를 이용하여 더는 사용하지 않는 메모리를 자동으로 회수해 준다. 따라서 개발자가 따로 메모리를 관리하지 않아도 되므로, 더욱 손쉽게 프로그래밍을 할 수 있도록 도와준다.
Reference
반응형
'Language > Java' 카테고리의 다른 글
[Java] 자바 배열 - 1차원, 2차원, 다차원 배열 (feat. 메모리 구조) (0) | 2024.04.07 |
---|---|
[Java] 자바 제어문 - If, Switch, While, For, Continue, Break, Label (0) | 2024.04.06 |
[Java] 자바 연산자 - 산술, 대입, 증감, 비교, 논리, 비트, 삼항, instanceof (feat. 우선순위) (1) | 2024.04.06 |
[Java] 자바 타입 - 변수, 상수, 기본/참조형 타입, 타입 변환 (0) | 2024.04.06 |
[Java] 자바 기본 문법 - main(), 명령문, 주석, 입출력 (0) | 2024.04.05 |