728x90
반응형
자바(Java Programming Language)
자바는 썬 마이크로즈시스템에서 개발해 1996년 1월에 공식적으로 발표한 객체 지향 프로그래밍 언어입니다.
자바로 소프트웨어를 개발할 때의 가장 이점 중 하나는 이식성입니다. 자바는 다양한 운영체제와 하드웨어에서 동작하며, 가상 머신(Virtual Machine)을 사용하여 이식성이 높은 언어입니다. 자바의 주요 목표는 "한 번 작성하면 어디에서나 실행할 수 있다"입니다.
그리고 자바는 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공해주기 때문에 자바에서 이 클래스 라이브러리만 잘 활용해도 자바 프로그램을 작성할 수 있습니다.
자바언어의 특징
- 이식성[운영체제 독립성]
- 자바 실행환경이 설치되어 있는 모든 운영체제에서 실행이 가능합니다.
- 자바는 운영체제나 하드웨어가 아닌 JVM 하고만 통신하고, JVM이 자바 응용 프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달합니다.
- 자바로 작성된 프로그램은 운영체제에 독립적이지만, JVM은 운영체제에 종속적이어서 썬에서는 여러 운영체제에서 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있습니다.
- 객체지향 프로그래밍 (OOP)
- 자바는 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향 언어입니다.
- 객체지향 프로그래밍이란, 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 만들고, 하나씩 조립하여 전체 프로그램을 완성하는 것을 말합니다.
- 객체를 생성하기 위해 클래스라는 설계도를 작성하고, 객체 간의 상호작용으로 목적에 맞는 프로그램을 구현합니다.
- 객체지향 언어는 코드의 재사용성, 유지 보수성, 확장성 등의 장점을 제공합니다.
- 자동 메모리 관리 (Garbage Collection)
- 자바로 작성된 프로그램이 실행되면, 가비지 컬렉터가 자동적으로 메모리를 관리해 주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 됩니다.
- 객체 생성 시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 가비지 컬렉터를 실행시켜 자동으로 사용하지 않는 객체를 제거합니다.
- 가비지 컬렉터가 없다면 프로그래머가 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 처리해야 합니다.
- 멀티스레딩 지원 (Multithreading)
- 자바는 멀티스레드 프로그래밍을 지원합니다. 멀티스레드를 사용하여 자원을 효율적으로 활용하고, 동시성 프로그래밍을 가능하게 합니다.
- 운영체제에 따라 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 운영체제와 상관없이 멀티 스레드를 쉽게 구현할 수 있습니다.
- 그리고 여러 스레드에 대한 스케쥴링을 자바 인터프리터가 담당하게 됩니다.
- 동적 로딩 (Dynamic Loading)
- 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있습니다.
- 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있습니다.
- 동적 로딩을 사용하여 필요한 클래스만 로딩하고, 메모리를 효율적으로 사용할 수 있습니다.
- 컴파일 언어, 인터프리터 언어
- 자바는 컴파일 언어와 인터프리터 언어의 특성을 모두 갖고 있습니다.
- 컴파일 단계에서 자바는 전체 코드를 한 번에 번역하여 이진 파일인. class 클래스 파일로 만듭니다.
- 이 클래스 파일은 시스템에 무관한 이진 파일로, 자바가 컴파일 언어에 가까운 속도와 시스템 독립성을 얻게 해 줍니다.
- 자바 런타임은 자바 가상 머신(JVM)의 자바 인터프리터를 이용하여 클래스 파일을 한 줄씩 인터프리트 하면서 실행합니다.
- 이 과정에서 자바 인터프리터는 자바 바이트 코드로 작성된 실행 프로그램을 한 줄씩 읽으며 컴퓨터가 이해할 수 있는 2진 코드로 번역한 후 실행시킵니다.
- 분산 네트워크
- 자바에는 TCP/IP 라이브러리가 기본적으로 포함되어 있고, HTTP 프로토콜을 지원합니다.
- 풍부한 오픈소스 라이브러리
- 자바는 프로그램에서 사용하는 오픈소스 라이브러리의 양이 풍부합니다.
- 검증된 오픈소스 라이브러리를 사용하면 프로그램을 다시 컴파일할 필요가 없다.
자바의 단점
- 속도 문제
- 자바는 JVM(Java Virtual Machine)에서 실행되기 때문에, 코드의 실행 시간이 길어질 수 있습니다.
- 바이트 코드를 기계어로 변환해 주는 JIT컴파일러와 같은 기술 적용으로 JVM 기능이 향상되어 속도문제가 개선되었습니다.
- 메모리 관리
- 자바는 가비지 컬렉션(Garbage Collection)을 사용하여 자동으로 메모리를 관리합니다.
- 하지만, 가비지 컬렉션으로 인해 실행 시간이 느려질 수 있고, 메모리 누수 등의 문제가 발생할 수 있습니다.
- 복잡한 구조
- 자바는 객체 지향 언어이기 때문에, 초기 학습 시 복잡한 구조를 이해해야 합니다.
- 또한, 다른 언어보다 코드 길이가 길어지는 경향이 있어서, 개발자가 코드를 작성하는 시간이 더 오래 걸릴 수 있습니다.
- 자바는 예외 처리가 잘 되어있지만, 개발자가 직접 예외처리를 설정해 주어야 번거로움이 있습니다.
- 자원 소모
- 자바는 자원을 많이 소모할 수 있습니다.
- 특히, GUI(Graphical User Interface)와 같은 그래픽 처리 작업에서는 자원 소모가 크게 증가할 수 있습니다.
728x90
반응형
'☕️Java[자바]' 카테고리의 다른 글
[Java] 자바 변수 Variable에 대해 봅시다 -Gyunny (0) | 2024.04.05 |
---|---|
[Java] 자바 코드에서 주의할 점(2) (0) | 2023.03.28 |
[Java] 자바 코드에서 주의할 점(1) (0) | 2023.03.27 |