자바 프로그래밍 언어의 특징은?
1. 객체 지향 프로그래밍(OOP)
*(OOP(Object-Oriented Programming)
객체의 관점에서 프로그래밍을 하는것을 의미한다. 각 객체는 메세지를 주고받거나 데이터를 처리한다.
유연하고 변경이 용이하여 대규모 개발에 많이 사용되며 개발과 보수가 간편하다.
구성 요소
- 클래스(Class) - 객체가 어떤 데이터를 갖고 어떤 연산을 하는지 정의
- 객체(Object) - 클래스의 타입으로 선언한 것(메모리에 할당이 안되어도 객체이다) 그 객체가 메모리에 할당 되어지면 인스턴스라고 한다. 객체는 클래스의 인스턴스이다 객체에 인스턴스가 포함된다고 생각하면 편하다.
- 메서드(Method), 메시지(Message) - 클래스로부터 생성된 객체를 사용하는 방법. 찾아보니 매소드와 메세지는 조금 다른 개념 같은데 잘 이해가 안되서 추후에 코드 짜보면서 좀 더 공부해야할듯
특징
- 추상화(abstraction)
불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다.
- 상속(inheritance)
클래스의 모든 특징들을 물려 받는 것을 말한다. 특징을 물려주는 클래스를 부모 클래스라고 하며 물려받는 클래스는
자식 클래스라고 부른다.
이미 상속받은 클래스를 다른 클래스가 다시 상속받는것도 가능하다.
- 캡슐화(encapsulation)
외부로 부터 세부적인 내용에 접근을 못하게 내부로 숨겨 정보를 은닉할 수 있다.
일잔적으로 이 때문에 접근제한자를 사용한다.
- 다형성 개념(polymorphism)
하나의 클래스나 매소드(함수)가 다양한 방식으로 동작이 가능한 것을 말한다.
오버라이딩-부모의 클래스가 자식의 클래스의 값으로 대체되는 것
오버로딩-같은 매소드의 매개변수에 따라 다르게 동작하는 오버로딩
- 동적 바인딩(Dynamic Binding)
다형성을 사용하여 메소드를 호출할 때, 발생한는 현상을 말한다.
파생 클래스의 객체에 대해, 기본 클래스의 포인터로 가상 합수가 호출될 때 일어난다.
2. 자동 메모리 관리(gc)
* gc(garbage collection)-가비지 컬렉션, 메모리 관리 기법 중의 하나이다.
더이상 사용되지 않는 오브젝트들을 가비지 컬렉션을 담당하는 프로세스가 자동으로 메모리에서 제거하도록 한다.
3. 운영체제에 독립적
자바가 자바가상머신(JVM) 위에서 돌아가기 때문에 운영체제 종류와 무관하게 동작한다.
*자바가상머신(Java Virtual Machine)- 자바 바이트코드를 실행하는 주체, 자바가상머신은 규격에 정의된 대로 자바 바이트 코드를 실행한다.
*자바 바이트코드(Java bytecode) - 자바가상머신이 실행하는 명령어의 형태,자바 컴파일러에 의해 생성된다.
4. 멀티쓰레드 지원
자바는 운영체제의 지원 없이 멀티스레드 프로그래밍 가능하다
멀티 쓰레드- 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는것을 의미한다.
5. 동적 로딩 지원
애플리케이션이 실행될 때 모든 객체가 생성되지 않고 객체가 필요한 시점에 클래스를 동적 로딩하여 생성한다.
cpu 사용량을 줄이기 위함으로 생성되기전에는 동적 링크 라이브러리(.dll)에 저장되어있다. 이는 프로그램 실행
도중 객체가 필요한 시점에 cpu 호출에 의해 생성된다.
'java' 카테고리의 다른 글
FileReader/FileWriter (0) | 2021.10.20 |
---|---|
HashMap/Calender (0) | 2021.10.20 |
회원관리 기능 (0) | 2021.10.20 |
[9/17] class ,생성자,메소드 (0) | 2021.10.20 |
[JAVA-문법] 1. 출력,main메소드 (0) | 2021.09.13 |