Java 언어 특징
- 객체 지향 언어로서 클래스 계층 구조, 상속성, 다형성, 캡슐화 등을 지원
- Garbage Collection을 통한 메모리 관리
: 개발자 스스로 메모리를 관리하지 않기 때문에
코드가 간결해지거나 Business Logic에 좀 더 집중하여
개발과정 속도나 프로그램 안정성 측면에서 효과적.
- 패키지(Package)를 통해 관련 있는 Class 파일들을 묶어서 관리할 수 있다.
: 패키지를 디렉터리 계층 구조화를 통해 추후 같거나 유사한 기능을 재작성할 필요가 없으며
패키지별 접근 제한 기능도 있기에 회사의 자산이 될 수 있다.
- JVM을 통한 플랫폼 독립성
Java 프로그램 생성 과정
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
(1) .java (Java로 작성된 소스파일) 파일 생성
: 텍스트 편집기나 Eclipse 등을 통해 소스 파일 작성 과정
(2) Compiler를 통해 .class 파일 생성
: 바이트 코드로 컴파일(Compile)하는 과정
: 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정
: 각 프로그램 언어마다 고유한 컴파일러 존재
※ 바이트 코드는 이진수로 되어 있음.
JDK 도구를 통해 Class 파일을 Deassemble하여 직접 확인 가능
(3) Interpreter를 통해 Java Program 생성
: 다수의 class 파일을 jar 파일 형태로 압축하여 배포 및 실행도 가능
: 자바 가상 기계(JVM)에서 실행
Java 특징 중 하나가 JVM을 통한 플랫폼 독립성인데,
JVM이 각 플랫폼에 맞게 이식(porting)되어야 한다.
(JVM만 있다면 응용 프로그램 수정없이 바로 실행 가능)
자바 가상 기계 (Java Virtual Machine)
서로 다른 플랫폼에서 동일한 자바 실행 환경을 제공
(IBM, MS 등 다양한 회사에서 공급되고 있다.)
대부분의 자바 가상 기계는 실행 중에 JDK 라이브러리 로딩으로 인한 시간 지연을 줄이기 위해
자바 가상 기계가 시작할 때 JDK 라이브러리를 미리 로딩한다.
(다른 클래스 파일이 필요하면 그 때 필요한 클래스 파일을 로딩하고 실행.)
플랫폼 종속성
Java 이전의 C/C++ 언어의 경우 플랫폼간의 호환성을 위해
다시 소스를 플랫폼에 맞는 언어로 재작성해서 컴파일해야 하는 불편함이 있었다.
ex) OS(리눅스/윈도우/MAC)와 CPU에 대한 종속적인 코드 변환 과정 필요
: 기계어가 CPU마다 다르며, OS에서 사용하는 API 및 실행파일 형식이 다르기 때문.
소스 구조
Java는 하나의 Class 안에 여러 Method가 존재하는 형태라고 보면 된다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
① Sample 클래스 파일 안에 ② main method를 비롯하여
③,④ 다른 method들이 존재하는 형태.
* 자바 프로그램은 main() method에서부터 실행을 시작한다.
하나의 클래스는 오직 하나의 main() 메소드만 가질 수 있다.
main() 메소드는 반드시 public static void로 선언되어야 한다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] Class와 Instance (객체 형태) (0) | 2021.03.07 |
---|---|
[Java] this & this() (0) | 2021.03.06 |
[Java] Setter vs 생성자 (0) | 2021.03.04 |
[Java] 유효범위 (0) | 2021.03.04 |
[Java] 배열 관련 함수 arraycopy() 분석 (0) | 2021.03.04 |
댓글