본문 바로가기

Java/Java 기본

CH01. 자바 시작하기

1.1 프로그래밍 언어란

C/C++ ->(컴파일)-> 기계어(Intel 계열의 CPU)

1.2 자바란?

1.2.1 자바의 유래

   유래 : 홈 네트워킹 - oak - java

           1990년 후반 www이 활발해지면서 주목을 받게됨.

1.2.2 자바의 특징(네트워크에 적합)

   1. 플랫폼이 독립적(운영체제에 독립적) → 이식성이 높은 언어

      ① "write once, run any where"

      ② jvm이 통역자 역할(OS에 관계없이 사용가능)

      ③ 소스파일 수정 없이, 자바실행 환경( JRE : Java Runtime Environment)이  설치 되어 있는 모든 OS에서 실행가능 jdk(자바개발도구) > jre(자바실행환경) > jvm(자바가상머신)(일반적 윈도우 설치시 포함)

                                            

  2. 객체지향 언어이다. (Object-Oriented)

      (분석설계기법)

      ① OOP(Object Oriented Programing) : 데이터 흐름에 따라 프로그래밍

          → 부품에 해당하는 객체를 먼저 만듬, 이것들을 하나씩 조립 및 연결

      ② 시스템을 모듈화함으로 유지보수성 향상등의 특징

      ③ 실세계 ->(이전)-> 컴퓨터의세계

      ④ 객체지향 개념의 특징 : 상속, 캡슐화, 다형성

  3. 함수적 스타일 코딩을 지원 

      ① 대용량 데이터의 병렬처리 및 이벤트 지향 프로그래밍을 위해 적합
      ② 자바는 함수적프로그래밍을 위해 람다식을 자바8 부터 지원

  4. 메모리를 자동으로 관리 →  가비지컬렉션(Garbage Collection)

      ① 이전 프로그래미가 처리했던 포인터 연산을 자바에서는 jvm이 처리함으로 사용하는 객체의 참조가 해제되면 가비지 컬렉션의 대상이 되고 소멸된다. (소멸시기는 예측할 수 없다.)

      객체를 만들면 자바는 그 객체의 크기에 따라 힙안에 저장된 메모리 공간을 할당 후 jvm이 절대로 다시 쓰지 않을 것이라는 결론을 내릴 수 있으면 가비지 컬렉션의 대상이 된다. 그리고 메모리가 부족하게 되면 가비지 컬렉터가 작동하여 대상이 되는 객체를 제거한다.

      ③ 힙에서의 삶과 죽음

//Step 1.
Book b = new Book();
Book c = new Book();
//Book 레퍼런스 변수 두개를 선언 아울러 Book 객체 두개를 새로 생성
//그리고 Book 객체 두개를 새로 생성
//활성 레퍼런스 : 2개
//접근할 수 있는 객체 : 2개

//Step 2.
b=c;
//c의 값을 b에  대입
//c에 들어 있는 비트들을 복사한 다음 새로운 복사본을 b변수에 집어 넣음
//b와 c는 모두 같은 객체를 참조
//1번 객체는 버림 받았기 때문에 가비지 컬렉션의 대상
//활성 레퍼런스 : 2개
//접근할 수 있는 객체  : 1개
//버림 받은 객체 : 1개

//step 3.
c=null;
//c 변수에 null 값을 대입
//그러면 c가 null 레퍼런스가 됨
//그래도 c는 여전히 레퍼런스 변수고, 나중에는 다른 Book 객체 대입가능
//2번 객체는 여전히 활성레퍼런스(b)가 있으며, 
//활성레퍼런스가 있는 한 가비지 컬렉션의 대상이 되진 않음
//활성 레퍼런스 : 1개
//null 레퍼런스 : 1개
//접근할 수 있는 객체 : 1개
//버림 받은 객체 : 1개

  5. 다양한 Application을 개발 할 수 있다.

    ① 자바는 다양한 운영체제에서 사용할 수 있는 개발도구와 API를 묶어 에디션 형태로 정의

        * JAVA SE(Standard Edition) - 기본 에디션

          → JAVA SE는 자바 프로그램들이 공통적으로 사용하는 자바 가상 기계(JVM:Java Virtual Machine)를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의 한다. 클라이언트와 서버프로그램에 상관없이 자바 플그램을 개발하고 실행하기 위해서는 반드시 JAVA SE 구현체인 자바개발키트(JDK:Java Development Kit)를 설치해야 한다.

       * JAVA EE(Enterprise Edition) - 서버용 어플리케이션 개발 에디션

          JAVA EE는 분산환경(네트워크, 인터넷)에서 서버용 어플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다. 서버용 어플리케이션으로는 Servlet/JSP를 이용한 웹어플리케이션, 분산처리 컴포넌트인 EJB(Enterprise Java Bean) 그리고 XML 웹 서비스(Web Services)등이 있다.

   6. 멀티 스레드(Multi-Thread)를 쉽게 구현

     ① 하나의 프로그램이 동시에 여러가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브작업으로 분리해서 병렬 처리하려면 멀티스레드 프로그래밍이 필요

     ② 서버의 자원을 효율적으로 사용함으로서 부하를 방지한다. (안정적인 서버운영 도와줌)

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

     ① 자바는 동적로딩을 지원하기 때문에 실행시에 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있다. 그 외에도 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일 하지 않아도 되며, 어플리케이션의 변경 사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 어플리케이션을 작성할 수 있다.

    8. 막강 오픈소스 라이브러리가 풍부

    ① 검증된 오픈소스 라이브러리를 사용하면 개발 시간을 단축하면서 아정성이 높은 어플리케이션 개발이 가능하다.

1.2.3 자바가상기계(JVM)

    ① JVM은 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상 운영체제 역할

    ② 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적

        → 자바프로그램을 운영체제가 이해하는 기계어로 번역해서 실행하므로 JVM은 운영체제에 맞게 설치되어야 한다.

    ③ JVM 및 자바 프로그램 실행 단계

1.3 자바 개발 환경 구축

  1.3.1 자바 개발도구(JDK) 설치

      * JDK를 설치하면, 자바 가상 머신과 자바 클래스 라이브러리(JAVA API)외에 자바를 개발 하는데 필요한 프로그램들이 설치됨

         - JRE = JVM + 표준 클래스 라이브러리

         - JDK = JRE + 개발에 필요한 도구

    ① www.oracle.com에서서 jdk1.8 다운(OS의 bit에 맞게 다운로드)
    ② 환경설정 : 어디서나 컴파일 및 실행을 위해

                      내 컴퓨터 - 속성 - 고급시스템 설정 - 환경변수 - Path에 자신의 JDK Path 추가
    ③ Path에 ;C:\APP\Java\jdk1.8.0_25\bin 추가하기(JDK 설치 경로의 bin 폴더 까지)
    ④ cmd에서 javac, java 옵션 나오면 성공

       (javac -version 입력시 "javac는 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치파일이 아닙니다." 출력시 Path 경로가 잘못 되어 있음)

1.3.2 API 도큐먼트

      * 자바 프로그램을 개발하기 위해서는 JDK에서 제공하는 표준 클래스 라이브러리를 반드시 사용 해야함

        → API(Application Programming Interface) 라고 함 (다운로드 : http://docs.oracle.com/javase/8/docs/api)

1.4 자바 프로그램 개발 순서

 1.4.1 소스 작성에서 부터 실행 까지

      * Java 프로그램의 실행 과정

               HelloWorld.java(개발자 작성) - javac HelloWorld.java(컴파일) - HelloWorld.class(실행 java HelloWorld)

       * 소스파일이 만들어 지면 어휘 분석 후 구문 트리를 생성

              *.java → compile → *.class

      * Why Compile?

          JVM이 알아 볼 수 있도록 기계어로 변환

        - Error : 문법적 오류 / 예외 : 실행시 발생

         * 내부적인 실행 순서

            ① 프로그램 실행에 필요한 클래스(*.class 파일)를 로드한다.
            ② 클래스 파일을 검사한다. (파일형식, 악성코드 체크)
            ③ 지정된 클래스(Hello)에서 main(String[] args)를 호출한다.

 1.4.2 프로그램 소스 분석

   * 클래스 : 필드 또는 메소드를 포함하는 블록

   * 메소드 : 어떤 일을 처리하는 실행문들을 모아 놓은 블록

   * main() 메소드 : 프로그램 실행 진입점(entry point)

1.5 주석과 실행문

 1.5.1 주석 사용하기

     // 한줄짜리 주석(행주석)

    /*

    *  여러줄 주석(범위 주석)

    */

    /**

    * 여러줄 주석 – html 문서(api documentation) 제작시 표현

    */

    Ex) /** (* 2html 문서 만들 수 있음)

       *   public : 접근 제어자(access modifier)어디서나 접근가능

       *   String : 리턴 값이 있을 때 해당 데이터 타입을 명시

       *   getName : 메서드명 첫글자 소문자 합성어 첫글자 대문자

       *   () : 매개변수 없음

       *   Return name : 데이터를 리턴할 때 사용하는 자바 키워드

       */

 1.5.2 실행문과 세미콜론(;)

     * 실행문 : 변수 선언, 값 저장, 메소드 호출에 해당 하는 코드

                  실행문 마지막에 반드시 세미콜론(;)을 붙여서 실행문이 끝났음을 표시

1.6 이클립스 설치

 1.6.1 이클립스 설치하기

    ① www.eclipse.org 접속

    ② 메인화면 오른쪽 download 클릭
    ③ Eclipse ide for java ee developers download
    ④ 압축해제 eclipse.exe 실행

      → 글모양/ 크기 (Window – Preferenece – General – Appearance – color and font)

      줄번호 (Window – Preferenece – General – Edior – Text Editor – Show line number)

      → JDK 설정

          ① Window – Preference – Java – Installed jre

              - add 후 설치된 JDK 까지 Path를 잡으면 된다.
          ② Window – Preferenece – Java – Installed JRES –Execution Environment – JDK1.8 클릭

'Java > Java 기본' 카테고리의 다른 글

CH04 조건문  (0) 2020.06.07
CH03. 연산자  (0) 2020.04.15
CH02. 변수  (0) 2020.04.04