All of My Records

[Java] 자바(Java)란? :: 자바 언어의 특징

by 캐떠린

저번 포스팅에 이어서 자바에 대해 알아보자!

 

자바(Java)란?

Java(자바)는 1991년 제임스 고슬링을 비롯한 선 마이크로시스템스 연구원들이 처음 개발했다. 그 당시에 가장 많이 사용하던 프로그래밍 언어는 C와 C++였는데, 가전제품이나 휴대용 장치 등에 사용하는 소프트웨어를 만들기 위해 독립적으로 작동하는 더 안정된 프로그래밍 언어가 필요했다. 이러한 이유로 개발된 언어가 바로 자바이다.

 

플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용할 수 있다.

자바는 ‘한 번 작성하면, 어디서든 돌아간다(write once, run anywhere)’는 슬로건이 있다. 다시 말해 플랫폼에 종속되지 않는 프로그램을 개발하여 여러 플랫폼에서 실행할 수 있다.

플랫폼(platform)이란?
프로그램이 실행되는 환경. 우리가 사용하는 컴퓨터의 운영체제(OS)를 말한다.
즉 윈도우(Windows), 맥(Mac), 리눅스(Linux) 등이 바로 플랫폼이다.

 

지난 포스팅에서 프로그램이 작성되고 실행되는 과정에 대해 배웠으니 자바 언어의 특징을 알아보자!

 

[Java] 프로그래밍과 자바 :: 비전공자가 처음 접한 프로그래밍과 자바의 세계

본 포스트는 도서의 '프로그래밍과 자바' 파트와 도서의 '자바의 특징' 파트 대부분을 인용하여 작성함을 알려드립니다. 내용이 비전공자가 이해하기에 너무 최적이라 저의 뇌가 까먹기 전에 꼭

pigsnowworld.tistory.com

 

자바 언어의 특징

자바는 이렇게 바이트 코드로 구성된 중간 파일을 만듦으로써 플랫폼에 독립적이라는 독특한 언어적 특징을 갖게 된다. 마치 영어로 번역된 문서를 외국인이 자신의 나라에 맞는 번역기로 처리할 수 있는 것처럼 자바로 작성된 소스 파일을 중간 언어인 바이트 파일로 번역하면 OS가 달라도 각 OS의 환경에 맞게 번역해주는 JVM만 있으면 동일하게 번역된 결과를 출력할 수 있는 것이다.

 

 

이 그림에서 중요한 것은 자바 바이트 코드가 실행되는 컴퓨터에는 반드시 해당 컴퓨터에 맞는 JVM이 설치되어 있어야 한다는 것이다. 그래야 중간 단계의 바이트 코드를 플랫폼, 즉 OS 환경에 맞은 기계어로 번역할 수 있다.

참고로 JVM은 JDK(Java Development Kit)라는 프로그램을 설치하면 자동으로 포함된다.

 

이러한 특성 때문에 처음 자바가 발표되었을 때 프로그램 실행 속도가 느리다는 평이 많았고 실제로 느리기도 했다. 하지만 하드웨어가 발전하면서 자바 컴파일러도 JIT(Just In Time) 컴파일 방식으로 개선되었고 이제 자바 프로그램의 실행 속도는 아무 문제가 없다.

 

자바 가상 머신(Java Virtual Machine; JVM)이란?
자바 프로그램 실행 환경을 만들어 주는 소프트웨어이다. 자바 코드를 컴파일하여 *.class 바이트 코드로 만들면 이 코드가 자바 가상 머신 환경에서 실행된다. 현재 사용하는 컴퓨터의 운영체제에 맞는 자바 실행 환경(Java Runtime Environment; JRE)이 설치되어 있다면 자바 가상 머신이 설치되어 있는 것이다.
JIT(Just In Time)란?
JIT 컴파일러는 실행 시점에 기계어 코드를 생성하는데, 같은 코드가 반복되면 매번 기계어 코드를 새로 생성하지 않고 이전에 만든 기계어를 재사용한다. 또한 JIT 컴파일러는 운영체제에 맞게 바이트 실행 코드로 한 번에 변환하여 실행하기 때문에 이전의 자바 해석기(Java interpreter) 방식보다 성능이 10~20배 좋다.

 

객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다.

자바는 객체 지향 언어이다. 자바가 나오기 전에 대표적인 객체 지향 언어는 C++이었다. 기술이 발전하면서 가전제품 내부에 사용할 수 있는 안정된 프로그램을 개발하는 데 기존의 C++가 적합하지 않았고, 여러 기계 환경에서 독립적으로 작동하는 안정된 프로그램을 개발하기 위해 자바를 만들었다.

 

객체 지향 프로그래밍이란 일의 순서대로 프로그래밍하는 것이 아닌 여러 객체의 협력을 통해 프로그램을 구현하는 것이다. 어떤 회원이 쇼핑몰 사이트에 접속하여 상품을 주문하고 상품이 집까지 배송되는 과정을 생각해보자 .이때 회원, 상품, 주문, 배송 등이 객체이다. 즉 회원과 상품과 주문과 배송이라는 객체를 기반으로 각 객체의 상호 관계를 이용하여 프로그래밍 하는 것이다. 객체 지향 언어로 프로그래밍하면 공통으로 사용하는 부분을 수정하지 않고도 프로그램에 새 기능을 쉽게 추가할 수 있다. 따라서 객체 지향 언어로 프로그램을 잘 설계하면 유지보수가 쉽고 확장성이 좋다.

 

프로그램이 안정적이다.

자바는 비교적 최근에 출시된 언어로서 기존 언어가 가지는 모호성과 불안정한 부분을 과감히 없애고 개선했다. 자바는 C나 C++에서 제공하는 문법인 포인터를 사용하지 않아 메모리를 직접 제어할 수 없다. 하지만 프로그램에서 메모리를 직접 제어하면 오류가 발생할 수 있는데, 이러한 위험성이 없으므로 훨씬 안정된 코드를 만들 수 있다. 또한 동적 메모리 수거를 프로그래머가 하지 않고 가비지 컬렉터(Garbage Collector; GC)를 이용하므로 메모리를 효율적으로 관리할 수 있다.

가비지 컬렉터(Garbage Collector; GC)란?
이름 그대로 쓰레기를 수집하는 기능.
여기에서 쓰레기란 더 이상 사용하지 않는 메모리를 의미한다. C나 C++에서는 필요 없는 메모리 사용 해제를 프로그래머가 직접 해야 했지만, 자바는 가비지 컬렉터가 사용하지 않는 동적 메모리를 주기적으로 수거한다.

 

풍부한 기능을 제공하는 오픈 소스이다.

기존의 다른 언어에서는 특정 기능을 대부분 개발자가 직접 개발하여 사용했다. 자바에는 기본 기능을 제공하는 클래스뿐 아니라 자료 구조, 네트워크, 입출력, 예외 처리 등에 최적화된 알고리즘 라이브러리를 제공하는 자바 개발 키트(Java Development Kit; JDK)가 있다. 그래서 프로그램을 빠르게 완성할 수 있다.

즉 자바는 오픈 소스이고 자바를 활용한 오픈 소스가 이미 많이 개발되어 있으므로 이들 오픈 소스를 연동하여 더 풍부한 기능을 빠르게 구현할 수 있다는 장점이 있다.

 


자바로 어떤 프로그램을 만들 수 있을까?

자바를 사용하여 서버나 모바일용 앱 등 다양한 프로그램을 개발할 수 있다.

 

웹 서버

웹 사이트를 운영하려면 반드시 서버(server)가 필요하다. 사용자가 웹 사이트에 접속해서 뉴스나 메일 서비스를 요청하면 서버에 그 요청이 전달되고 요청 결과를 응답으로 받는다. 이때 사용자에게 요청을 받아 응답을 주는 프로그램이 서버이다. 검색 사이트, 쇼핑몰, 금융 사이트 등 우리가 흔히 이용하는 사이트가 자바로 개발한 웹 서버 프로그램으로 운영되고 있다.

서버서비스를 제공하는 프로그램을 뜻한다. 서버 프로그램이 설치된 컴퓨터를 가리키기도 한다.

 

안드로이드 앱

현재 우리가 사용하는 스마트폰은 크게 안드로이드폰과 아이폰이 있다. 이 중 안드로이드폰에서 사용하는 앱을 만들 수 있는 프로그래밍 언어 중 하나가 자바이다.

 

게임

마인크래프트라는 게임은 자바로 구현되었다. 게임을 만들 때는 C++와 C를 주로 사용하지만 마인크래프트처럼 자바도 게임을 구현하는 데 종종 사용된다.

 

 

*글 작성에 참고한 내용: 학원 쌤의 열정적인 수업

*글 작성에 참고한 도서: 'Do it! 자바 프로그래밍 입문', '채쌤의 자바 프로그래밍 핵심'

블로그의 정보

All of My Records

캐떠린

활동하기