YJ_Scribbles

#01_자바의 시작 본문

프로그래밍/JAVA

#01_자바의 시작

오뀨기 2020. 9. 7. 21:06

명품 Java programming교재를 바탕으로 수업내용을 정리함.

 

01.1 프로그래밍 언어

 

★ 프로그래밍 언어

  프로그램 작성 언어

  기계어(machine language)

     ㅇ 0, 1의 이진수로 구성된 언어

     ㅇ 컴퓨터의 CPU는 기계어만 이해하고 처리가능

  어셈블리어

     ㅇ 기계어 명령을 ADD, SUB, MOVE 등과 같은 표현하기 쉬운 상징적인 단어인 니모닉 기호(mnenomic symbol)로 일대일 대응시킨 언어

  고급언어

     ㅇ 사람이 이해하기 쉽고, 복잡한 작업, 자료 구조, 알고리즘을 표현하기 위해 고안된 언어

     ㅇ Pascal, Basic, C/C++, Java, C#

     ㅇ 절차 지향 언어와 객체 지향 언어

 

 

★ 컴파일

  소스 : 프로그래밍 언어로 작성된 텍스트 파일

  컴파일 : 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 만드는 과정

     ㅇ 소스 파일 확장자와 컴파일된 파일의 확장자

       - 자바 : .java -> .class

       - C : .c -> .obj -> .exe

       - C++ : .cpp -> .obj -> .exe

 

 

 

 

01.2 자바의 출현과 WORA

 

★ 자바의 태동

  ● 1991년 그린 프로젝트(Green Project)

     ㅇ 선마이크로시스템즈(오라클에서 인수)의 제임스 고슬링(James Gosling)에 의해 시작

       - 가전 제품에 들어갈 소프트웨어를 위해 개발

     ㅇ 1995년 자바를 발표

  ● 목적

     ㅇ 플랫폼 호환성 문제 해결

       - 기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임 등 플랫폼 간에 호환성이 없음

       - 소스를 다시 컴파일하거나 프로그램을 재작성해야하는 단점이 있음

     ㅇ 플랫폼 독립적인 언어 개발

       - 모든 플랫폼에서 호환성을 갖는 프로그래밍 언어 필요

       - 네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두

      ㅇ 메모리 사용이 적고 다양한 플랫폼을 가지는 가전 제품에 적용

  ● 초기이름 : 오크(OAK)

     ㅇ 인터넷과 웹의 엄청난 발전에 힘입어 퍼지게 됨

     ㅇ (Java) : 개발자들이 너무 커피를 많이 마셨다는 설이 유력

     ㅇ (Java) : 개발팀의 핵심멤버의 이니셜을 따왔다는 설

 

 

★ WORA

  ● WORA(Write Once Run Anywhere)

     ㅇ 한 번 작성된 코드는 모든 플랫폼에서 바로 실행

     ㅇ C/C++ 등 기존 언어가 가진 플랫폼 종속성(platform dependence)을 극복

       - 운영체제나 하드웨어에 상관없이 동일하게 실행 가능

     ㅇ 네트워크에 연결된 어느 클라이언트에서나 실행 가능

       - 웹 브라우저, 분산 환경의 지원

 

 

 

★ 자바의 특징

  바이트 코드(byte code)

     ㅇ 자바 소스를 컴파일한 목적 코드

     ㅇ CPU와 관계없는 바이너리(binary code)

     ㅇ JVM(자바 가상 기계)에 의해 해석되고 실행

     ㅇ JVM(자바 가상 기계)가 인터프리터 방식으로 바이트 코드 해석

     ㅇ 클래스 파일(.class)에 저장됨

  JVM(Java Virtual Machine) = 자바 가상 기계

     ㅇ 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어)

     ㅇ 동일한 자바 실행 환경 제공

     ㅇ 자바 가상 기계 자체는 플랫폼에 종속적

 

 

★ 자바와 C/C++ 실행 환경 및 과정

  ● 자바

     ㅇ 컴파일러가 바로 바이트 코드를 생성하며, 링크 과정이 없다

     ㅇ 바이트코드는 자바 가상 기계에서만 실행 가능하다

     ㅇ 실행시간에 필요한 클래스들이 JVM에 의해 링크되면 클래스 로더가 필요한 클래스를 동적으로 로딩한다

     ㅇ ClassLoader 객체를 이용하여 개발자가 직접 클래스를 로딩할 수도 있다

  ● C/C++

     ㅇ 컴퍼일

       -  C/C++에서는 컴파일러가 중간 단계인 목적 코드 생성됨

     ㅇ 링크

       - 링커가 목적 코드와 라이브러리 연결, 실행 가능한 최종 실행 파일 생성됨

       - 정적 라이브러리의 경우 실행 파일에 포함됨(실행 파일 크기가 커짐)

       - 동적 라이브럴리의 경우 실행 시간에 링크가 일어남

     ㅇ 목적 코드 및 실행 파일은 플랫폼에 따라 다름

       - 플랫폼이 바뀌면 소스 코드를 수정하거나, 컴파일과 링크를 새로 해야함

 

 

 

01_3 개발 도구와 자바 플랫폼

 

★ JDK와 JRE

   ● JDK(Java Development Kit)

     ㅇ 자바 응용 개발 환경, 개발에 필요한 도구 포함

   ● JRE(Java Runtime Environment)

     ㅇ 자바 실행 환경, JVM 포함

     ㅇ 컴파일된 자바 API들이 들어 있는 모듈 파일

     ㅇ 개발자가 아닌 일반 사용자의 경우 JRE만 필요하며, JRE만 따로 다운 가능

 

 

★ 자바 API

  ● 자바 API란?

     ㅇ 개발자들이 사용하도록 미리 만들어놓은 유용한 자바 클래스들의 집합

  ● 자바 패키지(package)

     ㅇ 서로 관련된 클래스들을 분류하여 묶어 놓은 것

     ㅇ 계층구조로 되어 있음

       - 클래스의 이름에 패키지 이름도 포함

       - 다른 패키지에 동일한 이름의 클래스 존재 가능

     ㅇ 자바 API(클래스 라이브러리)는 JDK에 패키지 형태로 제공

       - 필요한 클래스가 속한 패키지만 import하여 사용

     ㅇ 개발자 자신의 패키지 생성 가능

 

 

★ 자바 IDE

  ● IDE(Integrated Development Enviroment)란?

     ㅇ 통합 개발 환경(소프트웨어)

     ㅇ 소스 코드 편집, 컴파일, 디버깅을 한꺼번에 할 수 있는 개발 환경

  ● 이클립스(eclipse)

     ㅇ 자바 응용 프로그램 개발을 위한 통합 개발 환경

     ㅇ IBM에 의해 개발된 오픈 소스 소프트웨어

     ㅇ http://www.eclipse.org/downloads/ 에서 다운로드 가능

 

 

 

01_4 자바 프로그램 개발

 

★ 자바 소스 편집

   - 클래스 이름과 소스파일의 이름이 일치해야함

   - 어떤 편집기를 사용해도 무관(메모장에서도 가능)

 

  ● public class Hello 2030

     ㅇ 클래스 선언문

     ㅇ 이름이 "Hello 2030"인 클래스 선언

     ㅇ 모든 클래스는 '{'으로 시작하여 '}'으로 끝남

     ㅇ 자바는 하나 이상의 클래스로 구성

  ● public static void main(String[] args)

     ㅇ main() 메소드(함수)를 선언하는 코드

     ㅇ 자바 프로그램 시작은 main() 메소드

     ㅇ 메소드는 '{'으로 시작하여 '}'으로 끝남

  ● int n = 2030;

     ㅇ 지역 변수 n을 선언하고 2030으로 초기화

  ● System.out.println("헬로"+ n);

     ㅇ 화면에 "헬로2030"을 출력

 

 

★ Java 설치

  1. Java 다운 및 설치

  2. JDK 다운 및 설치

  3. eclipse 다운 및 설치

  ● Java 다운 및 설치

     1. 구글에 Java 검색

     2. "무료 Java 소프트웨어 다운로드"클릭

     3. "무료 Java 다운로드"클릭 후 다운로드 및 설치 진행

 

 

  ● JDK 다운 및 설치

     1. 구글에 "JDK"검색

     2. Java SE - Downloads 클릭

     3. JDK Downloads 클릭

     4. 자신의 컴퓨터 사양에 맞는 파일 설치

 

     5. 환경변수 설정하기

      https://jhnyang.tistory.com/224 링크 참조

 

 

  ● eclipse 다운받기

     1. http://www.eclipse.org/downloads/ 에서 다운로드

     2. 설치파일 다운로드 후 실행

     3. "Ec;ipse IDE for Java Developers" 클릭

 

LAUNCH 클릭

 

 

01_5 이클립스를 이용한 자바 프로그램 개발

 

★ 새 프로젝트 만들기

"File - New - Java Project"로 들어가서 새 프로젝트를 만든다

 

 

project name은 원하는 것으로 지정하고 Finish를 누른다

 

 

당분간은 모듈을 사용하지 않으려고 한다(Java를 시작할때에는 다소 어렵다고 해서)

 

 

다음과 같이 빈 화면이 나온다면 빨간색으로 표시된 부분을 누르면 아래와 같은 화면이 뜬다

 

 

"src위에서 마우스 오른쪽을 누름 - New - Class" 클릭

 

 

1번 : Class name설정 -> 첫글자를 대문자로 설정해주어야함

2번 : main으로 불러오는 클래스인지를 설정하는 부분

(현재는 class가 하나라 체크해야하지만 나중에 클래스가 여러개일 경우에는 필요한 class에서만 체크해주면 됨)

 

마지막으로 Finish를 눌러주면 아래와 같은 화면이 뜬다

 

빈 화면에 위에서 배운 내용을 입력해준다

System.out.println("Hello World!");

 

 

입력을 완료한 후에는 1번과 2번을 순서대로 클릭한다

 

 

다음과 같이 하게 되면 Console창에 다음과 같이 "Hello World!"라고 뜨게 된다.

 

 

 

01_6 자바의 특징

 

★ 플랫폼 독립성

   - 플랫폼에 종속되지 않는 독립적인 바이트 코드로 컴파일되기 때문에 자바 가상 기계(JVM)만 있으면 실행 가능

 

★ 객체 지향

   - 캡슐화, 상속, 다형성을 지원

   - 해결할 과제를 객체 간의 상호 관계로 모델링하여 인간의 사고에 가깝게 표현

 

★ 클래스로 캡슐화

   - 캡슐화(encapsulation) 원칙을 철저히 지켜, 변수나 메소드는 반드시 클래스 내에 구현

 

★ 소스와 클래스 파일

   - 클래스 파일(.class)에는 반드시 하나의 자바 클래스만 있음

   - 하나의 자바 소스 파일에 여러 개의 클래스를 작성한 경우, 클래스마다 별도의 클래스 파일 생성

   - 하나의 자바 소스 파일에 작성된 클래스 중 오진 한 클래스만 public으로 선언 가능

     -> public으로 선언된 클래스의 이름으로 자바 소스 파일을 저장해야함

 

★ 실행 코드 배포

 

★ 패키지

 

★ 멀티스레드

 

★ 가비지 컬렉션

 

★ 실시간 응용 시스템에 부적합

 

★ 자바 프로그램은 안전함

 

★ 프로그램 작성이 쉬움

 

★ 실행 속도를 개선하기 위해 JIT컴파일러가 사용됨