JAVA 프로그래밍 -...

23
JAVA 프로그래밍 1. 자바 프로그래밍 소개 한동일 2/46 학습 목표 To learn about the JAVA history To learn about the special features of JAVA To understand the activity of programming To become familiar with your computing environment and your compiler To compile and run your first Java program To recognize syntax and logic errors

Transcript of JAVA 프로그래밍 -...

Page 1: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

JAVA 프로그래밍

1. 자바 프로그래밍 소개

한 동 일

2/46

학습 목표

To learn about the JAVA history

To learn about the special features of JAVA

To understand the activity of programming

To become familiar with your computing environment and your compiler

To compile and run your first Java program

To recognize syntax and logic errors

Page 2: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

3/46

자바 언어의 역사

Sun Microsystems Inc.

James Gosling에 의해 고안

1990년 “그린 프로젝트”로 시작

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

1994년 자바를 이용한 웹 브라우저 발표

넷스케이프를 통해 차세대 언어로 발돋움

Java

James Gosling, Arthur Van Hoff, Andy Bechtolsheim

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

4/46

자바 언어의 개발 동기

모든 OS, 플랫폼 및

GUI에서 작동될 수

있는 분산 응용 프로

그램은 없을까 ??

PC

Server Mac

분산 Client-server 환경

NETWORK

(사진 출처 : Wikipedia)James Gosling의 홈페이지

http://nighthacks.com/roller/jag/

Page 3: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

5/46

자바 언어 개발 목적

플랫폼 호환성 문제 해결

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

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

플랫폼 독립적인 언어 개발

모든 플랫폼에 호환성을 갖는 프로그램 언어 필요

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

메모리 사용량이 적고 다양한 플랫폼에 적용

가전제품 : 적은 양의 메모리를 가지는 제어장치

내장형 시스템 요구 충족

6/46

자바의 특징

단순성

객체지향 언어

견고하고 보안에 강하다

하드웨어 구조에 독립

멀티스레드를 지원

Page 4: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

7/46

단순성

설계 목표 :

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

C/C++의 복잡한 기능 일부 삭제

포인터 연산 삭제, 자동적인 메모리 관리

친숙한 언어

연산자와 문장 구조 : ANSI C(표준 C) 언어

객체 지향적인 개념 : C++ 언어

8/46

객체지향 언어

객체지향 언어 특성

자료 추상화(data abstraction)

상속성(inheritance)

다형성(polymorphism)

다형성

function overloading --- method overloading

Page 5: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

9/46

견고하고 보안에 강하다

포인터 제거

디버깅이 어려운 run-time 에러 발생 감소

포인터를 통한 다른 자료의 파괴를 방지

실행 컴퓨터의 환경을 변경하는 기능 없음

엄격한 형 검사

strongly typed language

자동 타입 변환 불허

10/46

하드웨어 구조에 독립적

아키텍춰에 독립적

플랫폼에 독립적인 Bytecode 사용

JVM(Java Virtual Machine)

기존 개발환경과의 비교

전통적인 컴파일링 시스템

플랫폼에 독립적인 시스템

Page 6: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

11/46

기존 프로그램 개발 환경

소스코드

컴파일러(Pentium)

컴파일러(PowerPC)

컴파일러(SPARC)

이진파일

Pentium

PowerPC

SPARC

이진파일

이진파일

하드웨어 구조에 독립적

12/46

자바 개발 환경

자바 컴파일러

(Pentium)

자바 컴파일러

(PowerPC)

자바 컴파일러

(SPARC)

자바인터프리터

Pentium

PowerPC

SPARC

자바인터프리터

자바인터프리터

자바코드

자바바이트코드

(플랫폼 독립적)

하드웨어 구조에 독립적

Page 7: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

13/46

멀티 스레드를 지원

멀티스레드란?

한 프로그램 내에 여러 개의 스레드가 존재

다중 작업을 동시에 수행

언어차원에서 멀티스레드를 지원

정교한 동기화 기본 함수들을 제공

하나의 자바 프로그램이 여러 개의 스레드로 구성

14/46

C/C++에서 제거된 특성

typedef문, #define문

클래스와 인터페이스

구조체(struct)와 공용체(union)

클래스로 대체 가능

함수(function)

모두 메소드로 처리

다중상속(multiple inheritance)

인터페이스는 다중상속 지원

goto 문을 지원하지 않음.

다중 레이블 break/continue문

Page 8: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

15/46

C/C++에서 제거된 특성

포인터 연산을 제거

강제적인 자동변환

명시적인 cast 연산 필요

strongly typed language

연산자 중복(operator overloading)을 제거

메모리 관리

malloc()을 제거

16/46

애플릿과 애플리케이션

주요 자바 응용 프로그램

애플리케이션 (Application) 일반적인 프로그래밍 언어로 작성된 프로그램과 유사

main() 메소드가 존재

독립적인 실행

애플릿(Applet) 웹 브라우저 환경에서 실행되는 자바 프로그램

HTML과 연계해서 실행

클라이언트에서 실행

Page 9: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

17/46

웹 브라우저

서블릿(servlet) 서블릿은 애플릿과 반대로 서버에서 실행되는 자바 프로그램

데이터베이스 및 기타 서버 등과 연동하여 복잡한 기능을 구현할 때사용

유사 기술 : perl, CGI, PHP, ASP

프로세스 기반인 CGI에 비하여 스레드 기반으로 작고 빠르다.

인터넷

웹 서버

JVM

servlet

서버

서버

…기타 자바 응용 프로그램

18/46

기타 자바 응용 프로그램 웹 스타트(web start)

서버에 존재

내 컴퓨터에 설치하지 않고 언제든지 서버로부터 불러 실행할 수 있는 응용프로그램

문서 편집, 스프레드시트, 이메일 클라이언트 등과 같이 고도의 복잡한 기능 목적

자바 웹 스타트는 웹 브라우저와 별도로 실행

Page 10: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

19/46

Java ME : 모바일 응용 프로그램 모바일 디바이스를 위한 기술 및 규격의 집합

유럽, 미국 시장에 출시되는 대부분의 단말기에 탑재

노키아, 삼성, LG, 소니 에릭슨, 모토롤러 등 단말기 제조사들은자바 기술이 탑재된 단말기를 출시

기타 자바 응용 프로그램

20/46

안드로이드 구글의 주도로 여러 모바일 회사가 모여 만든 OHA(Open Handset Alliance)에

서 만든 무료 모바일 플랫폼 개발 언어는 자바를 사용하나 JVM에 해당하는 Dalvik은 기존 바이트 코드와 호

환성이 없어 변환이 필요

기타 자바 응용 프로그램

Page 11: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

21/46

애플리케이션 만들기

간단한 프로그램 HelloTester.java 파일 생성

public static void main()

System.out.println()

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

// Display a greeting in the console windowSystem.out.println( “Hello, World!” ) ;

}}

System 클래스

PrintStream형의객체 : out

PrintStream 클래스의메소드

22/46

Syntax errors

Detected by the compiler

Logic errors

Detected (hopefully) through testing

System.ouch.print(“Hello”);System.out.print(“Hello);

System.out.print(“Hell”);

오류

Page 12: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

23/46

주석문(Comment) 프로그램 설명을 위한 문장

프로그램 유지보수에 중요

프로그램의 실행에는 무관

주석 종류

Line Comment : // comment

//부터 새로운 줄 전까지 주석으로 간주

Text Comment : /* comment */

/*와 다음 */ 사이의 모든 문자들은 주석으로 간주

Documentation Comment : /** comment */

/**와 다음 */ 사이의 모든 문자들은 주석으로 간주

javadoc 도구를 이용하여 API 문서 작성에 사용

24/46

자바 애플리케이션 실행과정

Page 13: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

25/46

자바인터프리터(java)

자바컴파일러(javac)

HelloTester.java

HelloTester.class

환경설정 : 명령 프롬프트 이용, java 파일이 있는 directory에서

D:>set path=c:\Program Files\Java\jdk1.7.0_25\binD:>javac HelloTester.javaD:>java HelloTesterHello, World!

자바 애플리케이션 실행과정

실행결과

26/46

자바 애플리케이션 실행과정

JDK의 bin 디렉토리에 포함된 주요 개발 도구

javac: 자바 소스를 바이트 코드로 변환하는 컴파일러

java: 자바 응용프로그램 실행기, jre의 bin 디렉터리에도 있음

appletviewer: 웹 브라우저 없이 애플릿을 실행하는 유틸리티

jar: 자바 아카이브 파일 (JAR)의 생성 및 관리하는 유틸리티

jdb: 자바 디버거

Page 14: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

27/46

자바 애플리케이션 실행과정

JDK 설치 후 디렉토리 구조

28/46

자바 애플리케이션 실행과정1. Java 파일은 D: 드라이브에서 각자의 폴더(영문명) 생성 후 작성

2. Java 파일 작성 후 compile 전에 Java 환경 설정 필요

3. c:\Program Files\Java 디렉토리의 Java Version 확인

4. 명령 수행 예

Page 15: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

29/46

편집-컴파일-테스트 루프

30/46

애플릿 만들기 간단한 프로그램

SimpleApplet.java 파일 생성

java.applet.Applet

paint(Graphics g)

import 문

import java.awt.Graphics;import java.applet.Applet;

public class SimpleApplet extends Applet { public void paint(Graphics g) {

g.drawString(“Java Programming Language”, 10, 30); }

}

Page 16: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

31/46

자바 애플릿 수행과정

자바 컴파일러(javac)

웹 브라우저혹은

appletviewer

SimpleApplet.java

SimpleAppet.class

HTML문서 실행결과

32/46

자바 애플릿 수행과정 HTML 문서 작성 : SimpleApplet.html 문서생성

<HTML> <BODY>

<APPLET CODE = "SimpleApplet.class" WIDTH=300 HEIGHT=300></APPLET>

</BODY> </HTML>

D:>javac SimpleApplet.java D:>appletviewer SimpleApplet.html

Page 17: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

33/46

자바 애플릿 수행과정1. 명령 수행 예

34/46

자바 개발 환경 프로그래밍 환경

프로그램 작성

편집기, 디버거

운영 환경

컴파일러, 실행시간 지원 시스템, 라이브러리 시스템

자바 실행 환경: JRE(Java Runtime Environment)

자바 응용 개발 환경: JDK(Java Developers Kit)

통합 개발 환경(IDE: Integrated Development Environ.)

Visual J++, Jbuilder, Symantec Café

Jcreator, Eclipse, BlueJ

Page 18: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

35/46

JCreator 기본 화면

36/46

Eclipse 기본 화면

Page 19: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

37/46

BlueJ 기본 화면

38/46

JCreator 사용법

자바 애플리케이션 수행 과정 java 애플리케이션 프로그램 작성

애플리케이션 프로그램 compile

애플리케이션 프로그램 execution

자바 애플릿 수행 과정 java 애플릿 프로그램 작성

애플릿 프로그램 compile

HTML 파일 작성

HTML 파일 execution

Page 20: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

39/46

JCreator 사용법compileexecute

40/46

Jcreator에서 한글 사용 시 configure => options 메뉴에서

Editor=>Java=>Font 설정을 Courier New(True font)로 설정/재설정 후 사용

Page 21: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

41/46

Eclipse 사용법

프로젝트 생성 File->New->Java

Project를 선택

Project name 난에 프로젝트 이름을 입력

Finish 버튼을 눌러 프로젝트 생성

42/46

클래스 생성 File->New->Class

를 선택

클래스 이름 입력,입력 예 : Hello2010

Finish 버튼을 눌러클래스 생성

Eclipse 사용법

Page 22: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

43/46

Eclipse 사용법

생성된 클래스와 소스

44/46

이클립스의 소스 편집 윈도우에 앞서 메모장을 이용하여 소스를 작성한 것과 동일하게 소스 작성

Run->Run 메뉴를 선택 또는 클릭

콘솔 출력메시지

Eclipse 사용법 – Java 실행

Page 23: JAVA 프로그래밍 - SEJONGvip.sejong.ac.kr/dihan/java/lec01_01.pdf자바애플리케이션실행과정 JDK 설치후디렉토리구조 28/46 자바애플리케이션실행과정

45/46

자바 API란?

JDK에 포함된 클래스 라이브러리 주요한 기능들을 미리 구현한 클래스 라이브러리의 집

개발자는 API를 이용하여 쉽고 빠르게 프로그램개발 API에서 정의한 규격에 따라 클래스 사용

https://docs.oracle.com/javase/9/docs/api/index.html?overview-summary.html

API: Application Programming Interface

46/46

자바 API란?

자바 온라인 API 문서