JAVA/기초

1.1.3 자바언어의 특징

edoyyoy 2023. 2. 19. 22:52

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)

더 적을까 하다가 과부하가 올 것 같기도 하고 어차피 정처기 실기와 자바의 언어의 객체지향 설계 파트에서 또 나올듯 하여 

여기에서 내 턴을 종료한다...

 

(참조)

2. 객체지향 프로그래밍 특징_코드 스테이츠 

 

객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화 -

객체 지향 프로그래밍은 객체의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미합니다. 객체 지향 프로그래밍의 기본적인 개념과 그 설계를 바르게 하기 위

www.codestates.com

2. 객체지향 프로그래밍 특징_알파카님

 

[OOP] 객체지향 프로그래밍(Object Oriented Programming)이란? - 𝝅번째 알파카의 개발 낙서장

IT 업계에 종사하게 된다면 십중팔구 JAVA, C++, C# 중 하나는 다루게 된다. 국내 IT의 최다 공급이자 수요인 JAVA를 위시한 위 세 가지 언어의 공통점은 전부 객체지향언어라는 점이다. 물론 지금에

blog.itcode.dev

6. 스레드 및 멀티 스레드 개념_TCPSchool

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com