JAVA/기초

1.1.1 자바란? (JAVA Programming Language)

edoyyoy 2023. 2. 19. 21:49

1. 객체지향 프로그래밍 언어

    * 객체지향 프로그래밍 언어 VS 절차지향 프로그래밍 언어

       1. 객체지향 프로그래밍 언어

           자바, C++, 파이썬 등 종류가 다양하며, 프로그램을 다수의 객체로 만들어 서로 상호작용 하도록 만드는 프로그래밍 언어

           장점 ) 1. 재사용성                 (상속 가능 -> 코드 재사용 가능)

                     2. 생산성 증가            (독립된 개체이므로 생산성 증가)

                     3. 자연스러운 모델링   (객체지향 자체가 세상을 닮았기 떄문에 생각하는 대로 자연스럽게 구현 가능)

           단점 ) 1. 느린 개발 속도          (모든 객체의 역할과 기능을 이해해야 하기 때문에 시간 소요)

                     2. 느린 실행 속도

                     3. 높은 난이도

 

           * 객체란?

              개념이 되는 대상 (사물 뿐만 아니라 동작 또한 객체에 포함)

           * 객체 지향 프로그래밍 (Object Oriented Programming, OOP)

 

       2. 절차지향 프로그래밍 언어

           C언어와 같이 순차적으로 처리하여 프로그램 전체가 연결되어야 함 (유기적 연결)

           서로 분리되어도 안되고 순서가 틀려도 안된다.

           장점 ) 컴퓨터의 처리구조와 유사하기 때문에 빠르다.

           단점 ) 1. 유지보수가 어려움    (하나가 오류나도 전체를 수정해야 하기 때문)

                     2. 비효율적                  (언어의 융통성이 부족해 순서가 바뀌면 결과가 달라질 가능성이 높음)

                                                              

                                                              

2. 운영체제(OS)에 독립적

     * 운영체제(Operating System)란?

        사용자가 컴퓨터를 사용할 수 있도록 환경을 제공하는 프로그램의 모임

        종류 ) Window, Linux, Mac 등

        기능 ) 프로세서, 기억장치, 파일, 정보 등 자원 관리 

                  사용자와 시스템간의 편리한 인터페이스 제공

                  시스템의 하드웨어와 네트워크를 관리하고 제어

 

    * 프로세스란?

       CPU에 의해 처리되는 사용자 프로그램

       즉, 실행중인 프로그램을 의미하며 작업(Job), 태스크(Task)라고도 한다.

      * 프로시저란?

         한 프로그램은 여러개의 프로그램으로 분할될 수 있는데, 분할된 작은 프로그램을 프로시저라고 한다.

 

     * 자바와 C++의 차이

        1. 설계 목표 차이 

            JAVA : 보안, 이식성, 빠른 개발

            C++   : 속도, C언어의 하위 호환성 (절차지향언어 + 객체지향언어(OOP) 결합)

        2. 실행환경

            JAVA : 컴파일 + jar 압축

            C++   : 컴파일 + 링크

        3. 메모리 관리

            JAVA : 가비지 컬렉터 (Garbage Collector)가 자동으로 메모리 관리

            C++   : 프로그래머가 수동으로 사용하지 않는 메모리를 체크하고 반환

        4. 컴파일과 런타임의 차이

            JAVA : 컴파일을 하기 위해 가상머신 (JVM)이 필요

            C++   : 각 운영체제에 맞는 기계어로 컴파일함 (실행 속도가 빠른 이유)

 

        * 왜 자바가 보안성이 좋을까? 

           JVM이 메모리를 관리하기 때문에 해커가 메모리를 조작하기 어려우며, 

           JAVA는 몇 가지 보안 매커니즘을 구현하여 잘못된 프로그램으로 인해 생기는 피해를 막아주도록 설계되어 있음

        * JVM이란? 

           자바 가상 머신 (Java Virtual Machine, JVM)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어

           자바 코드를 컴파일하여 .class 바이트 코드로 만들면 코드가 JVM에서 실행된다. -> 운영체제에 영향을 받지 않는다.

        

3. 풍부한 클래스 라이브러리 (JAVA API)

    * 라이브러리 : 프로그램에서 자주 사용되는 클래스 및 인터페이스의 모음

 


(참조: 코딩팩토리

 

코딩팩토리

My life depends on my efforts

coding-factory.tistory.com

(ver.1 : 230919)

블로그 공부하기 되게 좋다 역시 출간하신 분은 다르다. (아마 출간 하신듯)

이래서 경험이 중요하군

애매한 개념만 아는 걸 확실히 하다보니 이것 저것 검색하는 게 많아져서 은근히 오래걸린다.

블로그로 정리 및 공부하는데 오,, 꾸준히 하시는 분들 정말 대단하신 분들이었다.

하지만 나도 대단하지 ㅎ

정리하면서 지금 수준에서 이해가 가능하고 알아두면 좋을 것 같은 것 위주로 작성했다. 

그런데 2008년도에 올라온 글의 내용과 거의 일치해서 한 번 알아두면 쭉 가겠거니 생각한다.

그도 그럴것이 특징이자, 장점인데 당연하지

알아두면 면접에서 장점이 될 것 같다.