본문 바로가기

한권떼기/자바의 정석

[한권떼기] 자바의정석 챕터01. 자바 배경 지식

728x90
반응형

**자바의 정석(남궁성 저)를 읽고 정리한 글입니다.

 

자바언어의 특징

1. 운영 체제 독립적

운영체제의 종류에 상관 없이 실행이 가능

  => 어떻게 가능할까? : 자바는 JVM이라는 가상 머신과만 통신하고, JVM이 OS와 통신하는 역할을 함

  => 무엇이 좋을까? : 안드로이드, 리눅스 등 다양한 운영체제 위에서 실행할 수 있음

 

2. 객체지향언어

객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되어 있음

  => 무엇이 좋을까? : 객체지향의 장점을 취할 수 있음. ex) 유지보수가 용이, 유연한 구조로 변경이 쉬움 ...

 

3. 자동 메모리 관리 (가비지컬렉션)

가비지컬렉터가 메모리를 자동으로 관리해줌

  => 어떻게 가능할까? : 가비지 컬렉터가 더이상 필요없는 메모리를 체크하여 해제해줌

  => 무엇이 좋을까? : 프로그래머가 메모리 관리보다는 프로그래밍에 더 집중할 수 있음

 

4. 멀티쓰레드 지원

자바의 멀티쓰레드 지원은 OS 독립적

  => 무엇이 좋을까? : OS가 변경될 때마다 멀티쓰레드의 구현 방식을 변경할 필요 없음 (보통은 OS에 맞춰서 구현해야 함)

 

5. 동적 로딩

실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 로딩됨

  => 무엇이 좋을까? : 클래스 로딩에 따른 메모리를 아낄 수 있음

일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일 하지 않아도 됨

  => 어떻게 가능할까? : 클래스의 변경이 없는 경우 이미 컴파일 된 .class 파일이 있으므로 이걸 다시 가져다 쓰면 됨 

  => 무엇이 좋을까? : 어플리케이션 변경 사항이 발생하면 적은 작업으로 처리가 가능함

 

 

 

JVM과 동작 방식

자바를 실행하기 위한 가상 기계

자바로 작성된 어플리케이션은 모두 JVM 위에서만 실행되므로 자바로 작성된 프로그램에는 반드시!! 필요함

java 어플리케이션 동작 방식 vs 일반 어플리케이션 동작 방식

위처럼 java 어플리케이션이 동작하기 위해서는 JVM이 필요함

JVM은 OS 종속적으로 OS 운영체제에 따라 알맞은 JVM을 사용해야 함 (리눅스용 JVM, 윈도우 JVM...)

 

 

내가 만든 java 파일은 어떻게 실행될까?

먼저 작성한 java를 javac를 통해 컴파일하여 java 내부의 클래스 파일을 만듦

-> java를 통해 .class 파일을 인터프리터 방식으로 한줄씩 실행

(**인터프리터 방식? : 고레벨 언어를 중간 코드로 변환하고 이를 각 행마다 실행하는 것)

최근에는 JIT 컴파일러를 이용하여 컴파일된 자바코드인 바이트코드를 기계어로 바로 변환해주는 기술을 사용하고 있어 기존보다 더 빨라짐

 

자바는 컴파일 방식일까 인터프리터 방식일까?
컴파일 방식의 대표적인 언어에는 C, C++이 있고, 인터프리터의 대표적인 언어에는 파이썬이 있습니다.
자바는 컴파일 과정과 인터프리터 과정을 모두 거쳐서 실행되기 때문에 두 방식이 혼합되어있는 언어라고 볼 수 있습니다.
728x90
반응형