Skip to content

Latest commit

 

History

History
161 lines (107 loc) · 11.3 KB

readme.md

File metadata and controls

161 lines (107 loc) · 11.3 KB

Java

[ 2022-07-21 ]

목차


  • Java란 무엇인가

    자바는 1991년 썬 마이크로 시스템즈 사에서 제임스 고슬링 이 고안한 프로그래밍언어이다.
    자바는 객체지향 프로그래밍(OOP, Object Oriented Programming) 언어이다.
    자바의 정석 책에서는 자바 언어자체가 현실세계를 모방하고 만든언어라고한다.
    먼저 위키백과에 작성되어있는 내용이다.

    "자바(Java)는 자바로 기술된 프로그램 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭이다.   
    자바 프로그램은 운영체제나 하드웨어에 의존하지 않는 바이트 코드(중간 언어)인 추상적인 코드로 구현된다.   
    따라서, 자바 프로그램을 실행하기 위해서는 자바 가상 머신(JVM)과 개발에 필요한 표준 라이브러리 세트와 컴파일러의 환경만 맞추면   
    자바 프로그램은 모든 환경에서 동일하게 동작한다. 이러한 실행환경과 개발환경을 제공하는 것이 자바 플랫폼이다."  
    

    기존에는 컴퓨터 운영체제(OS)끼리는 서로 호환이 되지 않아 예를 들어 윈도우에서 만든 프로그램은 유닉스에서
    돌릴 수 없어 새롭게 바꿔야 하는 어려움이 있었으나 자바는 각 OS에서 한 프로그램으로 동작할 수 있도록 가상머신을 만들어 이 문제를 해결했다.
    쉽게 말해 자바가 나오기 이전에는 운영체제에 따라 프로그램이 호환되지 않았기 때문에 프로그램을 수정해줘야하는 문제들이 있었으나,
    자바가 이를 JVM(자바가상머신)이라는 가상머신을 이용해 이를 해결해버린것이다.

    image url

    이처럼 자바는 OS에서 직접 프로그램이 구동되는 것이 아닌 JVM이라는 가상 머신을 통해 프로그램이 구동 되기 때문에 os에 JVM만 구동이 되게 만든다면 어떤 OS에서건 프로그램을 수정할 필요 없이 구동 시킬 수 있는 것이다.
    이렇게 설계된 이유는 자바라는 언어의 설계 목표 중 하나인 이식성에 있다. 자바라는 언어는 기기에 독립적이도록 만든 언어이기 때문이다.
    java 는 jvm하고만 상호작용을 하기 때문에 OS 와 하드웨어에 독립적이여서 다른 OS나 기기에서도 프로그램의 변경이 필요 없이 실행이 가능해지기 때문이다.

  • Java의 특징 7가지

    • 객체 지향 언어

      절차 지향 언어와 다르게 하나의 기능을 객체형태로 만들어 객체들을 결합하여 하나의 프로그램을 만드는 것.
      자바는 객체지향 언어의 대표적인 언어이다.

    • 인터프리터 언어

      자바는 컴파일 언어인 동시에 인터프리터 언어이다.
      자바는 텍스트 소스를 컴파일하여 클래스파일로 만든다음 자바 런타임이 클래스 파일을 인터프리트 하면서 실행된다.

    • 독립적인 플랫폼

      어떠한 운영체제라도 독립적으로 자바언어를 사용할 수 있다.
      그 이유는 앞서 말한 JVM에 의해서 실행되기 때문이다.

    • 자동 메모리 관리

      자바는 개발자가 직접 메모리에 접근할 수 없으며 자바가 직접 관리한다.
      객체 생성시 자동적으로 메모리 영역을 찾아서 할당. 또한 사용하지 않는 객체를 제거시켜 준다.
      C언어는 개발자가 직접 코드를 작성해야 했지만 자바는 이러한 작업을 자동으로 해주기 때문에 메모리 관리에 신경쓰지 않아도 된다.

    • 멀티 쓰레딩 지원

      하나의 프로그램 단위가 동일한 쓰레드를 동시에 수행할 수 있다.
      운영체제마다 멀티 쓰레드를 이용하는 API가 다르나 자바의 경우는 자바 API를 사용하기 때문에 쉽게 구현 가능하다.

    • 동적이다

      객체간의 상호 작용을 정의하기 때문에 필요하지 않는 객체는 생성되지 않고, 필요한 객체만 생성하여 사용한다.
      오류가 발생하면 오류의 클래스만 수정하면 되므로 전체를 수정할 필요가 없다. 즉 유지보스를 쉽고 빠르게 진행할 수 있다.

    • 안전하고 강력하다

      모든 메모리 접근을 자바 시스템이 관리하기 때문에 시스템 붕괴의 우려가 없다.
      자바는 포인터 개념이 없고 유형 정의가 강고하여 실행 전에 클래스 파일을 이용한 프로그램 검사가 가능하다.

  • 컴파일이란 무엇인가

    자바는 컴파일 언어인 동시에 인터프리터 언어이다. 라고 하는데 그렇다면 컴파일이란 무엇일까?
    컴퓨터는 0과 1로만 모든 명령을 이해하고 실행한다. 우리가 ‘A’라는 문자를 입력하더라도 컴퓨터는 이것을 0과1로 이루어진 이진코드로 해석한다.
    그런데 ‘A’라는 문자를 어떻게 해석해줄 것인가? 이러한 기능을 컴파일 이라고 한다.

    ● 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꾸어 주는 과정.

    ● 원시코드에서 목적코드(목적파일)로 바꾸어 주는 것이 컴파일이고 목적 파일을 실행 파일로 바꾸는 것이 링크.

    ● 원시코드는 우리가 작성한 코드, 목적코드는 컴퓨터가 이해할 수 있도록 번역한 코드.

    ● 컴파일과 링크의 기능을 하는 것이 컴파일러이다.

  • 객체지향 프로그래밍(Object Oriented Programming)

    컴파일이란 무엇인지는 이해했다. 그렇다면 위에서 말하는 객체지향 프로그래밍이란 무엇일까?
    객체지향 프로그래밍(Object Oriented Programming)은 문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 말한다.
    이 방식은 오늘날 가장 많이 사용하는 대표적인 프로그래밍 방식이고 JAVA, C# 등이 대표적인 객체지향 프로그래밍 언어라고 한다.

    객체지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관 있는 처리부분(함수)과 데이터 부분(변수)를 하나로 묶어 객체(인스턴스)를 생성해 사용한다는 점이다.
    그리고 객체지향 프로그래밍에서는 프로젝트를 독립적인 객체 단위로 분리해서 작업할 수 있기 때문에  
    여러 개발자와 협업해 규모가 큰 프로젝트를 진행할 수 있으며 유지보수측면도 뛰어나다는 장점이 있다.
    그렇다면 객체지향은 내가 다른 프로그래밍 언어에서 보았던 클래스 혹은 함수의 개념인건가? 조금 찾아봤다.

    • 엄격한 의미에서 해석

      일반적으로 객체지향 프로그래밍은 객체지향 프로그래밍의 네 가지 특징(추상화, 캡슐화, 상속, 다형성)을   
      골고루 사용해 코딩 하는 프로그래밍을 객체지향이라고 한다.   
      클래스 단위 프로그래밍은 이런 객체지향 특징을 전혀 사용하지 않고 오직 클래스만을 이용해 코딩 하는 방식을 말한다.   
      이와같이 이 둘은 전혀 다른 프로그래밍 방법이라고 한다.  
      
    • 유연한 의미에서 해석

      클래스 단위 코딩을 객체지향 프로그래밍이라고 부를 수 있는 이유는 클래스를 만들어 코딩 하는 자체에   
      이미 객체지향 프로그래밍 네 가지 특징 중 캡슐화와 은닉성을 사용하고 있기 때문이다.     
      이처럼 클래스 기반 프로그래밍은 객체지향 프로그래밍에 포함되는 구조를 가지고 있다.  
      

    솔직히 하나도 이해가 되질 않는다.
    이 부분은 자바를 공부하면서 최대한 이해할 수 있도록 노력해보려고 한다.

  • JDK

    그렇다면 자바를 사용해볼 수 있도록 해보자.
    우선 java로 개발을 하기 위해선 JDK를 이용한다고 한다.
    JDK란 Java Development Kit(자바 개발 키트)의 약자로 자바 애플리케이션을 구축하기 위한 핵심 플랫폼 구성요소라고 한다.
    JDK는 자바 가상 머신(Java Virtual Machine, JVM), 그리고 자바 런타임 환경(Java Runtime Environment, JRE)과 함께
    자바 프로그래밍에 사용되는 3대 핵심 기술 패키지 가운데 하나다. 이 3가지 기술이 어떻게 연결되어 있는지, 또한 어떻게 다른지 구별하는 것이 중요하다.

    • JVM은 프로그램을 실행하는 자바 플랫폼 구성요소다.

    • JRE는 JVM을 생성하는 디스크 상의 부분이다.

    • JDK는 개발자들이 JVM과 JRE에 의해 실행되고 구동될 수 있는 자바 프로그램을 생성할 수 있게 해준다.

    나는 간단하게 자바로 개발할 수 있게 해주는 친구로 이해했다.
    다운로드 받는 법은 구글에 검색만 해도 찾을 수 있으니 찾아보도록하자.
    이후 환경 변수까지 입력해주고 나니 메모장을 통해서도 자바로 된 간단한 프로그램을 만들 수 있었다.

    public class Hello {
      public static void main(String[] args){
        System.out.println("Hello World");
      } 
    } 

    이를 메모장으로 Hello.java라는 확장자 명을 가지게 저장하고 cmd에서 javac Hello,java를 쳐서 class파일로 컴파일을 마쳤다. 그후 class파일을 실행하니 cmd에 Hello World라는 문구가 성공적으로 실행 됐다.
    그러나 이를 계속 메모장으로 코드를 입력하게 되면 많이 불편할 것 같으니 에디터를 설치해주도록 하자.

  • 에디터란

    사전에서는 컴퓨터의 편집용 프로그램이라 적혀있다.
    말 그대로 편집기 라는 뜻인데 우리는 실제로 파일을 생성하기 위한 다양한 에디터를 사용하고 있다.
    한글파일, 워드패드, 메모장 등등 이를 모두 에디터라고 하는데 그중에 우리의 개발을 편하게 만들어주는 에디터도 존재하는 것이다.
    물론 java에도 에디터가 존재하는데 보통은 Eclipse와 Intellij를 사용한다고 한다.
    나는 이클립스를 설치했다.