안녕하세요 오늘은 JAVA를 다시 처음부터 스윽 훑어보고자 JAVA 콘텐츠로 찾아뵙게 되었습니다.
바로 본론으로 들어 갑니다.
목차는 다음과 같습니다.
----------- 목 차 -----------
1. 플랫폼 종속성이란?
2. 자바의 실행 환경
3. 자바 컴파일 과정
4. 자바의 특징
------------------------------
1. 플랫폼 종속성이란?
자바는 플랫폼에 독립적으로 설계되어 기존 프로그래밍 언어가 가지는 플랫폼 종속성을 가지지 않습니다.
자바는 자바 가상 기계 (JVM)만 있으면 OS나 H/W 상관없이 언제나 어디서든 동일한 실행 결과를 기대할 수 있습니다.
이를 WORA(Write Once Run Anywhere) 이라 합니다.
이 대목이 바로 자바가 플랫폼 종속성을 가지지 않는다는 이유 입니다.
2. 자바의 실행 환경
Byte Code : 자바 컴파일러가 자바 소스 프로그램을 컴파일한 기계어로 JVM에서 실행되는 Binary Code입니다.
Byte Code는 CPU에 의하여 실행되는 것이 아니라, JVM에서 interpreter 방식으로 해석 및 실행이 됩니다.
JDK : JDK(Java Development Kit)는 자바 응용프로그램 개발에 필요한 자바 컴파일러 및 기타 도구, JRE(Java
Runtime Environment), 클래스 라이브러리의 소스 및 자바 응용프로그램 샘플 소스 등을 포함한 개발 도구
입니다.
JVM : JVM(Java Virtual Machine)은 서로 다른 플랫폼에서 동일한 자바 실행 환경을 제공합니다.
JVM은 각 플랫폼에 맞게 포팅되어야 하므로 플랫폼 종속적입니다.
3. 자바 컴파일 과정
1) 자바 컴파일러는 자바 소스를 Bytecode로 컴파일하여 class파일로 만든다.
2) JVM에서 class 파일을 interpreter 방식으로 실행한다.
3) JVM에서 class파일을 실행 중 다른 JDK에 포함된 다른 class 파일이나 사용자가 직접 작성한 class 파일이 필요할 때면
그때 필요한 클래스 파일을 로딩하고 실행한다. 자바는 미리 class파일을 로딩해 두기 때문에 다른 언어들과 달리
링크 과정이 없다.
4. 자바의 특징
1) 객체 지향 : 자바는 객체지향 언어로 클래스 계층 구조, 상속성, 다형성, 캡슐화 등을 지원한다.
2) 멀티 스레드 : 자바는 OS의 도움 없이 JVM에서 하나의 프로그램에서 다수의 스레드가 동시에 실행할 수 있 는환경을 지원한다.
3) 플랫폼 독립성 : 자바는 한번 작성되어 컴파일되면 JVM만 있으면 언제 어디서든 실행이 가능하다.
4) 소스와 클래스 파일 : 하나의 자바 소스 파일에는 여러 개의 클래스를 작성할 수 있지만, 하나의 클래스(.class)파일에 는 반드시 하나의 컴파일된 자바 클래스만이 포함된다. 하나의 자바 소스 파일에서 여러 개의 클래스를 만들어 컴파일하면, 클래스마다 별도의 클래스 파일이 생성된다.
5) 실행 모듈 : 자바는 한 개의 클래스 파일 혹은 여러 개의 클래스 파일로 구성된다. 여러개일 경우 .jar로 압 축 하여 배포한다. 자바의 실행은 main에서 부터 시작되며 하나의 자바 소스 파일에 여러개의 클래스가 있을 경우 각각의 클래스마다 main이 존재할 수 있다.
6) 클래스로 캡슐화 : 자바는 객체지향 언어의 캡슐화의 원칙을 잘 지키기 때문에 변수나 메서드는 반드시 클래스 내
구현한다. 클래스 안에 새로운 클래스, 즉 내부 클래스를 생성할 수 있다.
이상 자바를 시작하게 되면 꼭 알아야 할 것들을 떠들어 봤습니다. 빠진 것도 있겠지만 이번엔 다시 한번 쓰윽 훑는 수준이라 빠진 부분은 댓글로 남겨 주시면 수정하겠습니다.
References. 명품 Java Programming
'IT Study > JAVA' 카테고리의 다른 글
[JAVA] 연습문제 (0) | 2019.08.30 |
---|---|
[JAVA] 5.JAVA의 예외처리 (0) | 2019.08.30 |
[JAVA] 4.main() 메소드의 특징 (0) | 2019.08.27 |
[JAVA] 3.for문과 for-each 문 (0) | 2019.08.27 |
[JAVA] 2.키보드 입력 두가지 방법 (0) | 2019.08.26 |