본 내용은 KH정보교육원 에서 제공한 교재 내용을 개인적인 공부를 위한 목적으로 작성되었습니다.
만약 아래의 내용을 무료로 배부하거나 상업적으로 이용할 경우 법적 처벌을 받을 수 있음을 경고합니다.
자바 소개
Java란
- 썬 마이크로 소프트웨어에서 개발하여 발표한 객체지향 언어
- 운영체제에 영향을 받지 않고 실행되는 특징 때문에 다양한 기종의 컴퓨터와 운영 체제가 공존하는 인터넷 환경에 적합한 언어로 많이 사용되는 언어
Java의 역사
- Sun의 엔지니어들이 가전제품에 탑재할 소프트웨어를 만드는 것을 목표로 C++를 확장하여 사용하려고 했지만 C++로는 한계가 있다는 것을 깨닫고 C++을 장점으로 도입하고 단점을 보완하여 Oak라는 새로운 언어를 개발
- 초기에는 가전제품이나 PDA와 같은 소형기기에 사용될 목적이었으나 인터넷의 등장으로 인터넷 환경에 맞게 개발방향을 변경하고 이름도 자바(Java)로 변경
현재 웹 개발에 많이 활용되고 있음
자바의 특징
Java의 특징 (반드시 숙지)
- 객체 지향 언어
- 플랫폼에 독립적이므로 이식성이 높음
- 메모리를 자동으로 관리 (GC, Garbage Collection)
- 동적 로딩(Dynamic Loading)을 지원
- 멀티 스래드를 쉽게 구현
- 오픈 소스 라이브러리가 충분함
Java의 플랫폼
- Java SE(Standard Edition) : 자바 기본 플랫폼
- Java EE(Enterprise Edition) : SE + WEB
- Java ME(Micro Edition) : 임베디드 플랫폼
Java의 프로그래밍 과정
Java Source Code(파일명.java) -> Java Compiler -> Java Byte Code(파일명.class) -> JVM 에 의해 재컴파일 되어 실행
- .java 언어의 문법에 따라 소스 코드 작성한다. (클래스명.java)
- jdk(Java Development Kit) 이 제공하는 javac 컴파일러를 사용하여 바이트코드 형식으로 소스코드를 컴파일 한다. (클래스명.class)
- 컴파일 된 class 파일을 jdk가 제공하는 java 인터프리터를 사용하여 실행한다.
- 실행시 실행에 필요한 클래스들이 JVM(Java Virtual Machine)에 연결되며 클래스 로더(Loader)가 필요한 클래스를 동적으로 로딩(Loading)한다.
JVM(Java Virtual Machine)
-
자바 바이트코드를 해당 운영체제(Operation System) 기계어로 재번역 하면서 실행하는 주체
-
운영체제와 자바 프로그램을 연결시켜주는 역할
-
자바 프로그램을 플랫폼(운영체제)에 독립적으로 동작할 수 있도록 해 주는 역할
-
인터프리터나 JIT 컴파일 방식으로 바이트코드를 실행할 수 있도록 함
-
JRE에 포함되어 배포됨
-
가비지 컬렉션을 수행함
-
과거 순수 인터프리터 방식으로 실행시간이 늦은 편이었으나 JIT(Just-In-Time) 컴파일을 구현하여 성능을 개선하였음
-
컴파일러(Compiler)
- 고급 언어로 쓰여진 프로그램이 컴퓨터가 이해할 수 있는 저급 언어로 번역
- 번역 과정이 번거롭고 번역 시간이 오래 걸림
- 한 번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠름
-
인터프리터 (InterPreter)
- 프로그램을 한 단계씩 기계어로 해석하여 실행
- 실행 시간이 길어 속도가 늦음
- 프로그램이 직접 실행되므로 목적 프로그램이 생성되지 않음
-
JIT 컴파일
- 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법
- 실행 시점에 기계어 코드를 생성하면서 해당 코드를 캐싱
- 함수가 여러 번 호출될 때마다 매번 기계어 코드가 생성되는 걸 방지
- 인터프리터의 실행 속도가 느린 단점을 보완