일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 한글
- 스프링
- Python
- AWS
- 프로그래머스
- programmers
- neo4j
- 코딩학습
- iPad
- 코틀린
- 윈도우
- graph DB
- SQL
- 아이패드
- 튜토리얼
- Apple
- spring
- 유니티
- Kotlin
- 녹화프로그램
- 파이썬
- 영상편집
- DaVinci Resolve
- 아이폰
- kakao
- 윈도우10
- Tutorial
- unity
- 애플
- json
- Today
- Total
코드짜는 노인네
[자바(Java)] 자바언어의 특징 본문
[자바(Java)] 자바언어의 특징
자바를 사용하기전, 자바의 언어 특징을 제대로 알고 가야겠다는 생각이 딱 들었습니다. 자바언어의 특징은 다음과 같습니다.
- 운영체제에 독립적이다.
- 객체지향언어이다.
- 자동 메모리 관리 (Garbage Collection)
- 멀티쓰레드를 지원한다.
- 동적 로딩 (Dynamic Loading)
■ 운영체제에 독립적이다.
운영체제와 독립적이다는 뜻은 어떠한 운영체제에서도 쉽게 사용이 가능하는 뜻입니다. 원래라면 Window, MacOS, Linux 등과 같은 다양한 운영체제에 적용을 하기가 힘들겠지만, 자바는 에뮬레이터인 JVM(Java Virtual Machine) 덕분에 운영체제에 구애받지 않고 사용이 가능합니다.
JVM (Java Virtual Machine)
자바는 '자바를 실행하기 위한 가상 기계'인 JVM하고만 통신하고 JVM이 자바 애플리케이션으로부터 받은 명령을 OS(운영체제)가 이해할 수 있도록 변환하여 전달한다. 다만, 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석되기 때문에 속도가 느리다는 단점을 가지고 있다. 또한 JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다.
■ 객체지향언어
상속, 캡슐화, 다향성이 적용된 객체지향 프로그래밍 언어이다.
- 상속 : 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의
- 캡슐화 : 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉
- 다향성 : 하나의 객체가 여러 가지 타입을 가질 수 있는 것
■ 자동 메모리 관리 (Garbage Collection)
자바는 가비지 컬렉터(Garbage Collector)가 주기적으로 검사하여 메모리를 관리(청소)를 해준다. 만일 해당 기능이 없다면 개발자가 직접 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 처리해야하는 불편함을 가지게 될 것이다.
■ 멀티쓰레드를 지원
자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현이 가능하며, 관련된 라이브러리(Java API)가 제공되여 구현이 쉽게 가능하다. 다만 멀티 쓰레드는 다른 쓰레드가 작업하는것에 대해 신경을 쓰지 않기 때문에 자원을 동시에 사용하거나 순서의 제어가 필요한 경우에는 동시성 처리를 해줘야할 필요가 있다.
■ 동적 로딩 (Dynamic Loading)
여러 개의 클래스로 구성되어있는 자바 애플리케이션은 실행 시에 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점을 가지고 있으며, 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.
'코딩 학습 > Java' 카테고리의 다른 글
[Java] 자바 첫걸음! Hello Java 분석 (0) | 2021.03.06 |
---|---|
[Java] OpenJDK (Azul) 환경변수 설정방법 (0) | 2021.03.05 |