티스토리 뷰

Java

[Java] - 자바 특징 및 실행과정

영지는 달리는중 2020. 7. 28. 16:40

자바 관련 용어 

1. JVM - Java Virtual Machine (자바 가상 머신)

  • 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class) 실행한다
  • JVM 플랫폼에 의존적이다 (리눅스의 JWM  / 윈도우즈의 JVM 다름)

2. JRE -  Java Runtime Environment (자바 실행 환경)

  • JVM 자바 프로그램을 동작시킬 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다
  • JRE JVM 실행환경을 구현했다고 있다

3. JDK - Java Development Kit (자바 개발 도구)

  • 개발자만을 위한 컴파일러(Javac) 디버깅 툴을 제공
  • JRE + 개발을 위해 필요한 도구(javac, java)들을 포함

자바의 특징

  • 운영체제에 독립적이다 - JVM 사용
  • 객체지향언어이다 - 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어
  • 자동 메모리 관리가 가능하다 - 가비지컬렉터
  • 네트워크와 분산처리를 지원한다 - 관련 자바 라이브러리 제공
  • 멀티쓰레드를 지원한다 - 관련 라이브러리 제공, 스케줄링은 자바 인터프리터가 담당
  • 동적 로딩이 가능하다 - 필요한 시점에 클래스를 로딩 

동적 로딩의 장점과 단점

  • 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일 하지 않아도 된다
  • 변경사항이 발생해도 비교적 적은 작업만으로도 처리할수 있는 유연한 어플리케이션을 작성할  있다
  • 객체지향 개념이 적용될  있게 해준다
  • 실행  연결된 부분에 대한 판단을 해야하므로 속도 측면에서는 불리하다

동적 로딩의 종류

  • 로드 타임 동적 로딩: 하나의 클래스를 로딩하는 과정에서 필요한 다른 클래스를 동적으로 로딩하는 
  • 런타임 동적 로딩: 코드를 실행하는 순간에 필요한 클래스를 로딩하는 

자바 프로그램 실행 과정

  1. 프로그램 실행
  2. JVM이 OS로 부터 메모리를 할당 받고, 용도에 따라 나누어 관리
  3. 자바 컴파일러(javac)가 소스 코드(*.java)를 읽어 바이트 코드로 변환(*.class)
  4. JVM의 Class Loader가 변환된 파일(*.class)들을 필요 시점에 로드
  5. Execution engine(실행 엔진) 은 로딩된 class 파일을 해석
  6. 해석된 파일들은 Runtime Data Area(할당 메모리)에 배치되고 실질적 수행이 이루어짐

 

이해에 도움을 준 사이트(1)

이해에 도움을 준 사이트(2)

이해에 도움을 준 사이트(3)

'Java' 카테고리의 다른 글

[Java] - super(), this()  (0) 2020.10.10
[Java] - 배열(Array)과 리스트(List) 에 대하여  (0) 2020.09.03
[Java] - War, Jar의 차이  (0) 2020.08.23
[Java 8] - Stream Api  (0) 2020.08.08
[Java 8] - 람다식(Rambda)의 개념과 예제  (0) 2020.08.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함