일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹 기초
- 자바
- 웹 렌더링
- 동적 타입
- 세션
- 프디아
- 비동기기술
- 정적 타입
- eslint
- 다양한 기능
- prettier
- jwt
- gatsby.js
- 기본 타입
- 타입스크립트
- 웹 클라이언트
- 예외 클래스
- 서버 통신
- 쿠키
- scss
- 웹
- CORS
- HTTP
- 백그라운드 실행
- Boxmodel
- 웹 스크래핑
- 프로디지털아카데미
- Visual Studio Code
- Flask 오류
- 신한투자증권
- Today
- Total
Moon Blog
자바 기초 - (1) 특징 본문
- 자바는 객체 지향 언어이다. 객체 지향 언어란 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 언어를 말한다. 쉽게 이해하기 위해 예시를 들어보겠다. 라면을 프로그램이라고 하면 라면을 구성하는 면, 스프, 후레이크, 물 등이 객체라고 보면 된다. 제대로 된 라면을 끓이기 위해서는 이 객체들이 필요한 것이다.
-객체 지향 프로그래밍의 특징
1) 캡슐화 : 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것으로 객체의 가장 기본적인 특징이다. 사람을 예시로 들자면, 사람의 몸은 피부와 근육으로 둘러 싸여있다(캡슐). 만약 이것들로 싸여 있지 않다면, 장기, 혈액, 안구 등 몸을 구성하는 요소들(객체)이 흘러내릴 것이다.
2) 상속 : 자식 클래스가 부모 크래스의 속성을 물려받고 기능을 추가하여 확장하는 개념이다. 자바에서는 부모 클래스 = 슈퍼 클래스, 자식 클래스 = 서브 클래스 라고 지칭한다. 상속은 실생활에서 많은 예시를 볼 수 있다. 대표적인 예시를 들자면
[생물] -> [동물] -> [포유류] [양서류] [어류]
-> [식물] -> [나무] [풀] [꽃]
이런 식으로 하위 개체가 상위 개체의 속성을 가지는 관계를 알 수 있다.
3) 다형성 : 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하게 구현되는 것을 말한다. 상속의 특징과 연관이 있다.
- 메소드 오버라이딩 : 슈퍼 클래스에서 구현된 메소드를 서브 클래스에서 동일한 이름으로 자신의 특징에 맞게 다시 구현한다.
- 메소드 오버로딩 : 클래스 내에서 이름이 같지만 서로 다르게 동작하는 메소드를 여러 개 만든다.
4) 추상화 : 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 모델화 하는 개념이다.
쉽게 말해 클래스를 정의하는 것이다. 상속의 특징과 연관이 있다.
- 자바의 특징
1. 플랫폼에 독립성
>>> 자바는 개발 단계에서부터 플랫폼에 독립적으로 설계되었다. 이 말은 즉, 운영체제나 하드웨어 상관없이 자바 가상 기계(JVM)만 있으면 어디서나 자바로 작성된 프로그램을 동일한 실행 환경으로 제공한다는 것이다. 또한 자바는 웹 브라우저, 분산 환경의 지원 등으로 네트워크에 연결된 어느 클라이언트에서도 실행이 가능하다. 이런 점들을 지칭하는 단어로 WORA (Write Once Run Anywhere)가 있다. 자바의 플랫폼 독립성을 가능하게 하는 것은 JVM과 바이트 코드 덕분이다. 바이트 코드는 JVM에서만 실행되는 기계어로 바이너리 코드로 작성되어 있다. 이진수로 작성되기 때문에 깊게 공부하고자 하는 것이 아니면 바이너리 코드는 개념만 아는 것이 편할 거라고 생각한다.
2. 메모리 관리
>>> 자바는 JVM이 지속적으로 메모리를 확인하여 더 이상 사용되지 않는 메모리를 자동으로 해제시켜 준다. C 또는 C++ 등 다른 언어는 개발자가 직접 메모리를 해제해야 하기에 이는 자바의 큰 장점이다. 이렇게 사용되지 않는 메모리를 자동으로 관리시켜 주는 것을 Garbage Collection 기능이라 한다.
3. 동적 로딩
>>> 자바는 C언어와 달리 동적 로딩을 지원한다. 이는 프로그램이 실행될 때 모든 객체를 생성하는 것이 아닌, 객체가 필요한 부분일때 클래스를 동적 로딩하여 생성한다. 동적 로딩은 클래스를 일부 변경 시 다시 컴파일할 필요가 없다. 다만, 메모리를 필요할 때마다 불러오기에 프로그램 실행 속도가 정적 로딩에 비해 느리다. 이런 속도에 문제를 해결하기 위해 자바는 static 키워드를 사용한다.
그렇다면 정적 로딩은 무엇일까? 정적 로딩은 동적 로딩과 반대되는 개념이다. 프로그램 실행 시 모든 실행파일이 메모리에 적재되어 실행되는 로딩 방식이다. 이는 메모리를 많이 차지하지만, 실행 속도가 빠르다는 장점이 있다.
4. 멀티 쓰레드
>>> 자바는 하나의 프로그램에서 여러 개의 쓰레드를 동시에 실행할 수 있는 환경을 지원한다. 쓰레드는 프로그램의 실행 단위로 프로세스 내 주소 공간 및 자원을 공유하는 역할을 한다. 그럼 이를 동시에 실행한다면 프로세스 내 메모리 공유를 통해 시스템 자원 소모가 줄어드는 장점이 있다.
@틀린 부분이 있다면 댓글을 달아주세요!! 더 공부하고 수정하겠습니다.
'Java' 카테고리의 다른 글
자바 예외 클래스 (0) | 2021.10.13 |
---|---|
자바 Scanner 클래스 (0) | 2021.10.12 |
자바 기초 - (2) 구조 (0) | 2021.10.12 |