1. 운영체제에 독립적이다.
JVM을 사용하기 때문에 운영체제에 독립적
자바 응용 프로그램 ←→ 자바 가상 머신 (JVM) ←→ 운영체제
자바 응용프로그램은 JVM하고만 통신하므로 운영체제에 독립적이다.
JVM의 경우 운영체제에 종속적이기 때문에 운영체제에 따른 JVM이 존재한다.
따라서, 자바로 작성된 프로그램은 운영체제와 하드웨어에 관계없이 실행이 가능하다.
2. 객체지향언어이다.
* 객체 지향의 4가지 특징
1. 추상화 (Abstartion)
객체의 공통적인 속성과 기능을 모아 추출하여 정의
> 역할과 구현의 분리를 통해 유연하고 변경이 용이한 프로그램을 설계 할 수있다.
2. 상속 (Interitance)
객체(A)가 다른 객체(B)를 상속받아 상속받은 객체(B)의 요소를 사용하는 것을 의미
상속받은 객체는 자식(A), 상속된 객체는 부모(B)
상위 클래스로부터 확장된 하위클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용 가능
> 코드의 재사용을 통해 반복적인 코드를 최소화하고 속성과 기능에 간편하게 접근 가능
3. 캡슐화 (Encapsulation)
클래스의 내부에 연관있는 속성과 기능을 캡슐로 만들어 데이터를 외부로부터 보호하는 것
즉, 클래스의 내부 변수와 메소드를 캡슐로 만든다.
> 캡슐화를 통해 객체간의 결합도를 낮춰 각 객체의 자율성을 높혀 유지보수를 용이하게 한다.
데이터 보호 : 외부로부터 클래스에 정의된 속성과 기능을 보호
데이터 은닉 : 외부에는 필요한 부분만 노출
4. 다형성 (Polymorphism)
어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질
하나의 객체 또는 메소드가 여러 타입을 참조할 수 있다.
즉, 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것을 의미
상위 클래스 타입의 참조 변수는 관련있는 하위 클래스들을 참조할 수 있는 능력
(예시)
public class Main
{
public static void main(String[] args)
{
System.out.println("문자열 데이터");
System.out.println(123456);
System.out.println(true);
}
}
메소드 이름은 동일하지만 다형성에 의해 여러 타입을 받아서 처리하고 있다.
> 하나의 타입만으로 여러 가지 타입의 객체를 참조하기 때문에 간편하고 유연하게 코드를 작성할 수 있다.
3. 비교적 배우기 쉽다.
4. 자동 메모리 관리 (Garbage Collection)
가비지 컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래밍에 집중할 수 있도록 도와준다.
5. 네트워크와 분산처리를 지원한다.
* 네트워크
다른 장치로 데이터를 이동시킬 수 있는 컴퓨터들과 주변 장치들의 집합
* 분산처리
여러개의 컴퓨터가 동일한 태스크를 처리하기 위해 네트워크 상에서 서로 통신하며 협력하는 것
6. 멀티 쓰레드를 지원한다.
멀티 쓰레드 구현이 쉽다.
* 쓰레드(Thread)란?
프로세스 내에서 실제로 작업을 수행하는 주체
* 멀티 쓰레드 (Multi Thread)
일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행하지만,
멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다.
(각 스레드가 자신이 속한 프로세스의 메모리를 공유)
> 시스템 자원의 낭비가 적다.
하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 할 수 있기 때문에 사용자와 응답성이 좋다.
* 멀티 프로세스 (Multi Process)
여러개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미
(각 프로세스가 독립적인 메모리를 가지고 별도로 실행)
즉, 작업자 = 쓰레드 / 업무 = 프로세스
7. 동적 로딩(Dynamic Loading)을 지원한다.
실행 시 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 된다.
(ver1. 230219)
더 적을까 하다가 과부하가 올 것 같기도 하고 어차피 정처기 실기와 자바의 언어의 객체지향 설계 파트에서 또 나올듯 하여
여기에서 내 턴을 종료한다...
(참조)
객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화 -
객체 지향 프로그래밍은 객체의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미합니다. 객체 지향 프로그래밍의 기본적인 개념과 그 설계를 바르게 하기 위
www.codestates.com
[OOP] 객체지향 프로그래밍(Object Oriented Programming)이란? - 𝝅번째 알파카의 개발 낙서장
IT 업계에 종사하게 된다면 십중팔구 JAVA, C++, C# 중 하나는 다루게 된다. 국내 IT의 최다 공급이자 수요인 JAVA를 위시한 위 세 가지 언어의 공통점은 전부 객체지향언어라는 점이다. 물론 지금에
blog.itcode.dev
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
'JAVA > 기초' 카테고리의 다른 글
| 2.1.1 변수(variable) (1) | 2023.02.23 |
|---|---|
| 1.3.1 Hello.java (맥) (0) | 2023.02.23 |
| 1.2.1 자바 개발도구(JDK) 설치하기 (맥) (0) | 2023.02.21 |
| 1.1.1 자바란? (JAVA Programming Language) (0) | 2023.02.19 |
| 0. JAVA의 정석_시작 (0) | 2023.02.19 |