[JAVA] 자바란?

2021. 1. 12. 23:54·Dev & Lenguage/JAVA

안녕하세요. 저스티입니다.

블로그를 이전하여 옮기게 된 내용입니다.

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.

 

추가

  1. 모든것이 객체다 ★★★(중요)
     - 문제내의 어떤 개념 요소들이든 프로그램의 객체로 나타낼 수 있다.
     - 객체는 상태(State)와 행동(Behavior), 정체정(Identity)를 갖는다.
  2. 각 객체들은 상호간의 메시지를 보내어 일을 수행한다.
     - 객체에게 일을 요청하려면 `메시지를 보낸다`
        [메소드(Method)를 호출하는 것을 메시지라고 생각하면 된다.]
  3. 각 객체는 다른 객체들로 이루어딘 자신의 메모리를 갖는다.
     - 기존 객체를 포함해서 새로운 종류의 객체를 만든다.
     - 복잡도가 높은 프로그램을 만들 수 있다.
  4. 모든 객체는 자신의 타입이 있다.
     - 객체는 클래스(class)의 인스터스(Instance)이다.
     - 클래스
         ! 설계도
         ! 같은 목적을 가지는 변수와 메소드 집합.
     - 인스턴스
         ! 설계도를 바탕으로 구현(실체)된 것.
         ! 실체가 되면 메모리에 할당된다.

 

 

 

정리

OOP에서는 절자적 언어에 새로운 개념을 추가했기 때문에,

같은 기능의 절차적 프로그램보다 자바 프로그램이 훨씬 더 복잡하다고 생각할 것입니다.

그래도 일반 절자적 프로그램보다 쉽게 쉬울것입니다.

 

우리가 언어로 자바를 선택했으면 최소한 어떤 선택사항들이 있는지 알아야하고, 

왜 그런 방향을 택했는지에 대한 명확한 비전을 가져야 한다.

 

 

 

참고 자료

[도서] JAVA의 정석
[도서] 이것이 자바다 

[도서] Thingking in JAVA - 4TH

반응형

'Dev & Lenguage > JAVA' 카테고리의 다른 글

[JAVA] Java version에 대한 기록  (0) 2021.01.13
[JAVA] 변수(Variable), 연산자(Operator), 조건문과 반복문  (0) 2021.01.12
'Dev & Lenguage/JAVA' 카테고리의 다른 글
  • [JAVA] Java version에 대한 기록
  • [JAVA] 변수(Variable), 연산자(Operator), 조건문과 반복문
Jo__oD
Jo__oD
[N개의 취미중 1개] Playground
  • Jo__oD
    JUST
    Jo__oD
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Framework & Library
        • React
        • Next.js
        • Spring & Spring Boot
      • Dev & Lenguage
        • JavaScript
        • JAVA
        • 백엔드 & 프론트엔드 개발
      • Cloud & DevOps
        • OpenStack
      • Knowledge N
        • 운영체제(OS)
        • 네트워크(Network) N
        • 데이터베이스(DB)
        • 자료구조 & 알고리즘
        • 디자인 패턴
      • 운영
        • Linux
        • Windows
        • Docker
      • 기타
        • HTTP & 인증체계
        • Raspberry Pi
      • Error
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    가상 머신 Ubuntu
    지식채우기
    ip할당 설정
    가상 머신
    raspberry pi
    가상 머신 생성
    http 개념
    오픈스택을 다루는 기술
    OpenStack
    네트워크 분할
    가상머신
    http
    VMware 생성
    Keystone
    VMware Ubuntu 생성
    도서
    ip자동할당
    java
    가상 머신 Ubuntu 생성
    가상 머신 서버 생성
  • 최근 댓글

  • 최근 글

  • 160x600
  • hELLO· Designed By정상우.v4.10.3
Jo__oD
[JAVA] 자바란?
상단으로

티스토리툴바