자바의 간단한 소개와 특징을 살펴보자.
1. 자바란?
자바는 썬마이크로시스템즈에서 발표한 프로그래밍 언어이다. 현재 (2021년 1월) 전세계에서 2번째로 많이 사용되는 언어로 굉장히 성공한 언어이다.
굉장히 성공한 언어임에는 틀림없는데 자바의 특징에는 무엇이 있을까?
1. 이식성이 높은 언어이다 (플랫폼 독립적이다)
Write once, run anywhere.
-JAVA-
이 말을 이해하기 위해선 프로그래밍 언어가 수행되는 과정을 알아야 한다.
우선 프로그래밍 언어는 고급 언어와 저급 언어로 구분지을 수 있다. 고급 언어는 컴퓨터와 대화할 수 있도록 사람이 만든 언어로 쉽게 이해할 수 있다. 저급 언어는 어셈블리어 같은 기계어(컴퓨터가 이해할 수 있게끔 0과 1로 이루어져 있음)에 가까운 언어이다. 저급언어는 사람이 배우기 정말정말 까다롭고 어렵다. 어쨋든 우리가 프로그램을 작성하기 위해선 고급 언어를 사용해야 하는데, 문제는 컴퓨터가 이 고급언어를 이해할 수 없다. 따라서 compile(컴파일)이라고 하는 과정을 통해서 고급언어를 기계어로 변환시켜주게 된다. 이 컴파일을 수행하는 소프트웨어를 compiler(컴파일러)라고 한다.
C언어로 예를 들어보자면 우리가 작성하는 코드 printf("hello wordl!"); 등은 고급 언어이고 이걸 컴퓨터는 이해할 수 없기 때문에 컴파일러를 통해서 기계어로 바꾸어주는 컴파일 과정이 필요하다.
그런데 문제는 사람들이 사용하는 운영체제가 다르다면 이 변환된 기계어가 다른 운영체제에 가서 동작할 수 없다는 것이다. 예를 들어 윈도우 용으로 컴파일된 코드는 리눅스에 가서 정상작동되지 않는다. 결국 윈도우는 윈도우끼리, 맥은 맥용으로 배포를 해야하는등 번거로운 과정을 거치게 되는데
자바 같은 경우는 JVM(Java Virtual Machine)이라는 것이 있어서 플랫폼 독립적으로 동작할 수 있다. 이 JVM은 하드웨어 - 운영체제 - JVM - 응용프로그램처럼 응용프로그램과 운영체제 중간에 떠있는 구조인데 (원래는 하드웨어 - 운영체제 - 응용프로그램으로 구조가 이루어짐) 그러니까 운영체제와 응용프로그램 사이에서 중계해준다는 이야기이다.
따라서 컴파일러(javac.exe)를 통해서 바이트코드로 변환된 자바 프로그램은(그러나 완전히 기계어가 아니기 때문에 운영체제는 이해할 수 없음) JVM을 통해서 완전한 기계어로 번역되게 된다. 이 JVM은 운영체제에는 종속적이지만 바이트코드에 대한 모든 동일한 실행결과를 보장한다. 그러니까 JVM은 바이트코드를 기계어로 바꾸고, 컴파일러는 .java를 바이트코드로 바꾸어주는데 이 JVM이라는 것이 바이트코드를 받아서 기계어로 번역할 때 플랫폼에 관계 없이 항상 동일한 기계어 값을 내놓는다.
2. 객체지향적이다
객체 지향 프로그래밍(Object Oriented Promgramming)을 지원하며 캡슐화, 상속, 다형성 기능을 완벽하게 지원함. 객체 지향에 대해서는 글로 따로 정리하도록 하겠다.
3. 메모리를 자동적으로 관리한다.
C언어 계열은 메모리를 사용자가 직접 관리해줘야 하는데 자바는 Garbage Collector)가 있어서 메모리를 직접 관리해준다. 이는 장점으로도, 단점으로도 받아들여질 수 있지만 개인적으론 장점이라고 생각한다.
4. 다양한 애플리케이션을 개발할 수 있다.
초기 자바는 가전 제품에 탑재할 프로그래밍 언어로 개발되었지만, 현재는 각종 애플리케이션, 서버 등에서도 많이 사용되고 있는 언어이다. 또한 유저가 워낙 많고 다양한 오픈소스 라이브러리가 있기 때문에 개발에서 편리함을 누릴 수 있다.
'JAVA' 카테고리의 다른 글
Interface(인터페이스) (0) | 2021.06.30 |
---|---|
String과 StringBuilder 비교하기 (String vs StringBuilder) (0) | 2021.06.21 |
메모리 구조(Stack, Heap) (0) | 2021.06.20 |
JDBC: executeQuery VS excuteUpdate (0) | 2021.04.25 |
상속(Inheritance) (0) | 2021.01.29 |