ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]STEP1 - 1) 자바의 개념, 특징, 구조, 주석과 실행문, 이클립스에 대하여
    개발 공부/Java 2020. 8. 27. 21:44

     

    본 게시글은 도서 "이것이 자바다" 동영상 강의를 듣고 기록하는 TIL(Today I Learned) 입니다.

    모든 저작권은 출판사 한빛미디어와 신용권님께 있음을 알립니다.👍

     

     

    1. 프로그래밍 언어란?

    • 사람의 언어와 컴퓨터의 기계어의 다리 역할을 한다.
    • 고급언어와 저급언어로 구분된다.
    • 고급언어: 컴퓨터와 대화할 수 있도록 만든 언어 중에서 사람이 쉽게 이해할 수 있는 언어. (ex. C, C++, Java 등)
                         컴파일(Compile)이라는 과정을 통해서 컴퓨터가 이해할 수 있는 언어로 변환한다.
    • 저급언어: 기계어에 가까운 언어. (ex. 어셈블리어)

     

    2. 자바(Java)란?

    • 1991년 썬 마이크로시스템즈의 엔지니어들이 가전제품에서 사용할 목적으로 개발한 오크(Oak)라는 언어에서부터 시작되었다.
    • 그 후 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용하기 위해 1995년 자바(Java)라는 명칭으로 발표하였다.
    • 자바는 다양한 서버 운영체제에서 단 한 번의 작성으로 모든 곳에서 실행이 가능하기 때문에 기업체와 공공기관에서 급속도로 퍼지게 되었다.

     

    3. 자바의 8가지 특징

       ① 이식성이 높은 언어이다.

            이식성이란? 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것.

           

       

     

     1) one.java 라는 소스 코드 파일 존재

     2) 한 번의 컴파일을 통해 one.class 파일 생성

     3) one.class 파일은 한 번만 생성되면 윈도우, 리눅스, 맥
          상관없이 어느 운영체제에서나 실행이 가능하다.

     

     

     

     

       ② 객체 지향 언어이다.

           

           프로그램을 개발 할 때 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립, 연결하여 전체 프로그램을 완성하는 기법을 

           객체 지향 프로그래밍(OOP: Object Oriented Programming)이라고 한다.

     

    객체지향 그림 (출처: 구글 이미지)

     

        ③ 함수적 스타일 코딩을 지원한다.

     

            프로그램을 개발 할 때 객체가 아니라 함수를 이용해서 프로그램을 만드는 것을 말한다.
           
            원래는 함수적 스타일의 코딩은 현업에서는 큰 호응을 얻지 못하였으나,  최근 들어 함수적 프로그래밍이 다시 부각되고 있다.
            그 이유는, 함수적 프로그래밍이 대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍을 위해 적합하기 때문이다.

            자바는 함수적 프로그래밍을 위해 자바8 부터 람다식(Lambda Expressions)를 지원한다.
            람다식은 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.

     

     

       ④ 메모리를 자동으로 관리한다.

     

            C++ 같은 경우는 메모리 관리를 개발자가 직접 하고, 이를 성실하게 하지 않으면 프로그램이 다운될 수 있다.

            하지만 자바는 개발자가 직접 메모리에 접근할 수 없게 설계되었고, 자바가 직접 메모리를 관리한다.
            이로써, 개발자는 핵심 코드와 비즈니스 로직의 작성에만 집중 할 수 있게 되었다.

     

     

       다양한 애플리케이션을 개발할 수 있다.

     

           자바는 다양한 운영체제(ex. 윈도우, 맥, 리눅스 등)에서 실행되는 프로그램 뿐만 아니라, 단순 콘솔 프로그램부터 모바일용
           안드로이드 앱에 이르기 까지 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다.

           자바는 개발도구와 API를 묶어서 에디션의 형태로 정의한다.
          ☞ Java SE(Standard Edition) : 기본 에디션으로, JVM(자바 가상 기계)를 포함한 프로그램 개발에 필수적인 도구와
                                                                         라이브러리, 그리고 API를 정의한다.

          ☞ Java EE(Enterprise Edition) : 서버용 애플리케이션 개발 에디션으로, 분산 환경에서 서버용 애플리케이션을 개발하기 위한                                                                           도구와 라이브러리, 그리고 API를 정의한다.

     

     

       멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.

     

            하나의 프로그램이 동시에 여러 가지 작업을 처리해야할 경우와, 대용량 작업을 빨리 처리하기 위해 서비 작업으로 분리해서 병렬 

            처리 하려면 멀티 스레드 프로그래밍이 필요하다.

            자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 멀티 스레드를 쉽게 구현할 수 있다.

     

     

       동적 로딩(Dynamic Loading)을 지원한다.

            

            자바 애플리케이션은 실행 될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.
            따라서 유지보수가 발생하더라도 전체 애플리케이션을 다시 컴파일할 필요 없이 쉽고 빠르게 유지보수를 할 수 있다.

     

     

      ⑧ 오픈소스 라이브러리가 풍부하다.

     

            자바는 오픈소스 언어이기 때문에 각종 라이브러리와 프레임워크도 오픈소스가 많다.
            검증된 오픈소스를 사용하면 개발 기간을 많이 단축 시킬 수 있고 효율성과 안전성이 높은 애플리케이션을 구현할 수 있다.

     

     

    4. 자바 가상 기계(JVM: Java Virtual Machine)

    • 자바는 완전한 기계어가 아니라 바이트 코드이기 때문에 이것을 해석할 수 있는 가상의 운영체제가 필요하다.
    • JVM은 자바 프로그램을 실행하는 가상의 운영체제 역할을 하고 JVM은 운영체제에 종속적이다.
    • C와 C++와는 달리 JVM을 거치기 때문에 속도가 느리다는 단점이 있으나, JIT 컴파일러를 통해 격차는 많이 줄어들고 있다.
    • JVM은 JRE 또는 JDK를 설치하면 자동으로 설치된다.

      JRE(Java Runtime Environment: 자바 실행 환경) - 자바 프로그램을 실행하기 위한 환경
      JDK(Java Development Kit: 자바 개발 키트) - 자바 프로그램을 개발하기 위한 도구 + JRE

      이 둘의 차이는 JDK가 JRE를 포함한다는 것이고, JRE는 단순 실행 / JDK는 실행+개발까지 할 때 필요하다.

    • 소스 작성부터 실행까지의 과정

            1) 사용자가 one.java라는 소스파일을 작성한다.
            2) javac 라는 컴파일러를 통해서 one.java를 컴파일한다.
            3) one.class라는 바이트 코드 파일이 만들어진다.
            4) 각 운영체제에 종속되어 있는 JVM을 통해 one.class 파일은 기계어로 번역되어 실행된다.

     

     

    5. 주석과 실행문

    • 주석: 프로그램 실행과는 상관없이 코드에 붙인 설명 같은 것.
    • 실행문: 변수 선언, 값 저장, 메소드 호출에 해당하는 코드를 말함.
    • 주석은 컴파일 과정에서는 무시되고 실행문만 바이트 코드로 번역된다.
      주석 기호 설명
      // // 부터 라인 끝까지 주석으로 처리한다. (행 주석)
      /* ~~ */ /* 와 */ 사이에 있는 모든 범위를 주석으로 처리한다. (범위 주석)
      /** ~~ */ javadoc.exe 명령어로 API 도큐먼트를 생성하는데 사용된다. (도큐먼트 주석)
    • 실행문의 마지막에는 반드시 세미콜론(;)을 붙여서 실행문이 끝났음을 표시해야 한다.

     

    6. 이클립스

    • 좋은 편집 툴의 조건은 프로그램 소스 작성 시 풍부한 기능을 제공하고, 동시에 코드를 체크하여 개발자에게 보다 정확한 코딩을 유도하도록 도와주는 것이다.
    • 그리고 거기에 더해서 디버깅(debugging: 모의 실행을 통해 코드의 오류를 찾는 것.) 기능이 있다면 더 좋다.
    • 이러한 기능이 탑재된 이클립스(eclipse)를 2003년도 IBM에서 개발하였다.
    • 이클립스는 현재 자바 프로그램을 개발하기 위한 통합 개발 환경(IDE)를 제공하는데, 사람들이 가장 많이 쓰는 편집 툴이다.
    • 워크스페이스(Workspace): 이클립스에서 생성한 프로젝트가 기본적으로 저장되는 디렉토리.
                                                           하위에 있는 .metadata 폴더에는 이클립스를 사용하면서 변경되는 속성값이 담겨있다.
    • 퍼스펙티브(Perspective): 이클립스에서 프로젝트를 개발할 때 유용하게 사용하는 뷰(View)들을 묶어 놓은 것.

     

     

    본 게시글은 여기서 마치겠습니다.

    읽어주셔서 감사하고, 혹시나 틀린 부분이나 보완해야할 부분이 있다면 댓글에 남겨주세요~!

    댓글

Designed by Tistory.