64
Chap.1 자바 언어 소개 1 Object-Oriented Programming : Java Programming 2011년도봄학기 숙명여자대학교 멀티미디어과학과 윤용익 010-5091-0388 [email protected]

Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 1

Object-Oriented Programming :Java Programming

2011년도봄학기숙명여자대학교멀티미디어과학과

윤용익010-5091-0388

[email protected]

Page 2: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 2

강의강의 ScheduleSchedule1주: Chapter 1 (overview)2주: Chapter 2 (연산자와 제어구조)3주: Chapter 3 (Object-Oriented Programming I – 객체의 개념)4주: Chapter 4 (Object-Oriented Programming II – 클래스의 특징)5주: Chapter 5, 6 (Object-Oriented Programming III, IV - 예외처리)6주: AWT (Chapter 7, 10, 구 Chapter 4 : AWT를 이용한 GUI 작성)7주: Applet & java 2D (Chapter 10, 구 Chapter 5 )8주: 중간고사

9주: Event Programming (Chapter 7.3, 구 Chapter 7 : Event programming)10주:Event Programming (Chapter 7.3, 구 Chapter 7 : Event programming)11주: Swing (Chapter 7, 8, 9 , 구 Chapter 6)12주: MVC Model (Chapter 8) 13주: Chapter 12(Process와 Thread)14주: Term Project 발표

15주: 기말고사

Page 3: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

프로그래머를프로그래머를 위한위한 Java 2, 4Java 2, 4판판

제제11장장 자바자바 언어언어 소개소개

Page 4: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 4

What's in a Name ?What's in a Name ?

JAVA James Gosling, Arthur Van, Andy Bechtolsheim ..Indonessian Coffee Stuff

Behind Story by Sun MicroSystems– 1990, Started by James Gosling, "Green" Project– 1991, Consumer Electronics에 적용 ... 실패

– 1992, Interpreter "Oak(Java)"– 1993, Interactive TV에 적용 ... 실패

– 1994, WebRunner(HotJava) WWW Browser in Oak(Java)– 1995, Java & HotJava at SunWorld'95– 1996, JDK 1.0 announcement– 1997, JDK1.1, HotJava 1.0 Release

Page 5: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 5

Overview Overview

컴퓨팅

환 경자바 언어

개 발환 경

예: JDK각종 지원 클래스자바 개발 도구

자바 개발 환경(JDK) Java는 단순한 언어에서 개발 환경으로 확대

Sun은 점차 자바를 이용할 수 있는 분야를 확대해 나감

자바 반지, 자바 카드, 피코 자바 등의 하드웨어

자바는 언어, 개발 환경의 개념을 넘어서 하나의 컴퓨팅환경으로 발전

Page 6: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 6

Java : Many AspectsJava : Many Aspects

WWW Communication

Software Engineering

ConsummerElectronics

Business

Programming Language

Page 7: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 7

Java Java 종류종류

자바 기술

J2SEJ2EEJ2ME

Page 8: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 8

Java Target ScopeJava Target Scope

Servers Workstations PCs Thin Clients Battery Powered Card

HotSpot JVM KVM Card VM

JavaClasses Java

Classes

SmartCard

Profile

CDC Foundation Class

TVProfile

ScreenPhoneProfile

CarProfile

CLDC Core Class

MIDPKitty-HawkProfile

DojaP

J2EE J2SE J2ME (Java 2 Micro Edition)

CVM

Embedded Space

Page 9: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 9

Java PlatformsJava Platforms

Java Virtual Machine + Java APIs

Page 10: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 10

JavaOSJavaOS

StatusJavaOSTM 1.0 shipped to licensees in early March

Working with the leading Real Time

Operating System (RTOS) companies

Demoed JavaPC

Ported to six different processors

Portability

Page 11: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 11

JavaOSJavaOS ArchitectureArchitecture

Page 12: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 12

Java ProgramJava Program

• Application : 일반 응용 프로그램

• Applet: 일반적인 Client 용 프로그램

• Midlet: Mobile 단말기용 Client 용 프로그램

• Servlet: Server 용 프로그램

• xlet : 방송용 디바이스의 응용 프로그램

• JSP (Java Server Page)• Ajax : RIA용 프로그램

Page 13: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 13

자바자바 관련관련 사이트사이트

http://java.sun.com/ - SUN의 공식 자바 사이트

Page 14: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 14

자바자바 관련관련 사이트사이트

http://www.gamelan.com/

Page 15: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 15

자바자바 관련관련 사이트사이트

http://www.javaworld.com/ - 온라인 상에서 발행되는 자바 관련 잡지

Page 16: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 16

자바자바 관련관련 사이트사이트

http://developer.java.sun.com/

Page 17: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 17

자바자바 관련관련 사이트사이트

http://www.gnu.org/software/java/ - GNU 자바 사이트

Page 18: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 18

자바자바 관련관련 사이트사이트

http://www.javalobby.org/

Page 19: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 19

1.1 1.1 자바란자바란??

Java는간단하고 (simple)객체지향적이고 (object-oriented)분산처리되고 (distributed)인터프리트되고 (interpreted)강건하고 (robust)컴퓨터 하드웨어에 영향을 받지 않고 (architecture-neutral)보안성이 있으며 (secure)포팅하기 쉽고 (portable)성능이 우수하고 (high-performance)멀티쓰레드를 사용하고 (multi-threaded)동적인 (dynamic)

언어이다.

Page 20: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 20

SimpleSimple

Related to C/C++ :

looks familiar to programmerC++ : eliminates

pointer arithmetic, structs, typedef, union, need to free memory

C++ : provides

Exception, Automatic garbage collection, Thread synchronization, Rich predefined class library

Page 21: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 21

ObjectObject--OrientedOriented

Focuses design on Classes & Interface

Encapsulation, Inherintance ..

class Car {void beep() { System.out.println("beep");

}int maxSpeed() {

return 55; }

}

Car

Porsche

beep()maxSpeed()

maxSpeed()

Class Hierarchy / Inheritance Hierarchy

class Porsche extends Car {int maxSpeed() {

return 200; }

}

Page 22: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 22

DistributedDistributed

designed to be run over a network• has TCP/IP and HTTP capabilities

– Socket, URL processing, Multicast ...• RMI(Remote Method Invocation)• SunSoft will soon bring CORBA-style(IDL) binding to Java

– able to invoke remote procedure

Page 23: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 23

InterpretedInterpreted

• Unlike conventional language translators,– Compiler converts source code into a machine-independent

format(Byte code)– allow it to run on any computer H/W that has the Java runtime

system(Virtual Machine)• Byte Code & Java Virtual Machine

– the key to application portability– borrowed from Kenneth Bowles's innovative P-System

Page 24: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 24

RobustRobust

• abstraction of pointer of conventional PLs

– best and worst feature – cause of hard-to-find run-time error !

• Java eliminates pointer manipulation– so eliminates runtime error– don't have to to remember to de-allocate memory

Page 25: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 25

Architecture NeuralArchitecture Neural

• Compiler generates Byte-code• Which have nothing to do with a particular computer architecture• Easy to interpret on any machine (Java virtual machine)

– Applet Browsing : SunOS4.1.x, Solaris2.x, HP/UX, SGI, IRIX, OSF/1, Linux, Windows98/NT ...

– Application Interpretation : Solaris 2.x, Windows98/NT

Page 26: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 26

SecureSecure

• Byte-code verification• Partitioned name spaces• imported code is not allowed to fork/exec• file system read/write access control• guarantees a virus free• Applet Security Authentication(JDK)

Page 27: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 27

PortablePortable

Code =~ Data ?

Any Digital Device (Including Computer) ?

Zero Installation

Application Invocation via Web Navigation

Page 28: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 28

High PerformanceHigh Performance

Interpreters exact a performance toll– from 20~30 times slower for CPU-intensive program to 5 times slower

for network-based program

• Sun promises performance rivaling native C/C++ speed– "JIT(just-in-time)" class compiler– Boland Latte, MS J++ ...

Page 29: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 29

MultithreadedMultithreaded

• Allowed multiple concurrent threads of execution to be active at once

• Borrowed from Xerox's Cedar/Mesa

• synchronized multithread

private syncronized void startSort() {if (kicker == null || !kicker.isAlive()) {

kicker = new Thread(this);kicker.start();

}}

public synchronized void stop() {if (kicker != null) {

kicker.stop() ;kicker = null;

}}

Page 30: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 30

DynamicDynamic

Interfaces deal with systems's changediffering much linkage manipulation until runtime

• eliminates fragile super-class problem– a change in a parent class forces a recompiling of the child classes

Page 31: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 31

Dynamic Web Dynamic Web BroswserBroswser

Web previous java - staticIndexingLocation TransparencyBut still book-like : text and images

Web now - dynamicAnimationInteractiveSynchronous http://www.cs.umbc.edu/~sli2/tetris.html

Page 32: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 32

1.2 1.2 환경설정하기환경설정하기

J2SDK 설치

http://java.sun.com/j2se에서 다운로드 받을 수 있음.

환경 설정

PATH – J2SDK에 포함된 명령어들을 사용할 수 있도록 하기 위해서

설정한다.JAVA_HOME – J2SDK가 설치된 디렉터리를 지정한다.

J2SE 6.0 버전 환경설정

환경변수 이름 변수 값

PATH C:\Program Files\Java\jdk1.6.0\bin;%PATH%

JAVA_HOME C:\Program Files\Java\jdk1.6.0

Page 33: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 33

Windows XP 상에서 변수 설정

제어판 -> 성능 및 유지관리 -> 시스템 -> 고급 – 환경변수

시스템 변수

환경변수 이름 변수 값

PATH C:\Program Files\Java\jdk1.6.0\bin;C:\java\jdk1.6.0\bin;

JAVA_HOME C:\Program Files\Java\jdk1.6.0C:\java\jdk1.6.0

Page 34: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 34

1.2 1.2 환경설정하기환경설정하기

윈도우 2000/XP에서 환경 설정

제어판 -> 시스템 -> 고급 -> 환경변수 -> 시스템 변수

Page 35: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 35

1.2 1.2 환경설정하기환경설정하기

리눅스/유닉스

J2SDK를 /usr/local/java 에 설치.

만약 C-shell을 사용하면, .cshrc 파일에 환경 변수를 설정.

예:

set path=( /usr/local/java/bin $path )setenv JAVA_HOME /usr/local/javasetenv CLASSPATH .:/usr/local/java/lib/tools.jarsetenv LANG ko

.cshrc 파일을 편집하고, source 명령어를 이용해서 설정을 적용시킴.

예:

% source ~/.cshrc

Page 36: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 36

EditPlusEditPlus 편집기편집기 설치설치

www.editplus.com

Page 37: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 37

Groups and Tool 에 명령어 삽입

JavacNAME : JAVACCOMMAND : C:\Program Files\Java\jdk1.6.0\bin\javac.exeArgument : $(FileName)Initial : $(FileDir)

JavaNAME : JAVACOMMAND : C:\Program Files\Java\jdk1.6.0\bin\java.exeArgument : $(FileNameNoExt)Initial : $(FileDir)

AppletviewerNAME : AppletviewerCOMMAND : C:\Program Files\Java\jdk1.6.0\bin\appletviewer.exeArgument : $(FileName)Initial : $(FileDir)

Page 38: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 38

Eclipse Eclipse 편집기편집기 설치설치

http://www.eclipse.org

Page 39: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 39

1.3 1.3 자바자바 언어언어 맛보기맛보기

예제: HelloWorld.java1 class HelloWorld {

2

3 // 주석 부분

4 public static void main (String args[]) {

5

6 String msg = "World";

7

8 System.out.print("Hello ");

9 System.out.println(msg);

10 }

11 }

Page 40: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 40

1.3 1.3 자바자바 언어언어 맛보기맛보기

컴파일

C:\> javac HelloWorld.javaHelloWorld.class 파일이 생성됨

실행

C:\> java HelloWorldHello World클래스 파일에서 파일 확장자(.class)를 제거하고, java 명령어를

이용해서 실행시킴

Page 41: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 41

1.4 1.4 포맷에포맷에 맞게맞게 출력하기출력하기

포맷에 따른 출력

C 언어의 printf()와 유사한 형태의 출력을 지원

포맷 형태

Page 42: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 42

1.4 1.4 포맷에포맷에 맞게맞게 출력하기출력하기

예제: FormattedOutput.java

1 public class FormattedOutput {

2 public static void main(String args[]) {

3 String msg = "Hello World";

4 int integral = 12345;

5 double floating = 123.4567;

6 System.out.printf("%s ₩n", msg);

7 System.out.printf("%d ₩n%10d ₩n", integral, integral);

8 System.out.printf("%f ₩n%.3f ₩n%1$e", floating, floating);

……}

결과

C:\> java FormattedOutputHello World12345

12345123.456700123.4571.234567e+02

Page 43: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 43

1.5 1.5 자바자바 애플릿애플릿 만들어보기만들어보기

자바 프로그램

응용프로그램

애플릿

응용프로그램 (application)데스크탑에서 실행되는 일반적인 프로그램

java라는 명령어를 이용해서 실행

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

appletviewer나 웹 브라우저를 이용해서 실행

Page 44: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 44

1.5 1.5 자바자바 애플릿애플릿 만들어보기만들어보기

예제: Hello.java1 import java.awt.*;

2 import java.applet.*;

3

4 public class Hello extends Applet {

5 public void paint(Graphics g) {

6 g.drawString("Hello World", 25, 25);

7 }

8 }

Page 45: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 45

1.5 1.5 자바자바 애플릿애플릿 만들어보기만들어보기

예제: Hello.html

결과

C:\> javac Hello.javaC:\> appletviewer Hello.html

1 <html><head><title>Hello</title></head>

2 <body>

3 <applet code=Hello width=250 height=250>

4 </applet>

5 </body>

6 </html>

Page 46: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 46

1.6 API 1.6 API 문서문서 사용하기사용하기

J2SDK API 문서

http://java.sun.com/docs/한글 문서 – http://sunny.sarang.net/api/

API 사용하기

Page 47: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 47

1.6 API 1.6 API 문서문서 사용하기사용하기

예제: StringBufferTest.java1 class StringBufferTest {

2 public static void main(String args[]) {

3 StringBuffer buf = new StringBuffer();

4 buf.append("Hello ");

5 buf.append("World!!");

6

7 System.out.println(buf.toString());

8 }

9 }

Page 48: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 48

1.7 1.7 초보자가초보자가 자주자주 범하는범하는 실수들실수들

1. 자바는 대소문자를 구별

자바는 프로그램에서는 물론 파일 이름도 대소문자를 구별

2. 한글이름으로 된 디렉토리에서는 잘 실행되지 않음

DOS에서 한글 이름의 디렉토리를 사용하는 경우에 문제가 생길 수 있다

클래스 경로(path)를 찾는 동안에 한글 이름의 디렉터리는 자바나 웹 브라우저가

잘 인식하지 못하기 때문임

3. 자바 환경 변수들이 올바르게 설정되어야 함.

Page 49: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 49

1.7 1.7 초보자가초보자가 자주자주 범하는범하는 실수들실수들

4. main()이 있는 클래스를 실행시켜야 한다

main()이 없는 클래스는 java 인터프리터로 실행시킬 수 없다

5. main은 항상 public static void main(String args[]) 형태이다

6. 애플릿으로 작성한 클래스는 항상 public이다

7. 한 파일에 public 클래스는 1개를 초과할 수 없다

한 파일에는 public 클래스가 최대 1개이다

1개를 초과하는 경우에는 컴파일 시에 에러 메시지를 보여 준다

8. public으로 선언된 클래스가 있는 경우에 파일 이름은 클래스 이름과

동일해야

9. 생성자(constructor)는 리턴 타입이 없고, 클래스 이름과 동일하다

생성자는 클래스 이름과 동일해야 하고 리턴 타입이 없어야 함

리턴 타입이 있는 경우에는 일반 함수로 인식

Page 50: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 50

1.7 1.7 초보자가초보자가 자주자주 범하는범하는 실수들실수들

10. 애플릿은 애플릿뷰어나 웹 브라우저를 이용해서 실행시켜야 한다.

11. HTML에서 애플릿의 width와 height 사이에는 ","가 없다.<applet code=클래스파일 width=300 height=200>

</applet>

12. J2SDK에서 제공하는 클래스 이름과 동일한 이름으로 클래스를 만들지 않는것이 좋다.

13. 클래스의 멤버 필드와 함수의 아규먼트 이름이 같은 경우, 아규먼트의이름이 우선 순위가 높다.

public class Test {int x;public Test(int x) {

x = x;}

}

Page 51: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 51

1.7 1.7 초보자가초보자가 자주자주 범하는범하는 실수들실수들

14. HTML에서 애플릿의 code 부분에 클래스 이름이 정확한지를 확인

<applet code=클래스파일이름 width=300 height=200>

</applet>

"클래스파일이름"의 철자가 틀리는 경우에 IOException 에러가 발생

15. BorderLayout를 사용할 때 "East", "South", "West", "North", "Center"의대소문자 구별 및 철자에 유의 - 철자가 틀리는 경우에 컴포넌트가 화면에 안

보임

16. 애플릿에서 Image나 AudioClip을 읽어올 때

getCodeBase( )는 애플릿 클래스가 있는 곳의 URL을 리턴

getDocumentBase( )는 HTML 파일이 있는 곳의 URL을 리턴

17. 자바 언어의 수많은 클래스들과 메소드를 모두 기억한다는 것은 불가능

사용하는 J2SDK에 맞는 API 문서를 java.sun.com에서 다운로드 받아 필요할

때마다 참조

Page 52: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 52

1.7 1.7 초보자가초보자가 자주자주 범하는범하는 실수들실수들

18. Button a[] = new Button[10]; 이 문장은 버튼을 만드는 것이 아니라 버튼이 들어갈 배열을 만듬

배열을 생성하는 것과 배열 안에 들어갈 객체를 혼동하지 마라 !!

19. 자바 언어에서는 클래스나 메소드에 이름을 붙이는 규칙이 있음

클래스 이름은 영어 명사형으로 붙이고 대문자로 시작

여러 단어를 사용할 때는 새로 시작하는 단어는 "_"를 사용하지 않고, 대문자로 시작

예: Car, ChattingServer

메소드 이름은 동사형으로 소문자로 시작

여러 단어를 사용할 때는 마찬가지고 시작하는 단어를 대문자로 한다

예: getName(), setLabel() 멤버 필드의 이름은 의미에 맞게 붙이고 소문자로 시작한다

Page 53: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 53

1.8 1.8 자바자바 환경환경 도구의도구의 사용법사용법

자바 환경 도구

J2SDK의 bin 디렉토리에 들어 있는 여러 가지 실행 프로그램

J2SDK 6.0 는 전체적으로 다음과 같은 구조로 구성

jdk 6.0

___________|________________

| | |

bin lib jre

| | _______|__________

java.exe tools.jar | |

javac.exe lib bin

javap.exe / \ / \

javah.exe ext rt.jar classic java.exe

appletviewer.exe / i18n.jar / java.dll

iiimp.jar jvm.dll awt.dll

Page 54: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 54

1.8 1.8 자바자바 환경환경 도구의도구의 사용법사용법

javac 컴파일러

형태

javac [ options ] [ sourcefiles ] [ @files ]

옵션-classpath <클래스패스> : 지정된 클래스패스를 이용한다.

-d <디렉토리> : 클래스 파일의 위치를 지정한다.

-deprecation : deprecated된 메소드 사용에 관해 경고 메시지를 보여준다.

-encoding <인코딩이름> : 소스 파일의 인코딩 이름을 설정한다.

이 옵션이 사용되지 않는 경우에 플랫폼의 디폴트 컨버터가 이용된다.

-g : 디버깅 정보를 생성한다.

-g:none : 디버깅 정보를 생성하지 않는다.

-g:{keyword list} : 콤마로 구별되는 키워드에 대해서만 디버깅 정보를 생성한다.

(source, lines, vars)

-nowarn : 경고 메시지를 출력하지 않는다.

-O : 코드를 최적화한다.

-sourcepath <소스패스> : 소스 파일의 위치를 지정한다.

Page 55: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 55

1.8 1.8 자바자바 환경환경 도구의도구의 사용법사용법

java 인터프리터

형태

java [ options ] class [ argument ... ]

java [ options ] -jar file.jar [ argument ... ]

옵션

-classpath <클래스패스>

-cp <클래스패스> : 클래스나 jar, zip 파일이 있는 디렉토리를 기술한다.

-Dproperty=value : 시스템의 속성을 기술한다.

Page 56: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 56

1.8 1.8 자바자바 환경환경 도구의도구의 사용법사용법

appletviewer 애플릿 실행하기

애플릿을 실행시켜주는 브라우저이다.

형태

appletviewer [ options ] url

옵션

-encoding <인코딩이름>

-J <자바옵션> : java 인터프리터의 옵션을 사용할 수 있다.

url은 자바 애플릿을 포함하는 HTML 파일의 URL 주소를 지정

Page 57: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 57

1.8 1.8 자바자바 환경환경 도구의도구의 사용법사용법

javah 헤더 파일 생성하기

C 언어를 위한 헤더 파일을 생성한다.

형태

javah [ options ] fully-qualified-classname

옵션

-o <출력파일> : 결과물을 저장할 파일을 지정한다.

-d <디렉토리> : 헤더 파일이 생성될 디렉토리를 지정한다.

-stubs : 자바 파일에서 C 선언을 생성하도록 한다.

-jni : JNI 스타일의 메소드 프로토타입을 갖는 헤더 파일을 생성한다.

Page 58: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 58

1.8 1.8 자바자바 환경환경 도구의도구의 사용법사용법

jar 압축 파일 만들기

자바 압축 파일을 만들고, 압축을 풀어준다.

형태

jar [ option ] [ manifest-file ] destination input-file [ input-files ]

옵션

c : 새로운 압축 파일을 만든다.

t : 압축 파일의 내용을 화면에 보여준다.

x <파일> : 파일의 압축을 푼다.

f : 두 번째 아규먼트가 처리할 jar 파일임을 나타낸다.

m : manifest 파일을 포함한다.

u : 기존의 jar 파일의 내용을 업데이트한다.

Page 59: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 59

1.9 1.9 자바자바 프로그램의프로그램의 구성구성

자바 프로그램 형태

1. 패키지 문장.

2. import 문장.

3. 클래스와 인터페이스 선언.

• 회색 부분은 생략 가능

• 하나의 자바 파일에는

여러 클래스 존재 가능.

Page 60: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 60

1.9 1.9 자바자바 프로그램의프로그램의 구성구성

참고: C++와 자바의 성능 비교

테스트 설명 C++

(시간:초)

JIT자바

(시간:초)

인터프리터

자바(시간:초)

정수 나눗셈 정수 나눗셈

1000만 번 수행

1.8 1.8 4.8

실수 나눗셈 실수 나눗셈

1000만 번 수행

1.6 1.6 8.7

정적 함수 정수 나눗셈을

하는 정적 함수를

1000만 번 호출

1.8 1.8 6.0

멤버 함수 정수 나눗셈을

하는 멤버 함수를

1000만 번 호출

1.8 1.8 10

가상 함수 정수 나눗셈을

하는 가상 함수를

1000만 번 호출

1.8 1.8 10

Page 61: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 61

1.9 1.9 자바자바 프로그램의프로그램의 구성구성

참고: 컴파일러와 인터프리터의 작동 방법

1. 컴파일러

C나 Fortran 등의 고차원 언어는 컴파일러를 통해서 저수준의 어셈블리어나 기계어로

변환.링커(linker)는 라이브러리와 컴파일된 프로그램을 엮어서 실행 파일을 만듬.

.obj .lib

Compiler

ProgramSource

Linker

.exe

Page 62: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 62

1.9 1.9 자바자바 프로그램의프로그램의 구성구성

2. 인터프리터

인터프리터는 명령어를 파싱을 하고 실행시키는 작업을 반복하여 프로그램을 실행.

대표적인 인터프리터 언어로는 BASIC .

인터프리터 언어는 소스 프로그램이 직접 실행되고, 실행 파일(.exe)을 생성 안 함.

Start

Get Instruction

Tokenize& Parse

ExecuteInstruction

Page 63: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 63

1.9 1.9 자바자바 프로그램의프로그램의 구성구성

3. 자바 바이트 코드 인터프리터

javac 컴파일러를 통해서 class 파일로 변환. .class 파일은 바이트 코드라고 함.

바이트 코드는 자바 가상 머신의 자바 바이트 코드 인터프리터를 통해 실행됨. 자바 바이트 코드 인터프리터는 java 명령어나 웹 브라우저에 포함되어 있음.

bytescodes

javac

ProgramSource

Virtual Machine

Start

Get Instruction

ExecuteInstruction

Page 64: Object-Oriented Programming : Java Programmingmm.sookmyung.ac.kr/~yiyoon/Lecture/JAVA/1_Chap01_new.pdf · 2011-03-02 · Chap.1 자바언어소개 1 Object-Oriented Programming :

Chap.1

자바 언어 소개 64

1.9 1.9 자바자바 프로그램의프로그램의 구성구성

4. 자바 JIT 컴파일러

자바 JIT(Just In Time) 컴파일러는 자바 바이트 코드를 인터프리트하는 대신에 컴파일

과정을 통해 실행 코드를 만듦. 속도면에서 자바 바이트 코드 인터프리터를 사용하는 것보다 빠르다. J2SDK의 java명령어는 기본적으로 JIT 컴파일러를 사용. (jre/bin/symjit.dll )

자바 프로그램 언어 환경에서, JIT 컴파일러는 자바 바이트코드 (반드시 해석되어야만 하는명령어를 포함한 프로그램)를, 프로세서에게 직접 전달될 수 있는 명령어로 바꾸어주는프로그램이다. 하나의 자바 프로그램을 작성하고 나면, 소스 문장은 자바 컴파일러에 의해바이트코드로 변환되는데, 이는 특정 하드웨어 플랫폼의 프로세서(예를 들면, 인텔의펜티엄 마이크로프로세서 등)에 맞는 명령어를 포함한 코드가 아니라, 어떤 플랫폼에도인식되고, 실행 가능한, 플랫폼에 독립적인 코드이다.

과거에는, 특정 언어로 쓰여진 대부분의 프로그램들이 반드시 각각의 컴퓨터 플랫폼에 맞게다시 컴파일 되어져야 했고, 경우에 따라서는 다시 작성되어야 하는 경우도 있었다. 자바의가장 큰 장점은, 프로그램 작성과 컴파일을 단 한번만 하면 된다는 것이다. 한 플랫폼의 자바가상머신은 컴파일된 바이트코드를 특정 프로세서가 인식할 수 있는 명령어로 해석한다. 그러나, 가상머신은 한번에 한 개의 바이트코드 명령어만을 다룰 수 있다. 특정 시스템플랫폼에 있는 JIT 컴파일러 (실제로 2번째 compiler)를 사용하여, 바이트코드를 특정시스템의 코드로(마치 그 프로그램이 처음부터 그 플랫폼에서 컴파일된 것처럼) 컴파일 할수 있다. 코드가 일단 JIT 컴파일러에 의해 (다시) 컴파일되면, 대체로 그 컴퓨터에서 더 빠른속도로 실행된다. JIT 컴파일러는 가상머신과 함께 제공되며, 사용 여부는 선택에 달려있다. 이것은 바이트코드를 특정 플랫폼에 딱 맞아서, 즉시 실행 가능한 코드로 컴파일 한다. 썬마이크로시스템즈는, 특히 실행 가능한 메쏘드가 반복적으로 재사용될 경우에, JIT 컴파일러를 선택하는 것이 대체로 빠르다고 말하고 있다.

bytescodes

javac

ProgramSource

NativeMachine

Code

JIT