프로그래밍/Java

4. [Java] Java란 무엇인가(feat. 특징) - 코딩도치

코딩도치 2019. 11. 15. 23:14
반응형

안녕하세요. 코딩도치 입니다~

 

오늘은 Java라는 언어가 도대체 무엇인가에 대해서 알아보도록 하겠습니다!

 

Java가 어떻게 탄생되었고, 누가 만들었고 이러한 역사에 대해서는

 

사실 여러분(저도..)의 관심사가 아닐 것이라고 생각하고 넘어가도록 할게요~

 

하지만 Java라는 언어의 특징에 대해서는 잘 알아야 합니다.

 

그래야 코딩을 하는 데 있어서 Java라는 언어를 잘 활용할 수 있겠죠?

 

특징을 알아보기 앞서, Java의 철학 중 한 가지를 짚고 넘어가려고 합니다.

 

 - 같은 프로그램이 여러 운영체제에서 실행될 수 있어야 한다.

 

Java에는 여러 가지 철학들이 있습니다.

 

여러분들이 Java라는 언어를 조금 더 쉽게 이해하기 위해서 위 철학 하나만큼은 알고 가는 것이 좋겠다는 생각이 듭니다.

 

윈도우 환경에서는 잘 동작하는 프로그램이 리눅스 환경에서는 잘 동작하지 않는 경우가 많이 있는 것처럼,

 

프로그램을 만드는 데 있어서 운영체제를 고려하는 것은 필수적입니다.

 

하지만, Java 언어를 이용하여 개발된 프로그램은 이러한 운영체제 종속성에서 많이 벗어날 수 있습니다.

 

위와 같은 철학을 가지고 이식성이 높게 만들어졌기 때문이죠.

 

이렇게 운영체제의 종속성에서 벗어날 수 있도록 해주는 것이 Java의 핵심 구성요소 JVM(Java Virtual Machine)입니다.

 

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

 

Java는 어떤 운영체제에서든지 프로그램이 동일하게 동작할 수 있도록 하기 위해서

 

운영체제 위에 Java 소스가 돌아갈 수 있는 가상 환경을 두는 것을 선택했습니다. 그 가상 환경이 바로 JVM입니다.

 

자바 컴파일러는 우리가 작성한 소스를 특수한 바이트코드 변환합니다.

 

이렇게 변환된 바이트코드는 JVM위에서 다시 해석되어 우리가 작성한 프로그램이 실행되는 것입니다.

 

프로그램이 운영체제 위에서 실행되는 것이 일반적이지만,

 

Java는 운영체제와 프로그램 사이에 Java만을 위한 환경(JVM)을 새롭게 구성하여

 

프로그램의 운영체제 종속성에서 벗어난 것이죠.

 

정말 흥미롭지 않나요? 자, 이제 Java언어의 특징들에 대해서 본격적으로 알아보도록 하겠습니다.

 

2. Java언어의 특징

 

 - 객체 지향 언어

    

    Java는 OOP(Object Oriented Programming) : 객체 지향 프로그래밍을 위한 언어입니다.

 

    객체 지향 프로그래밍이란

 

    상태와 행위를 가진 객체를 만들고, 그 객체들 간의 연결을 통해 전체 프로그램을 만드는 프로그래밍 방법입니다.

 

    (객체 지향 프로그래밍에 대해서는 다룰 것이 많아 다음 포스팅에서 상세하게 다루도록 하겠습니다!)

 

    이번에는 간단하게,

 

    부품들을 먼저 만들고, 그 부품들을 조립하여 완성품을 만드는 방식이라고 이해해주시면 되겠습니다.

 

    그리고 Java는 이러한 객체 지향 프로그래밍을 할 수 있는 구조를 가진 언어입니다.

 

 - 가비지 컬렉터(Garbage Collector)

 

    Java는 가비지 컬렉터(Garbage Collector)를 가지고 있습니다.

 

    이 가비지 컬렉터는 사용하지 않는 메모리를 자동적으로 관리해주는 기능을 합니다.

 

    프로그램이 동작하면서 가비지(쓰레기)가 쌓이게 됩니다.

 

    이렇게 가비지가 쌓이게 되면 메모리가 부족하게 되고, 프로그램이 잘 동작하지 않게 됩니다.

 

    가비지 컬렉터(Garbage Collector)는 이렇게 메모리가 부족한 상황이 발생하면,

 

    자동적으로 가비지를 정리하여 메모리를 확보해주는 기능을 하는 것입니다.

 

    메모리 관리를 자동적으로 해주기 때문에 코딩하는 데 있어서 메모리 관리 부담을 많이 줄여주는 편리한 기능입니다.

 

 - 멀티스레드(Multi-Thread)

 

    스레드란 프로그램의 동작 주체(동작을 실제 수행하는 자)라 할 수 있습니다.

 

    멀티스레드란 이러한 동작의 주체가 여러 개 있다는 것입니다.

 

    한 프로그램 내에서 동작을 수행할 수 있는 주체가 여러개 있다면 어떤 효과를 볼 수 있을까요?

 

    네, 동시에 여러 가지 작업(동작)을 수행할 수 있게 되는 것입니다.

 

    그래서 대용량 작업의 빠른 처리가 필요한 경우에 많이 사용됩니다.

 

    이러한 멀티스레드는 운영체제에 따라 사용 방식이 달라집니다.

 

    하지만 Java에서 멀티스레드를 쉽게 구현하고, 관리할 수 있도록 기능을 제공하고 있습니다. 

 

이 외에도 동적 로딩, 인터프리터 방식, 함수형 프로그래밍 등 다양한 특징들이 더 많이 있지만,

 

코딩하는 데 유용하다고 생각되는 정보들을 우선으로 포스팅해보았습니다.

 

이러한 Java의 특징들을 잘 이해하고 코딩에 들어간다면, 훨씬 더 좋은 소스를 작성할 수 있을 것입니다.

 

이번에는 글이 길었습니다!

 

읽어주셔서 감사합니다.

반응형