자바의 특징을 정리하자.
이식성이 높은 언어
이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
자바 언어로 개발된 프로그램은 소스파일을 수정하지 않아도, 자바 실행 환경(JRE : Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능하다. 따라서 자바 언어는 이식성이 높은 프로그래밍 언어이다.
객체지향 언어
객체 지향 프로그래밍(OOP : Object Oriented Programming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법이다. 이때 사용되는 언어를 객체 지향 언어라고 한다.
자바는 100% 객체 지향 언어이다.
객체를 고려하여 설계된 언어이기 때문에 객체 지향 언어가 가져야할 캡슐화, 상속성, 다형성 기능을 완벽하게 지원한다.
함수적 스타일 코딩을 지원
객체 지향 프로그래밍이 나오기 오래 전부터 Lisp 또는 Scheme와 같은 함수적 프로그래밍 언어들이 있었는데, 학계를 제외하고는 현업에서는 큰 호응을 얻지 못했다. 최근 들어 함수적 프로그래밍이 다시 부각되고 있는데, 대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍을 위해 적합하기 때문이다. 자바는 함수적 프로그래밍을 위해서 람다식(Lambda Experssions)을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계처리하는데 쉬워지고, 코드가 매우 간결해진다.
메모리를 자동으로 관리
자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 메모리는 자바가 직접 관리한다. 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다. 따라서 개발자는 메모리 관리의 수고스러움을 덜고, 핵심 기능 코드 작성에 집중할 수 있게 해준다.
다양한 어플리케이션 개발 가능
자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다. 단순한 콘솔 프로그램에서부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 어플리케이션 그리고 모바일 안드로이드 앱에 이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다.
멀티 쓰레드(Multi-Thread)를 쉽게 구현 가능
하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하면 멀티 스레드 프로그래밍이 필요하다. 프로그램이 실행되는 운영체제에 따라서 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하기 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
동적 로딩(Dynamic Loading)을 지원
자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생성된다. 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적로딩해서 객체를 생성한다. 또한 개발 완료 후 유지보수(수정)가 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없다. 따라서 유지보수를 쉽고 빠르게 진행할 수 있다.
막강한 오픈소스 라이브러리가 풍부
자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 넘쳐난다. 고급 기능을 구현하는 코드를 직접 작성할 경우, 시간과 노력이 필요하고, 실행 안정성을 보장할 순 없지만, 검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.
참고
https://www.yes24.com/Product/Goods/112208302
'Programming Language > Java' 카테고리의 다른 글
[Java] 변수(Variable) (0) | 2024.01.04 |
---|---|
[Java] synchronized는 자바 몇 버전 부터 사용된 걸까? (0) | 2023.09.10 |
[Java] JVM (Java Virtual Machine) 자바 가상 기계 (0) | 2023.07.27 |
[Java] Garbage Collection(가비지 컬렉션)이란 (0) | 2023.04.19 |
[Java] 자바의 문자열(String) 함수 정리 (0) | 2023.03.23 |