1장 프로그래밍 언어와 자바
고급 언어 : 인간이 이해하기 쉬운 문장을 사용해 컴퓨터가 수행해야 할 작업을 정의한 언어
기계어 : 컴퓨터가 직접 알아들을 수 있는 언어
어셈블리어 : 기계어와 1대1로 대응되는 언어
컴파일러 : 컴퓨터가 이해할 수 있는 언어로 변환하는 과정을 수행
자바 : 플랫폼 독립성, 객체지향 언어, 함수형 코딩지원, 분산처리 지원, 멀티 쓰레드지원 등 여러가지 특징을 지닌 언어
플랫폼 종속성 : 하나의 실행 파일은 하나의 특정 플랫폼에만 실행할 수 있다.
플랫폼 독립성 : 하나의 프로그램이 모든 플랫폼에서 실행 가능하다.
다양한 플랫폼 위에 JVM을 설치하여 자바의 실행 파일(.class)은 바로 jvm이 사용하는 기계어의 집합으로 구성돼 있으므로 가상머신을 이용해 어떤 플랫폼에서도 자바 실행파일을 실행 가능하다.플랫폼마다 jvm의 모양이 다르므로 플랫폼에 맞는 jvm을 설치해야하나 오라클에서 플랫폼별로 자바 가상 머신을 제공하므로 개발자는 고려하지 않고 자신의 플랫폼에 맞는 jvm을 설치하면 된다.
JDK : JDK는 자바를 이용하여 프로그램을 개발하는데 필요한 도구를 모아 둔 집합
JRE : 완성된 프로그램을 실행하는 데 필요한 환경
JDK > JRE > JVM
자바의 실행 파일은 JVM이 이해할 수 있는 바이트의 집합으로 구성되어 바이트코드(.class)라 부름
자바 소스 코드 실행 과정
1. .java 소스 파일 생성 (파일 저장시 자동 컴파일)
2. .class 바이트 코드 파일 생성
3. 실행시 JVM은 메모리 할당 (메소드 영역에 클래스 로딩)
4. main() 메서드 실행
JVM 할당한 메모리 영역
메서드영역 : 클래스/정적/상수/메서드 바이트코드는 메모리의 메서드 영역에 로딩후 main() 실행
스택영역 : 변수저장 – 강제초기화X
힙영역 : 객체저장 – 강제초기화