-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
83 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
--- | ||
layout: post | ||
title: <JAVA> 자바의 정의와 특징 및 SOLID | ||
categories: JAVA | ||
tags: [JAVA] | ||
--- | ||
## 자바의 정의 | ||
|
||
- 자바는 썬 마이크로시스템즈에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어 | ||
|
||
|
||
|
||
## 자바의 특징 | ||
### 1. 객체 지향 프로그래밍 (OOP) | ||
|
||
> 프로그래밍을 개발하는 기법으로 , 부품에 해당하는 객체들을 먼저 만들고 객체들을 조립 및 연결하여 전체 프로그램을 완성 하는 것 | ||
**캡슐화** | ||
|
||
- 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것 | ||
- 가장 중요한 목적은 **정보은닉**으로 캡슐화를 하면 불필요한 정보를 감출 수 있음 | ||
|
||
**추상화** | ||
|
||
- 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법 | ||
- 인터페이스와 추상클래스 | ||
|
||
**다형성** | ||
|
||
- 형태가 같은데 다른 기능을 하는 것 | ||
- 한 레퍼런스 변수가 다른 형태의 객체를 참조할 수 있음 | ||
- 오버로딩, 오버라이딩 등등 | ||
|
||
**상속성** | ||
|
||
- 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있도록 도와주는 개념 | ||
- 코드의 중복을 없애기 위함 | ||
|
||
### 2. 높은 이식성 | ||
|
||
- 이식성 : 서로 다른 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것 | ||
- 자바가 JVM 위에서 돌아가고 JVM에서는 별도의 Java Compiler 를 통해 사용자의 코드를 Byte 코드로 변환하기 때문에 모든 자바 프로그램은 자바 실행 환경 (JRE) 이 설치되어 있는 **모든 운영체제에서 실행 가능** | ||
|
||
|
||
### 3. 자동 메모리 관리 (gc) | ||
|
||
- 자바는 **가비지 컬렉션**을 사용해 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 자동으로 해제 | ||
|
||
|
||
### 4. 멀티 쓰레드 지원 | ||
|
||
- 하나의 프로그램에서 여러 개의 쓰레드가 동시에 실행할 수 있는 환경을 지원 | ||
- 동시에 여러가지 작업을 하는 경우 , 대용량 작업을 빨리 처리할 경우 사용 필요 | ||
|
||
![ㅇㅇ](https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99931C335AF2684421) | ||
|
||
|
||
### 5. 동적 로딩 | ||
|
||
- 실행 시 모든 클래스가 로딩되지 않고, **필요한 시점에 클래스를 로딩해서 객체를 생성** | ||
- 그때그때마다 메모리에서 불러오기 때문에 프로그램 실행 속도가 정적로딩에 비해 느림 | ||
|
||
|
||
## 정리 | ||
|
||
**자바의 정의** | ||
|
||
: 자바는 객체지향 프로그래밍 언어 | ||
|
||
|
||
**자바의 특징** | ||
|
||
: 객체 지향 프로그래밍 , 높은 이식성 , 자동 메모리 관리, 멀티 쓰레드 지원, 동적 로딩 등이 있음 | ||
|
||
|
||
## 레퍼런스 | ||
|
||
[[JAVA] 자바(Java) 언어의 특징](https://life-with-coding.tistory.com/430) | ||
|
||
[[JAVA 파헤치기]1. 자바의 특징](https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rhksdlr134&logNo=221548954712) | ||
|
||
[JAVA :: 자바란? 자바의 특징(객체지향, 메모리관리, 멀티스레드, 동적로딩, 오픈소스)](https://hongku.tistory.com/171?category=799262) | ||
|