[Java] Ch01_1. Java시작! Java 특징 그리고 JVM(Java Virtual Machine)

토끼는 개발개발·2022년 1월 1일
1

Java

목록 보기
5/33
post-thumbnail

Write once, run anywhere!

왜 Java?

  • 백엔드 개발자 채용공고 뜨면 대부분이 Java 언어 능력을 필요로 한다.
  • 웹개발자라면 무조건 잘해야하는 언어다.
  • 그러므로 Python만 다루던 비전공자 Java 독학 시작!

<Java의 정석 3판>
내 독학서적이자 벨로그 업로드의 참고서적이다.
Java 입문 서적으로 추천이 많으며 후기도 좋다.



📌 Chapter01. 자바를 시작하기 전에


✏️ 1. Java(Java Programming Languange)


1.1 Java란?

  • 자바는 썬 마이크로시스템즈에서 개발한 객체자향 프로그래밍 언어이다.
  • 운영체제에 독립적이라 자바로 작성된 프로그램은 운영체제 종류에 관계 없이 실행이 가능하다.
  • 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 요소를 제공한다.

1.2 Java언어의 특징

1. 운영체제에 독립적이다.
: 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용 프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.

2. 객체지향언어이다.
: 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어라는 평가를 받는다.

3. 자동 메모리 관리
: 자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동으로 메모리를 관리해준다.

4. 네트워크와 분산처리 지원
: 풍부하고 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.

5. 멀티쓰레드를 지원한다.
: 멀티쓰레드(multi thread)는하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다. 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현 가능하며 관련된 라이브러리가 제공되므로 구현이 쉽다.

6. 동적 로딩을 지원한다.
: 자바로 작성된 애플리케이션은 여러 개의 클래스로 구성되어 있다. 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다.


1.3 JVM(Java Virtual Machine)


👉🏻 JVM은 '자바를 실행하기 위한 가상 기계''라고 할 수 있다. Java와 OS 사이에서 중개자 열학을 수행하여 어떤 운영체제 상에서도 실행될 수 있도록 해준다.

가상 기계는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 용어이며 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행된다. 그러므로 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.

개발자들이 말하는 JVM은 보통 어떤 기기상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 관리하고 통제하는 서버를 지칭한다.


JVM 실행 과정

👉🏻 https://www.nowwatersblog.com/cs/JVM
위의 링크를 통해 JVM 실행 과정을 쉽게 이해할 수 있다. 다음은 해당 링크의 내용을 일부 발췌한 것이다.

  1. 프로그램이 실행되면, JVM은 OS로부터 이 프로그램이 필요로하는 메모리를 할당받음. JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리함
  2. 자바 컴파일러(JAVAC)가 자바 소스코드를 읽고, 자바 바이트코드(.class)로 변환시킴
  3. 변경된 class 파일들을 클래스 로더를 통해 JVM 메모리 영역으로 로딩함
  4. 로딩된 class파일들은 Execution engine을 통해 해석됨
  5. 해석된 바이트 코드는 메모리 영역에 배치되어 실질적인 수행이 이루어짐. 이러한 실행 과정 속 JVM은 필요에 따라 스레드 동기화나 가비지 컬렉션 같은 메모리 관리 작업을 수행함
profile
하이 이것은 나의 깨지고 부서지는 기록들입니다

0개의 댓글