자바는 다음과 같은 네가지의 큰 특징을 가진다.
1. 운영체제로부터 독립적임
2. 객체 지향 언어
3. 함수형 프로그래밍 지원
4. 자동 메모리 관리
처음으로 컴퓨터와 의사소통을 했을 때는 컴퓨터가 0과 1만 알아들을 수 있었기 때문에 인간이 0과 1로 나름의 규칙(기계어)을 가지고 컴퓨터와 소통했다. 만약 2+3을 계산하고자 한다면 2진법의 10+11=101 라는 익숙하지 않은 수식어를 사용해야 했다.
이러한 불편함을 해결하고자 어셈블리어라는 프로그래밍 언어가 탄생하게 되었다. 어셈블리어는 0과 1에서 좀 더 인간언어에 가까운 단어들로 대체해준다. 하지만 어셈블리어는 기계에 따라 영향을 받는 다는 단점이 있었다. 각 컴퓨터마다 어셈블리어를 공부해야 했고, 컴퓨터마다 바이트 저장방식이 달라 숫자 표기법 또한 각각의 컴퓨터마다 따로 알고 있어야 했다. 이 당시에는 컴퓨터들의 기계어가 통일되어 있지 않았기 때문이다.
이러한 불편함에서 나온 것이 C언어이다. C언어는 WOCA(Write Once, Compile Anywhere)에 부합하여 '한번 작성하고 컴파일은 어디서든 사용가능하다.'는 의미에 맞게 단 하나의 소스코드를 작성하면 기계에 맞는 컴파일러라는 것이 각 기계에 맞는 목적파일을 만들어 준다.
하지만 C언어에도 불편함이 존재했다. C언어 소스코드로 컴파일 하기전에 각 기종에 맞는 소스를 추가로 작성해야 하는 번거로움이 있었다. C언어가 어셈블리어보다는 비교적 '이식성'이 좋았지만 여전히 추가적 보완이 필요했다.
이러한 문제점을 보완해주는 것이 JAVA의 JRE(Java Runtime Environment, 자바 실행 환경)이다. 기존에 C언어는 기존에 컴파일러를 기종별로 구입해서 사용하거나 구비해서 써야했는데 자바에서는 무료로 대응할 수 있도록 자바의 공식사이트에서 JRE를 해당 컴퓨터 운영체제에 맞게 사용할 수 있도록 제공해준다. 자바는 자바 가상 머신(JVM)이 인식할 수 있는 바이트 코드로 된 목적파일을 만들고 JVM을 이용해서 기종에 영향을 받지 않는 가상 컴퓨터 환경을 구축하여 코드를 실행시킨다. 자바는 이 JVM을 거쳐 실행되므로 C나 C++에 비해 속도는 느린편이지만, JVM 내부 최적화된 JIT 컴파일러를 통해 속도를 크게 개선해가고 있다.
1. 운영체제로부터 독립적
자바의 가상머신 JVM과 표준클래스 라이브러리가 설치되어 있으면 모든 운영체제에서 실행이 가능하다. 예를들어 window, mac 등의 어떠한 운영체제에서도 가능하고, 개발이 수행되는 환경(안드로이드, 비주얼스튜디오)에도 실행이 가능하다.
2. 객체 지향 언어(Object Oriented Programming, OOP)
자바는 객체지향언어 프로그래밍을 사용한다. 그러므로 모든 기능은 객체로 만들어 사용해야 한다. 부품과 같은 역할을 하는 객체를 만들고 그 부품들을 조립하여 하나의 프로그램을 동작하도록 만드는 것이 OOP이다. 잘 설계된 객체지향 프로그램은 유지보수가 쉽고 확장성에 유리하다.
3. 함수형 프로그래밍 지원
자바 8버전부터 함수형 프로그래밍을 지원하는 문법인 람다식과 스트림이 추가되었다. 람다식과 스트림으로 컬렉션의 요소를 필터링, 매핑, 집계를 더욱 쉽게 처리할 수 있고, 코드를 간결하게 만들 수 있다.
4. 자동 메모리 관리(Garbage Collection)
자바에는 자동으로 메모리를 관리해주는 기능이 있다. 이는 가비지컬렉터를 실행시켜 사용하지 않는 메모리를 자동으로 수거할 수 있게 한 것이다. 개발자는 이를 통해 메모리를 수월하게 관리할 수 있고 핵심코드에 더욱 집중 할 수 있다.
'JAVA' 카테고리의 다른 글
Serializable 직렬화를 하는 이유(class implements Serializable) (0) | 2022.11.01 |
---|---|
String이란, String 선언과 메서드 (0) | 2022.06.29 |
JAVA 기본타입과 참조타입의 차이 (0) | 2022.06.19 |
메서드란, 메서드 구조와 역할 (0) | 2022.06.19 |
의사코드(슈도코드)란, 의사코드를 작성하는 이유 (0) | 2022.06.19 |