안녕하세요. 저스티입니다.
블로그를 이전하여 옮기게 된 내용입니다.
JAVA란?
- 등장 - 처음 Oak(오크)라는 이름에서 JAVA로 변경. ! 이 후, 인터넷에서 실행되는 프로그래밍 언어로 사용되었고, 이름도 JAVA로 변경.
- 오크는 가전제품에서 사용될 목적이었으나, 후에 인터넷의 등장!
- 1991년에 Sun Microsystems의 James Gosling과 엔지니어들에 의해서 개발
- JAVA는 C++에 비해 메모리 및 CPU를 지나치게 많이 사용.
자바의 특징
- 이식성이 높은 언어이다(운영체제 독립적). - 자바는 자바 실행 환경(JRE: Java Runtime Enviroment)이 설치되어 모든 운영체제에서 실행 가능.
! JVM(Java Virtual Machine - 자바 가상 기계)를 통해 중간단계인 바이트 코드를 해석하고 실행하게 됨.
자바를 실행시키는 가상의 기계.
이식성이란: 서로 다른 실행 환경을 가진 시스템간에 개발한 하나의 프로그램을 옮겨 실행할 수 있는 것.
ex) A라는 프로그램을 Window나 Unux 등에서 실행 가능하면 이식성 높은 것! - 객체지향 언어이다.
- 프로그램을 개발하는 기법(부품에 필요한 객체들을 먼저 만들고 이것들을 하나씩 조립하여 연결)
- 객체를 만들기 위해선 설계도인 클래스 작성.
- 객체지향 프로그래밍(OOP: Object Oriented Programming).
- OOP의 특성[간략]
! 캡슐화(Encapsulation): 같은 목적을 가지고 있는 Method(메소드)와 Variable(변수)를 하나로 묶는 것.
! 상속(Inheritance): 상위 클래스(부모)를 정보를 하위 클래스(자식)가 물려받는 것,
! 다형성(Polymorphism): 상속을 통해 기능을 Overloading(정의 || 확장)하거나 Overriding(재정의) 하는 것.
! 추상화(Abstraction): 공통되는 특성이나 속성을 추출하여 정의하는 것. - 멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.
- 동시에 여러 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리(서브 작업으로 분리)하기 위해 필요.
- 멀티 스레드 프로그램은 시스템과는 관계없이 구현 가능.
- 라이브러리 API가 제공되어 쉽게 구현 가능.
- 여러 스레드에 대한 스케줄링(Scheduling)을 자바 인터프리터가 담당. - 동적 로딩(Dynamic Loading)을 지원한다.
자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행 -> 이 객체들은 클래스로부터 생성!
- 애플리케이션이 실행될 때 모든 객체 생성 X
- 객체가 필요한 시점에 클래스를 동적로딩 후 객체를 생성.(유지보수 할때 전체 컴파일 X, 유지보수 쉽고 빠름). - 오픈소스 라이브러리가 풍부하다.
- 고급 기능을 구현하려면 시간과 노력이 많이 필요하고, 안전성 보장 X.
검증된 라이브러리 사용시 개발 기간을 단축 쉬킬 수 있다. - 자동 메모리 관리(Garbage Collection)를 한다.
- 가비지컬렉터(Garbage Collector)가 자동적으로 메모리 관리하기 때문에 메모리 관리 X.
추가
- 모든것이 객체다 ★★★(중요)
- 문제내의 어떤 개념 요소들이든 프로그램의 객체로 나타낼 수 있다.
- 객체는 상태(State)와 행동(Behavior), 정체정(Identity)를 갖는다. - 각 객체들은 상호간의 메시지를 보내어 일을 수행한다.
- 객체에게 일을 요청하려면 `메시지를 보낸다`
[메소드(Method)를 호출하는 것을 메시지라고 생각하면 된다.] - 각 객체는 다른 객체들로 이루어딘 자신의 메모리를 갖는다.
- 기존 객체를 포함해서 새로운 종류의 객체를 만든다.
- 복잡도가 높은 프로그램을 만들 수 있다. - 모든 객체는 자신의 타입이 있다.
- 객체는 클래스(class)의 인스터스(Instance)이다.
- 클래스
! 설계도
! 같은 목적을 가지는 변수와 메소드 집합.
- 인스턴스
! 설계도를 바탕으로 구현(실체)된 것.
! 실체가 되면 메모리에 할당된다.
정리
OOP에서는 절자적 언어에 새로운 개념을 추가했기 때문에,
같은 기능의 절차적 프로그램보다 자바 프로그램이 훨씬 더 복잡하다고 생각할 것입니다.
그래도 일반 절자적 프로그램보다 쉽게 쉬울것입니다.
우리가 언어로 자바를 선택했으면 최소한 어떤 선택사항들이 있는지 알아야하고,
왜 그런 방향을 택했는지에 대한 명확한 비전을 가져야 한다.
참고 자료
[도서] JAVA의 정석
[도서] 이것이 자바다
[도서] Thingking in JAVA - 4TH
'Dev > JAVA' 카테고리의 다른 글
[JAVA] Java version에 대한 기록 (0) | 2021.01.13 |
---|---|
[JAVA] 변수(Variable), 연산자(Operator), 조건문과 반복문 (0) | 2021.01.12 |