본문 바로가기

JAVA

자바(JAVA)란 무엇인가? What is JAVA?

public class Hello { 
	public static void main(String[] args) { 
    	System.out.println("Hello, world"); 
    } 
}

 

 

 

세상에는 정말 정말 수많은 프로그래밍 언어들이 존재한다.

그러나 한국에서 백엔드 개발을 배우고자 하는 사람이 무조건 배우는 언어는 이 중 커피향이 나는 그 언어

 

 

 

자바(JAVA)이다.

 

특히 자바는 우리나라 백엔드 시장에서 매우 절대적인 위치를 가지고 있는 언어이다. (아직까지는)

백엔드가 뭐하는 분들인지 모른다면 아래 글을 참고하자.

 

https://yunjuniverse.tistory.com/18

 

프론트엔드와 백엔드가 나눠진 이유?

프로그래머가 되려고 하는 사람들이 처음 맞닥트리는 질문이 '그래서 프론트엔드(front-end)야 백엔드(back-end)야? 설마 풀스택(full-stack)으로 가려고?' 이다. 입문자들은 대체 프론트엔드는 뭐고 백

yunjuniverse.tistory.com

 

사실 백엔드를 구축할 수 있는 언어가 자바만 존재하는 것은 아니다. 해외에서는 파이썬 루비, JS와 같은 신흥 강자들이 백엔드를 위한 언어로서 각광받고 있다. 다만 우리나라 웹 백엔드 개발에서는 아직도 자바가 대세인 이유는 쓰이는 이유는 다름아닌 백엔드 업계에 '시니어 자바 개발자'가 많기 때문이다. 

 

웹 개발이 한국에 도입되었을 때 시작했던 개발자 분들이 대부분 자바를 가지고 시작해서 그 역사가 지금까지 이어져 오고 있는 것이다. 당연히 주류 개발 언어는 쉽게 교체 되지 않는다. 아무리 최신 언어가 더 효율적이고 생산성이 높다고해도 학습자의 수가 적으면 기업 입장에서는 당장 인력을 구하기 난감해지니까....

 

결국 국내 언어 학습자의 규모에 따라 언어의 생명력이 결정되는 것이다. 이미 우리나라에서는 수많은 자바 개발자 분들이 자신의 지식을 전파하고 계시기에 좋은 자바 개발자를 양성할 수 있는 토대가 마련이 되어 있다. (다만 지금 파이썬이 미치는 파급력을 생각하면 대세가 바뀌는 날이 정말 올수도 있다)

 

서론은 각설하고 이제 자바에 대해 본격적으로 알아보자. 자바가 개발되는 과정이나 소유권 분쟁도 꽤 재미있는 이야기이니 궁금하면 나무위키로...

 

https://namu.wiki/w/Java

 

Java - 나무위키

Java는 크게 다음과 같은 3가지 에디션으로 나뉜다. Java SE(Java Standard Edition / J2SE)대부분의 사람들이 가장 많이 접하는 표준 에디션. Java의 핵심 API와 기능들을 제공한다. JDK 항목도 참고. Jakarta EE,

namu.wiki

역시 나무위키는 자기 전에 누워 봐야한다.

 

 

01. WHAT: 자바는 무엇인가?

01-1. 자바는 객체지향 언어이다.

자바는 '객체지향 언어 패러다임(Object-oriented programming language paradigm, OOP)'을 차용한 언어로 1990년대에 개발되었다. OOP는 자바 등장 이전에도 절차적 언어 형식을 지원하는 C나 포트란과 같은 언어에서도 프로그래밍 방법론 중 하나로 쓰이던 프로그래밍 작성 방법이다. 자바는 이 방법론을 새로운 프로그래밍 언어 디자인에 적극적으로 도입하여 객체지향 패러다임을 완전히 지원하고자 탄생하였다.

 

객체지향 언어를 모른다면 이전에 발행한 OOP 시리즈를 읽고 오길 꼭 권장한다.

https://yunjuniverse.tistory.com/19

 

객체지향 프로그래밍, 그 철학에 관하여 - 1 기초 개념, 탄생 배경

 C++, JAVA와 같은 프로그래밍 언어를 공부하다보면 필수적으로 마주치는 개념이 바로 그 이름도 이상한 '객체지향 프로그래밍(Object-oriented programming)'이다. 자료형과 연산자 공부하고 알고리즘 문

yunjuniverse.tistory.com

 

객체지향언어의 객체라는 개념을 원활하게 사용할 수 있도록 언어가 디자인되어, 자바 프로그래밍을 통해 만드는 기능은 객체라는 단위로 쪼개어진다. 각 객체를 떼었다 붙였다하는 조립식 프로그래밍에 매우 적합한 언어가 바로 자바이다.

 

참고로 사실 자바가 객체지향 패러다임을 지원하는 언어로 유명하지만, 순수 객체지향 언어는 아니다.  자바는 원시타입(primitive type)인 문자, 숫자, 불리언 등은 객체로 보지 않기 때문이다. 오히려 이후에 나온 파이썬이나 루비가 순수 객체지향으로 볼 수 있는데, 이 언어는 모든 타입을 객체로 취급한다.

 

01-2. 자바는 플랫폼 독립적인 언어이다.

자바 이전의 언어는 OS에 따라 다르게 작성을 해주어야 하는 플랫폼 종속적인 언어가 대부분이었다. 자바는 JRE(JAVA Runtime Environment)라 불리는 가상머신 기반의 언어로 모든 운영체제에서 실행 가능하다. 자바가 운영체제에 독립적일 수 있는 이유는 JRE 뿐 아니라 JVM(JAVA Virtual Machine)이 있기 때문에 가능하다. JVM은 자바 코드로 작성한 프로그램을 해석해 실행하는 별도의 프로그램으로, 자바 프로그램을 실행시키는 자체 프로그램이다. 

 

JVM은 프로그래머가 운영체제마다 가지고 있는 상이한 규칙에 따를 필요 없이 동일한 코드를 입력하면 운영체제에 따라 다르게 해석해주는 역할을 한다. 자바는 JVM을 거치기 때문에 속도가 C에 비해 느리지만..... 편한게 짱이다. 그리고 기계어를 읽기 위한 어셈블리어로 변환하는 컴파일러의 성능이 매우 좋아져 우리가 직접 변환하는것 보다 훨씬 낫다.

 

참고로 JAVA프로그램을 개발하기 위해선 JDK(JAVA Development Kit)라는 툴이 필요하다.

 

01-3. 자바는 자동으로 메모리를 관리하는 언어이다.

프로그래밍 언어는 결국 메모리에 컴퓨터에게 시킬 명령을 저장하는 언어 체계다. JAVA 이전의 언어들은 데이터와 명령을 저장할 메모리 관리를 직접 해주어야 했는데, 자바는 가비지 컬렉터(Garbage Collector)라는 일종의 봇(bot)을 통해 자동으로 메모리를 관리해주어, 메모리 관리가 매우 쉽다. 참고로 프로그래밍에서 메모리는 일종의 토지와 같아서 메모리 관리를 못한다는 건 토지의 효율적인 이용을 못한다는 것과 같다.

 

01-4. 자바는 함수형 프로그래밍를 지원한다.

자바는 객체지향 프로그래밍 패러다임을 따르지만 최신 언어에 많이 도입되는 함수형 프로그래밍 패러다임 또한 지원한다. 람다식, 익명함수, 스트림과 같은 기능 지원으로 (지금 저 용어를 이해할 필요는 없다) 쉽고 간결한 프로그래밍을 지원한다.

 

What 결론

What? 자바는 객체지향언어 패러다임을 차용하여 탄생한 가상머신 기반 언어로 플랫폼 독립적이며 메모리 자동관리와 함수형 프로그래밍을 지원하는 언어이다.