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년도에 올라온 글의 내용과 거의 일치해서 한 번 알아두면 쭉 가겠거니 생각한다.
그도 그럴것이 특징이자, 장점인데 당연하지
알아두면 면접에서 장점이 될 것 같다.
'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.3 자바언어의 특징 (0) | 2023.02.19 |
| 0. JAVA의 정석_시작 (0) | 2023.02.19 |