Java
JAVA란?
개발기록
2024. 6. 14. 17:36

JAVA란?
JAVA는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 1991년 그린 프로젝트라는 이름으로 시작해 1995년에 발표했다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발되었지만 현재 웹 애플리케이션 분야에 가장 많이 사용하는 언어 중 하나이고, 안드로이드를 비롯한 모바일 기기용 소프트웨어 개발에도 널리 사용되고 있다. 현재 버전 20까지 출시했다. 자바의 개발자들은 유닉스 기반의 배경을 가지고 있었기 때문에 문법적인 특성은 파스칼이 아닌 C++의 조상인 C 언어와 비슷하다. 자바를 다른 컴파일 언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM(Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다. 때문에 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아떨어져 폭발적인 인기를 끌게 되었다. (출처 : 나무위키)
JAVA의 특성
- 객체 지향 언어
절차 지향 언어와 다르게 하나의 기능을 객체형태로 만들어 객체들을 결합하여 하나의 프로그램을 만들수 있다. - 인터프리터 언어
자바는 컴파일 언어인 동시에 인터프리터 언어이다. 자바는 텍스트 소스를 컴파일하여 클래스파일로 만든다음 자바 런타임이 클래스 파일을 인터프리트 하면서 실행된다. - 독립적인 플랫폼
자바가상머신(JVM, Java Virtual Machine)을 통해 JVM이 설치되어 있는 OS에서는 모두 자바로 작성된 프로그램이 실행 가능하다. JVM의 경우는 기존의 하드웨어로 구성된 컴퓨터를 소프트웨어적으로 구현한 것으로, 자바로 작성된 프로그램은 모두 이 JVM을 통해 실행되므로 자바 프로그램을 실행하기 위해서는 JVM이 설치되어 있어야 한다. 자바로 작성된 프로그램을 실행 할 수 있는 가상의 컴퓨터이다. - 자동 메모리 관리
다른 프로그래밍 언어와는 달리, 자바는 가비지 컬렉터가 자동으로 메모리를 관리하여 참조되고 있지 않은 메모리를 해제해준다. 이러한 특징으로 인해 프로그래머는 메모리 관리에 신경 쓸 필요 없이 오직 프로그래밍에만 집중 할 수 있다.
JAVA의 장단점
장점
- 플랫폼 독립성: 자바의 가장 큰 장점 중 하나는 "한 번 작성하면 어디에서나 실행 가능하다"는 철학을 지향한다는 것입니다. 이는 자바 가상 머신을 통해 이루어지며, 이로 인해 자바로 작성된 코드는 다양한 플랫폼에서 실행할 수 있습니다.
- 객체지향 프로그래밍: 자바는 객체지향 프로그래밍 언어로, 상속, 캡슐화, 다형성 등의 개념을 지원합니다. 이러한 특성은 코드의 재사용성과 유지보수를 쉽게 만들어 줍니다.
- 강력한 API: 자바는 다양한 기능을 수행하는 방대한 라이브러리와 API를 제공합니다. 이를 통해 네트워크 프로그래밍, 데이터베이스 연결, 그래픽 사용자 인터페이스(GUI) 구성 등 많은 기능을 쉽게 구현할 수 있습니다.
- 멀티스레딩: 자바는 멀티스레딩을 지원하여 CPU 사용을 최적화하고 동시에 여러 작업을 처리할 수 있습니다.
단점
- 성능: 자바는 해석형 언어로, 컴파일형 언어에 비해 실행 속도가 상대적으로 느릴 수 있습니다. 이는 성능에 민감한 애플리케이션 개발에 제한을 둘 수 있습니다.
- 메모리 소비: 자바의 자동 메모리 관리 기능인 가비지 컬렉션은 메모리를 자동으로 회수하지만, 이로 인해 추가적인 CPU 자원이 필요하며 때로는 메모리 사용량이 늘어날 수 있습니다.
- 반응형 애플리케이션 개발의 한계: 자바는 기본적으로 블로킹 I/O 모델을 사용하기 때문에, 이벤트 기반의 반응형 애플리케이션 개발에는 한계가 있을 수 있습니다.
- 상대적으로 복잡한 문법: 자바는 C++와 비슷한 문법을 가지고 있으며, 특히 초보자에게는 배우기 어렵다는 지적이 있습니다.