자바란 무엇인가?
자바를 공부하기에 앞서 자바를 왜 써야하는지부터 알아야할거 같다. 그럼 자바가 탄생하게 된 배경부터 알아보자.
자바의 역사
자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이며 1995년에 처음으로 출시 되었다.
그렇다면 이러한 언어를 왜 만들었을까? C와 C++ 언어로 된 프로그램을 실행하기 위해서는 컴퓨터가 이해할 수 있도록 기계어로 변환을 해주어야 하며 이를 컴파일러라고 한다. 하지만 CPU의 종류에 따라 기계어가 다르기 때문에 CPU에 맞는 컴파일러가 필요했다. 즉 같은 프로그램이라도 CPU가 다르면 실행하기 위해 해당 CPU에 맞는 컴파일러가 필요했다.
이러한 불편함을 없애고자 고슬링은 코드를 한번 작성하고 어디에서나 실행될 수 있도록 하는 언어를 개발하였고 이것이 Java이다.
자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아떨어져 폭발적인 인기를 끌게 되었다.
철학
자바는 5가지의 핵심 목표를 지닌다.
- 객체 지향 방법론을 사용
- 같은 프로그램(바이트코드)이 여러 운영 체제에서 실행될 수 있어야 함
- 컴퓨터 네트워크 접근 기능이 기본으로 탑재되어야 함
- 원격 코드를 안전하게 실행할 수 있어야 함
- 다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 함
컴파일 과정
C/C++
- C/C++은 특정 CPU의 기계어 코드를 직접 생성하면 생성된 기계어 코드가 메모리에 적재되어 바로 실행된다. 그렇기 때문에 CPU가 달라지면 컴파일러가 달라져야 한다.
Java
- java로 작성한 .java 파일을 컴파일 하게 되면 .class파일이 생기고 .class는 JVM이 이해할 수 있는 바이트코드로 이루어진다.
- JVM(자바 가상 머신)이 바이트 코드를 해석하여 실행한다.
- JVM의 인터프리터와 JIT 컴파일러는 바이트코드를 각 OS가 실행할 수 있는 기계어로 변환시킨다.
- 프로세서는 기계어에 따라 동작을 수행한다.
- 사용자가 본인의 실행환경에 맞는 JVM만 설치한다면 같은 프로그램을 돌릴 수 있다.
JVM이란?
- Java Virtual Machine으로CPU와 OS에 종속받지 않고 바이트코드를 실행할 수 있는 가상 컴퓨터 머신이다.
- JVM은 바이트코드를 OS가 이해할 수 있도록 해석해준다.
- java 파일만 있으면 어느 환경에서든 JVM 위에서 실행할 수 있기 때문에 Java가 플랫폼 독립적 언어가 될 수 있는 이유이다.
바이트 코드란?
- 바이트코드는 JVM이 이해할 수 있는 저수준 언어이다.
- 기존의 언어의 컴파일 결과로 생성되는 오브젝트파일(.obj)와 달리 바이트코드(.class)는 모든 플랫폼의 JVM에서 실행이 가능하다.
- 직접 코드를 짜서 바이트 코드를 확인해보자
다음은 Test라는 class를 만들어 1+2를 출력하는 코드이다.
.java 파일을 컴파일 하면 .class 파일이 생기고 .class 파일을
javap -c
로 열면 다음과 같이 나온다.