본문 바로가기
Java & Kotlin/개념정리

01_자바를 공부하기 전에 꼭 알고 공부해야 할 것들..

by Echo12 2021. 7. 9.

이 내용은 책에서 공부한 것을 기록용으로 남겨 놓은 것입니다.

 

 

1. 자바(Java Programming Language)

 

1-1 자바란?

 

자바는 1996년에 태어난 객체지향 프로그래밍 언어(OOP)입니다.

OOP : Object Oriented Programming language)

 

자바의 큰 특징은 운영체제(OS : Operating System)에 자유로운 것입니다.

자바로 작성된 프로그램은 윈도, 맥, 리눅스에 관계없이 실행이 가능하기 때문에 윈도에서 쓰던 프로그램을 맥에서 사용하기 위해 다시 프로그래밍을 하는 과정이 필요 없습니다.

 

그리고 자바는 C++(프로그래밍 언어)의 장점을 흡수하고 잘 사용하지 않는 것들은 제거함으로써 배우기 쉽고 이해하기 쉬운 언어가 됩니다.

 

마지막으로 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 것들을 기본적으로 제공하기 때문에 단순히 API를 잘 활용만 하면 좋은 기능을 가진 프로그램을 완성시킬 수 있습니다.

 

간단히 자바의 특징을 요약하자면

 

1. 운영체제에 상관없이 프로그램을 실행할 수 있음.

2. 배우기 쉬움

3. API가 훌륭함

 

이렇게 요약 됩니다.

 

1-2 자바 언어의 특징

 

1-1에서는 장점을 간단하게 설명했는데 좀 더 자세히 특징을 설명하겠습니다.

 

        1) 운영체제에 독립적이다.

 

        2) 객체지향 언어이다.

 

        3) 비교적 배우기 쉽다.

 

        4) 자동 메모리 관리 (Garbage Collection)

 

        5) 네트워크와 분산처리를 지원한다.

 

        6) 멀티스레드를 지원한다.

 

        7) 동적 로딩(Dynamic Loading)을 지원한다.

 

1) 기존의 언어는 윈도에서 만든 프로그램을 맥이라던지 리눅스 같은 다른 OS에서 사용하려고 하면 다시 작업을 해야 했습니다.

그러나 자바에서는 꼼수를 쓰는데 JVM(Java Virtual Machine) 자바 가상 머신을 개발합니다.

JVM은 에뮬레이터라고 생각하시면 편한데.. 

자바 프로그램은 OS가 아닌 JVM에게 데이터를 넘겨주고 JVM이 OS에 알맞게 데이터를 넘겨줍니다.

일종의 통역 역할을 해줍니다.

 

2) 자바는 객체지향 언어인데 객체지향 언어의 특징은 상속, 캡슐화, 다형성이라는 특징을 가지고 있는데 자바에서는 이 3가지 특징을 잘 적용된 객체지향 언어입니다.

 

3) C++에서 연산자와 기본 구문을, SmallTalk에서 객체지향 언어 개념을 가져와 자바에 융합시킵니다.

이 두 언어의 장점을 합하고 복잡한 것과 불필요한 부분을 제거하고 단순하게 만들어 쉽게 배울 수 있습니다.

원래 객체지향 언어는 장점(상속, 캡슐화, 다형성)이 많은데 어려워서 많이 사용하지 않았는데

자바는 그걸 해결해서 많은 사용자를 얻을 수 있었습니다.

 

4) 자바로 작성된 프로그램은 가비지 컬렉터(Garbage Collecter)라는 청소로봇이 메모리를 관리해줍니다.

그렇기에 프로그래머가 따로 메모리를 정리 안 해도 됩니다.

원래는 프로그래머가 메모리를 체크하고 반환하는 것을 수동으로 하면 좀 더 효율적이긴 하나 자동으로 해두면 좀 더 프로그래밍에 집중할 수 있기 때문에 큰 장점입니다.

 

5) 인터넷과 대규모 분산 환경을 대비했기 때문에 많은 네트워크 API (Java API)를 사용해 간단히 네트워크 프로그램을 개발할 수 있습니다.

 

6) 멀티스레드(Multi thread)의 지원은 운영체제마다 구현 방법이 다르고, 처리 방법도 다른데 자바에서는 API를 제공해 주기도 하고 여러 스레드에 대한 스케쥴링도 자바 인터프리터가 담당합니다.

 

7) 자바로 구성된 프로그램은 여러 개의 클래스로 구성되어 있는데, 자바는 동적 로딩을 지원하기 때문에 프로그램을 실행할 때 모든 클래스가 실행되는 게 아니라 필요한 클래스가 필요한 시점에 작동할 수 있습니다.

 

1-3. JVM(Java Virtual Machine)

 

JVM은 "자바를 실행하기 위한 가상 컴퓨터"입니다.

소프트웨어로 하드웨어 컴퓨터를 구현하고 그 컴퓨터로 프로그램을 실행하는 건데..

자바로 작성된 애플리케이션은 모두 JVM에서 실행됩니다.

즉 자바를 실행하려면 JVM이 필요합니다.

 

일반 애플리케이션의 코드는 OS만 거치고 하드웨어에 전달됩니다.

그러나 자바 애플리케이션의 코드는 JVM -  OS - 하드웨어로 전달되는데

JVM을 한번 통과하고 전달되기 때문에 좀 느립니다.

 

하지만 요즘은 많이 발전해서 속도의 격차가 많이 줄었습니다.

 

정리하자면 ,

일반 애플리케이션 : 코드 -> OS -> 하드웨어

자바 애플리케이션 : 코드 -> JVM -> OS -> 하드웨어

라고 할 수 있습니다.