강의내용 Lecture 1: Java 소개및Eclipse - Sangji...

12
1 1 Lecture 1: Java 소개 및 Eclipse 2009학년도 1학기 상지대학교 컴퓨터정보공학부 고광 2 Lecture 1: 자바소개 및 Eclipse 강의 내용 자바의 소개 자바의 종류 자바의 기본 패키지 자바의 특징 자바 프로그래밍 작성 및 실행 프로그램 작성 번역 실행 3 Lecture 1: 자바소개 및 Eclipse 자바 소개 범용 프로그래밍 언어 인터넷 환경 모바일 환경 분산 시스템 등 객체지향 프로그래밍 언어 객체지향 언어(C++와 유사) 복잡한 기능 제거 플랫폼(platform) 독립적 바이트 코드(Bytecode) 자바 가상 기계(Java Virtual Machine; JVM) 4 Lecture 1: 자바소개 및 Eclipse 자바 언어의 역사 역사 James Gosling(Sun Microsystems ), 1990. 가전 제품을 위한 언어로 개발 범용 프로그래밍 언어로 발전 Java 어원 James Gosling, Arthur Van Hoff, Andy Bechtolsheim 인도네시아 산 커피 원료 이름

Transcript of 강의내용 Lecture 1: Java 소개및Eclipse - Sangji...

Page 1: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

11

Lecture 1: Java 소개 및 Eclipse

2009학년도 1학기

상지대학교 컴퓨터정보공학부

고 광 만

2Lecture 1: 자바소개 및 Eclipse

강의 내용

자바의 소개자바의 종류

자바의 기본 패키지

자바의 특징

자바 프로그래밍 작성 및 실행프로그램 작성

번역

실행

3Lecture 1: 자바소개 및 Eclipse

자바 소개

범용 프로그래밍 언어인터넷 환경

모바일 환경

분산 시스템 등

객체지향 프로그래밍 언어객체지향 언어(C++와 유사)

복잡한 기능 제거

플랫폼(platform) 독립적바이트 코드(Bytecode)

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

4Lecture 1: 자바소개 및 Eclipse

자바 언어의 역사

역사James Gosling(Sun Microsystems ), 1990.

가전 제품을 위한 언어로 개발

범용 프로그래밍 언어로 발전

Java 어원James Gosling, Arthur Van Hoff, Andy Bechtolsheim

인도네시아 산 커피 원료 이름

Page 2: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

22

5Lecture 1: 자바소개 및 Eclipse

인터넷 환경과 모바일 환경에 적합

6Lecture 1: 자바소개 및 Eclipse

C 계열의 언어C: 연산자, 문장 등

C++: 객체지향, 예외처리,

제네릭 기능

자바에서 확립된 개념예외 처리

스레드

C#에 영향을 미침

7Lecture 1: 자바소개 및 Eclipse

자바 언어 특징

특징 1 : 간단하며 친숙한 언어

특징 2 : 객체지향 언어

특징 3 : 플랫폼(platform) 독립적

특징 4 : 견고하고 보안에 강함

특징 5 : 동적 링킹, 멀티스레드 지원

8Lecture 1: 자바소개 및 Eclipse

특징 1 : 간단, 친숙한 언어

설계 목표작고 간단해서 쉽게 프로그래밍하고, 쉽게 디버깅하고,쉽게 배울 수 있도록 하는 것

C/C++의 복잡한 기능 일부 삭제포인터 연산 삭제

자동적인 메모리 관리

친숙한 언어기본기능 : 연산자와 문장 구조 - ANSI C(표준 C) 언어

고급기능 : 객체 지향적인 개념 - C++ 언어

Page 3: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

33

9Lecture 1: 자바소개 및 Eclipse

C/C++에서 제거된 기능

typedef문, #define문클래스, 인터페이스

구조체(struct)와 공용체(union)클래스로 대체 가능

함수(function)메소드

다중 상속(multiple inheritance)인터페이스는 다중상속 지원

goto 문을 지원하지 않음다중 레이블 break/continue문

10Lecture 1: 자바소개 및 Eclipse

포인터 연산 제거

묵시적인 형 변환 제거명시적인 cast 연산 필요

Strongly typed language

연산자 중복성 제거

메모리 관리malloc() 제거

11Lecture 1: 자바소개 및 Eclipse

특징 2 : 객체지향 언어

객체지향 언어 특성자료 추상화(data abstraction)

상속성(inheritance)

다형성(polymorphism)

다형성Function overloading à method overloading

Operator overloading à 지원하지 않음

12Lecture 1: 자바소개 및 Eclipse

특성 3 : 플랫폼 독립적

아키텍처에 독립적플랫폼 독립적인 중간코드 사용 – 바이트코드(bytecode)

가상기계를 이용하여 실행 – JVM(Java Virtual Machine)

기존 개발환경과의 비교전통적인 컴파일링 시스템

플랫폼에 독립적인 시스템

Page 4: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

44

13Lecture 1: 자바소개 및 Eclipse

네이티브 에플리케이션

14Lecture 1: 자바소개 및 Eclipse

자바 에플리케이션

15Lecture 1: 자바소개 및 Eclipse

컴파일 및 실행

HelloWorld.java

자바 컴파일러 (javac)

HelloWorld.class

자바 가상기계 (java)

public class HelloWorld {public static void main(String[] args) {

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

}

public class HelloWorld {public static void main(String[] args) {

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

}

C:\JDK\BIN>javac HelloWorld.javaC:\JDK\BIN>javac HelloWorld.java

C:\JDK\BIN>java HelloWorldC:\JDK\BIN>java HelloWorld

Hello World!Hello World!

Hello World!

16Lecture 1: 자바소개 및 Eclipse

자바 플랫폼

자바 플랫폼 : 자바 가상 기계와 API장점 : 하드웨어 플랫폼 독립성

단점 : 실행 속도의 저하

자바 가상 기계자바 가상 기계

API

자바 프로그램자바 프로그램

하드웨어 기반 플랫폼하드웨어 기반 플랫폼

자바플랫폼

Page 5: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

55

17Lecture 1: 자바소개 및 Eclipse

성능 향상 방법

Java Chip바이트코드를 직접 실행하는 프로세서를 적용

JIT(Just-In Time) Compilation실행 시간에 필요에 따라 메소드 단위로 바이트코드를목적코드로 바꾸어 실행하는 방법

Back-End바이트코드를 목적코드로 모두 바꾼 후 실행

Decompilation바이트코드를 C언어와 같이 효율이 좋은 고급 언어로역컴파일하여 실행하는 방법

18Lecture 1: 자바소개 및 Eclipse

자바 개발 환경

프로그래밍 언어 시스템프로그래밍환경 + 운영환경

프로그래밍 환경 : 프로그램 개발용 도구편집기, 디버거

통합 개발 환경(IDE)

운영 환경 : 프로그램 실행 환경컴파일러, 실행시간 지원 시스템, 라이브러리 시스템

JDK(Java Development Kit)

19Lecture 1: 자바소개 및 Eclipse

Integrated Development Environment; IDE프로그래밍 환경과 운영 환경이 결합

프로그램의 작성부터 실행까지 대화식으로 수행가능한 개발환경

이클립스, 넷빈즈

이클립스(Eclipse)이클립스 재단에서 개발

플러그인(plug-in) 개념을 가진 공개 통합 개발 환경

http://www.eclipse.org

넷빈즈(NetBeans)Sun사가 제공하는 무료 통합 개발 환경, JDK 필요

http://www.netbeans.org

20Lecture 1: 자바소개 및 Eclipse

자바 플랫폼 종류

자바 플랫폼자바 가상 기계와 API

하드웨어의 종류에 따라 다양한 자바 플랫폼 존재

자바 표준 에디션(Java SE: Java Standard Edition)

자바 엔터프라이즈 에디션(Java EE: Java Enterprise Edition)

자바 모바일 에디션(Java ME: Java Micro Edition)

자바 카드(Java card)

Page 6: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

66

21Lecture 1: 자바소개 및 Eclipse 22Lecture 1: 자바소개 및 Eclipse

자바 표준 에디션

Java SE(Standard Edition)데스크탑용 프로그램에 사용

개발 : JDK, 이클립스, 넷빈즈 등

실행 : JRE(Java Runtime Environment) 설치 필요

주요 응용 분야콘솔 프로그램

문자기반의 콘솔을 통해 입출력 수행

그래픽 프로그램

그래픽 사용자 인터페이스(GUI : Graphic User Interface)를 통해 입출력 수행

애플릿

웹브라우저에서 실행되는 간단한 자바 프로그램

23Lecture 1: 자바소개 및 Eclipse

자바 엔터프라이즈 에디션

Java EE(Enterprise Edition)기업용 프로그램 작성을 위한 분산 객체, 트랜잭션,높은 이식성 제공

개발 : 별도의 Java EE SDK 사용

실행: 여러 종류의 애플리케이션의 조합으로 동작

24Lecture 1: 자바소개 및 Eclipse

자바 마이크로 에디션

Java ME(Micro Edition)내장형기기(embedded device)를 위한 자바 플랫폼

휴대폰, PDA, 셋탑박스 등 성능이 낮고, 메모리가 작은 기기

다양한 CPU와 운영체제가 사용되어 플랫폼 독립성이 중요

Configuration과 ProfileConfiguration

기기의 성능에 따라 구분한 API 명세

Profile

요구되는 기능에 따라 특화된 API 모임

Page 7: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

77

25Lecture 1: 자바소개 및 Eclipse

자바 기본 패키지

java.lang

자바의 기능을 확장해 주는 기본적인 클래스 : Object, String 등

자바 컴파일러에 의해 자동으로 import

java.io

스트림 입출력, 파일 입출력에 관련된 클래스 제공

java.net 패키지는 소켓, 텔넷 인터페이스, URL 클래스 제공

java.util

프로그래머에게 유용한 벡터, 스택 , 해쉬테이블 등…

java.awt (Abstract Window Toolkit)

플랫폼 독립적인 GUI 개발 도구

java.swing은 자바로 구현되어 어느 시스템에서도 동일하게 보임

26Lecture 1: 자바소개 및 Eclipse

27Lecture 1: 자바소개 및 Eclipse

JDKJDK 설치하기

JDK 도구

이클립스이클립스 설치

이클립스 실행하기

프로그램 작성하기

디버깅하기

28Lecture 1: 자바소개 및 Eclipse

Java Development Kit썬 마이크로시스템즈사에서 발표한 자바 프로그램 개발 도구

컴파일러, 자바 가상기계, 라이브러리, 자바 디버깅을 위한 도구를 제공

썬 솔라리스(Sun Solaris) 플랫폼

마이크로소프트 윈도우즈용

리눅스(Linux) 시스템용 등이 존재

Page 8: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

88

29Lecture 1: 자바소개 및 Eclipse

http://java.sun.com

30Lecture 1: 자바소개 및 Eclipse

윈도우즈의 경로에 자바 도구가 설치된 경로를 추가

[내 컴퓨터] – [속성] – [고급] - [환경 변수]

31Lecture 1: 자바소개 및 Eclipse

[새로 만들기]변수 이름 : “Path”

변수 값 : JDK를 설치한 경로와 \bin

32Lecture 1: 자바소개 및 Eclipse

javac자바 소스 파일을 자바 클래스 파일로 컴파일해 주는 도구

주요 실행 옵션

▶ 형식 : javac [Options] SourceFileName.java▶ 예 : javac HelloWorld.java

실행 옵션 설명

- classpath path, -

cp path

컴파일에 필요한 클래스 경로를 지정한다.path에는 파일 시스템 경로와 JAR 파일 이름이 올수 있다.

-d dir 클래스 파일를 생성할 디렉토리를 지정한다.

-g 디버깅 정보를 가진 클래스 파일을 생성한다.

-nowarn 컴파일 시, 경고를 출력하지 않는다.

-verbose 컴파일 시, 자세한 메시지를 출력한다.

Page 9: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

99

33Lecture 1: 자바소개 및 Eclipse

java클래스 파일을 읽어 실행하는 자바 가상기계, 인터프리터

주요 실행 옵션

▶ 형식 : java [options] ClassName [command-line arguments]▶ 예 : java HelloWorld

실행 옵션 설명

- classpath path, -cp path실행에 필요한 클래스 경로를 지정한다.

path에는 파일 시스템 경로와 JAR 파일 이름이 올 수 있다.

-DPropertyName=NewValue 자바의 시스템 속성(property) 값을 지정한다.

-verbose 실행 시, 발생하는 다양한 정보를 출력한다.

-enableassertions, -ea 실행 시, 단정 검사를 활성화한다.

-disableassertions, -da 실행 시, 단정 검사를 비활성화(기본값)한다.

34Lecture 1: 자바소개 및 Eclipse

jar자바 프로그램을 압축하는 유틸리티, JAR 파일을 관리하는 도구

javadoc자바 소스 파일에 있는 문서 주석(Document comment)으로부터 HTML 문서로 구성된 자바 API 문서를 생성하는 도구

▶ 형식 : jar [option] destination FileName [FileNames]▶ 예 : jar cf sample.jar *.class

▶ 형식 : javadoc [option] JavaSourceFileName▶ 예 : javadoc HelloWorld.java

35Lecture 1: 자바소개 및 Eclipse

jdb자바 애플리케이션을 디버그하기 위해서 사용하는 도구

javah자바 네이티브 인터페이스(JNI; Java Native Interface)에 필요한 C/C++ 헤더 파일(Header File)을 생성해 주는 도구

▶ 형식 : jdb [options] ClassName [arguments]▶ 예 : jdb HelloWorld

▶ 형식 : javah [option] ClassName▶ 예 : javah HelloWorld

36Lecture 1: 자바소개 및 Eclipse

특징이클립스 재단에서 관리하는 공개 소스 프로젝트

다양한 플랫폼에서 실행

자바를 비롯한 다양한 언어를 위한 통합 개발 환경 지원

플러그인 기반으로 구성되어 있어 쉽게 기능 확장 가능

Page 10: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

1010

37Lecture 1: 자바소개 및 Eclipse

http://www.eclipse.org/Eclipse IDE for Java Developers 선택,

다운로드 후 압축 해제

38Lecture 1: 자바소개 및 Eclipse

“eclipse.exe” 파일 실행

프로젝트 관리에 필요한 정보 저장하는 폴더 설정

39Lecture 1: 자바소개 및 Eclipse

① Package Explorer, Hierarchy

② 편집기(Java Editor)

③ 작업 목록(Task List)

④ Outline】탭

⑤ Problems 탭,

Javadoc 탭,

Declaration 탭

40Lecture 1: 자바소개 및 Eclipse

새 프로젝트(New Project) 마법사【File】➠【New】➠【Project】

Page 11: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

1111

41Lecture 1: 자바소개 및 Eclipse 42Lecture 1: 자바소개 및 Eclipse

클래스를 작성【File】➠【New】➠【Class】

43Lecture 1: 자바소개 및 Eclipse

디버그 모드로의 전환디버그 버튼

중단점 설정 후 기능키 F11

① : Debug 탭

② : Variables 탭,

Breakpoints 탭

44Lecture 1: 자바소개 및 Eclipse

중단점 설정하기원하는 소스 코드 라인에서 <Ctrl+Shift+B>

여백 지시 막대의 단축 메뉴에서 【Toggle Breakpoint】 선택

중단점 해제하기설정된 중단점 라인에서<Ctrl+Shift+B>

설정된 중단점의 단축 메뉴에서 【Toggle Breakpoint】 선택

Page 12: 강의내용 Lecture 1: Java 소개및Eclipse - Sangji Universitycompiler.sangji.ac.kr/lecture/java/2009/lec1... · 2019. 2. 14. · 11 Lecture 1: Java 소개및Eclipse 2009학년도1학기

1212

45Lecture 1: 자바소개 및 Eclipse

한 단계씩 코드 실행변수 또는 객체의 값을 살펴볼 때 유용

중단점이 설정된 지점부터 디버깅 시작

【Run】➠【Step Into】 메뉴 선택하거나 기능키 <F5>

소스 코드의 세부적인 추적(trace)이 가능

46Lecture 1: 자바소개 및 Eclipse

메소드 단위 실행메소드 호출 후 변수 또는 객체의 값을 확인하거나 객체에 관한연산 후 값을 살펴 볼 때 유용

【Run】➠【Step Over】 메뉴 선택하거나 기능키 <F6>

47Lecture 1: 자바소개 및 Eclipse

변수 값 확인하기변수나 객체를 마우스 커서로 가리킴

【Variables】탭

지역 변수와 현재 객체의 필드 값 확인

【Debug】탭

시스템 프로세스와 스레드, 스택 프레임 확인