명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.

Slides:



Advertisements
Similar presentations
Chap02 자바환경과 자바 프로그램 Section 1 : 자바 개발 환경 Section 2 : 자바 통합 환경 Section 3 : 자바 응용 프로그램과 애플릿 프로그램 Section 4 : 자바 응용 프로그램 Section 5 : 자바 애플릿 프로그램.
Advertisements

12 장 자바 애플릿. 2 Applet 개요 Applet 프로그램 – 웹 페이지에 포함되어 구동 된다. 웹 브라우저나 애 플릿뷰어 (appletviewer) 에서 실행되는 프로그램 – 웹 브라우저 내에 Applet 을 해석하여 실행할 수 있 도록 Applet 구동용 인터프리터가.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
6장 java.applet.Applet의 네트워크 메쏘드들
명품 JAVA Essential.
명품 JAVA Programming.
14. 위피 게임: 가위바위보 게임 초기에 점수=0 처음 이기면 10 점 그 다음부터 이기면 점수=현재 점수*2 지면
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
9장. 스윙 프로그래밍.
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
제7장 이벤트 프로그래밍.
7장 배열 ③.
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법
명품 JAVA Essential.
명품 JAVA Programming.
어서와 Java는 처음이지! 제1장 기초 사항 IT응용시스템공학과 김형진 교수.
Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리
9 표준 액션.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
제 4 장 클래스 작성 Lab 4- 2.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
9장 AWT(1).
2. 자바 애플릿.
메소드 호출과 힙 원격 메소드 호출 서블릿 엔터프라이즈 자바 빈즈
명품 JAVA Essential.
10장 객체-지향 프로그래밍 II ©창병모.
Power Java 제19장 배치 관리자(Layout Manager).
명품 JAVA Programming 제 12 장 그래픽.
Choi Younghwan CSE HUFS
java.awt 패키지의 단순 컴포넌트와 이벤트 처리
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
Java Seminar Chapter 4.
10장 예외 Lab 10-2.
명품 JAVA Essential.
5장 조건과 반복 ③.
실전 사운드 처리 프로그래밍 Lecture #11.
명품 Java Programming.
명품 JAVA Essential.
Hadoop 김연왕
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
메모장 구동.
9장 AWT(1).
Lesson 10. 애플릿과 그래픽.
Lesson 10. 애플릿과 그래픽.
4장 Random Number 프로그래밍 언어 실험실 석사 3학기 박중기
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
컴퓨터공학실습(I) 3주 인공지능연구실.
JA A V W. 04.
자바 5.0 프로그래밍.
제8장 쓰레드 프로그래밍.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
Chapter 4 클래스 작성.
자바 프로그래밍 Thread를 이용한 애니메이션 서울호서전문학교 게임프로그램개발과.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
Chapter2 : 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합개발환경(IDE)
Java Programming for Beginners
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

명품 JAVA Programming 제 15 장 애플릿과 멀티미디어

자바 애플릿 애플릿 프로그램의 실행 환경 애플릿 응용프로그램 작성에 필요한 슈퍼 클래스 웹 브라우저 내에서 실행되는 자바 응용 프로그램 HTML 페이지에 내장되어 실행됨 main() 메소드 없음 웹 브라우저에 의해 실행되고 소멸되는 구조 웹 브라우저가 애플릿 코드에 작성된 메소드를 호출하여 실행하는 방 식 init(), start(), stop(), destroy(), paint(Graphics g) 애플릿 응용프로그램 작성에 필요한 슈퍼 클래스 AWT 로 작성할 때 : Applet 클래스 스윙으로 작성할 때 : JApplet 클래스

애플릿이 실행되는 과정 웹 서버 (www.xxx.com) 웹브라우저  applet.html 파일 요청 http://www.xxx.com/applet.html  applet.html 파일 전송 applet.html <html> <applet code=MyApplet.class> </applet> </html>  MyApplet.class 요청 애플릿 실행  MyApplet.class파일 전송 MyApplet.class MyApplet 애플릿 JVM 이미 개발자가 applet.html 파일을 작성하였음 MyApplet.java 프로그램을 개발하여 MyApplet.class 파일로 컴파일하였음.

웹 브라우저에 의한 애플릿의 실행 과정 사용자가 웹 브라우저에서 웹 페이지 열기 웹 페이지 로딩 JVM 이 애플릿 클래스를 로딩한다. 애플릿 클래스 로딩 웹 브라우저는 애플릿 생성자 호출 애플릿 객체 생성 init() 호출 INIT ITIALIZED start() 호출 stop() 호출 RUNNING STOPPED start() 호출 destroy() 호출 DESTROYED

Applet 클래스와 JApplet 클래스 java.applet.Applet AWT로 작성하는 애플릿 응용프로그램의 최상위 컨테이너 AWT 애플릿 작성 Applet을 상속받은 클래스 작성 Applet에 속한 메소드 오버라이딩하여 구현 JApplet 클래스 javax.swing.JApplet 스윙으로 작성하는 애플릿 응용프로그램의 최상위 컨테이너 스윙 애플릿 작성 JApplet을 상속받은 클래스 작성 JApplet의 contentPane에 스윙 컴포넌트 부착

Applet 클래스로 AWT 애플릿 구현 public class MyApplet extends Applet { public MyApplet() { ... } // 애플릿을 포함하는 웹 페이지가 로딩된 후 호출되는 생성자 public void init() { ... } // 애플릿이 처음 로드 될 때 호출되는 메소드 public void start() { ... } // 애플릿을 포함하는 웹 페이지를 방문할 때마다 호출되는 메소드 public void stop() { ... } // 애플릿을 포함하는 웹 페이지가 비활성화될 때 호출되는 메소드 public void destroy() { ... } // 웹브라우저가 종료될 때 호출되는 메소드 public void paint(Graphics g) { ... } // 애플릿을 그리는 메소드 }

애플릿의 생명 주기 웹 페이지 로딩 웹브라우저에 의한 HTML 페이지 로딩 애플릿 클래스 로딩 JVM에 의한 애플릿 클래스 로딩 웹 페이지로 되돌아옴 애플릿 생성자 호출 init() start() stop() destroy() 다른 웹 페이지로 감 웹브라우저에 의한 애플릿 객체 생성 웹브라우저에 의한 애플릿 객체 초기화 웹브라우저에 의한 애플릿 시작 웹 브라우저 종료 시 애플릿도 함께 종료 paint() 애플릿 그리기 repaint()

JApplet 클래스로 스윙 애플릿 구현 import javax.swing.JApplet; import java.awt.*; public class MyJApplet extends JApplet { public MyJApplet() { ... } // 생성자 public void init() { ... } // 애플릿이 처음 로드 될 때 호출 public void start() { ... } // 애플릿을 포함하는 웹 페이지 방문 때마다 호출 public void stop() { ... } // 애플릿을 포함하는 웹 페이지가 비활성화될 때 호출 public void destroy() { ... } // 웹 브라우저가 종료될 때 호출 // 스윙 애플릿의 경우 JApplet의 컨텐트팬의 paintComponent()를 오버라이딩하여 // 페인팅을 하는 것이 쉽다. public void paint(Graphics g) { ... } // paint()는 오버라이딩하지 않는 것이 좋다. }

HTML 파일과 <applet> 태그 code 애플릿 클래스 파일 이름 width, height 애플릿이 실행될 윈도우의 폭과 높이 픽셀 단위 codebase 애플릿은 HTML 파일과 같은 경로에 있지 않는 경우 클래스 파일의 디렉터리 애플릿이 HTML과 다른 서버에 있는 경우 애플릿의 URL alt code에 지정된 애플릿 클래스 파일을 로 드하지 못한 경우 대신 출력된 문자열 기타 속성 있음 <applet code=애플릿클래스파일이름 width=애플릿이 출력되는 윈도우의 폭 height=애플릿이 출력되는 윈도우의 높이 [codebase=애플릿의 URL] [alt = 대체 문자열]> </applet> <applet code="MyApplet.class" width="300" height="300" codebase="appletclasses/" alt ="애플릿을 로딩하지 못하였습니다"> </applet>

애플릿 만들기 1. 애플릿 개발 2. html 파일 작성 3. 애플릿 테스트 AWT로 만드는 애플릿 : Applet 상속 스윙으로 만드는 애플릿 : JApplet 상속 2. html 파일 작성 3. 애플릿 테스트 appletviewer를 이용한 테스트 이클립스에서 실행 콘솔창에서 직접 appletviewer.exe를 직접 실행 웹 브라우저를 이용한 테스트 html 문서를 로딩하도록 웹 브라우저 직접 실행 웹 브라우저에 의해 html 문서에 내장된 애플릿이 로딩되어 실행됨

Applet로 만드는 애플릿 MyAppletEx.java MyApplet.html 애플릿을 내장하는 HTML 파일 import java.awt.*; import java.applet.*; public class MyAppletEx extends Applet { String text=null; int x; int y; int fontSize; public void init() { text = "Hello. It's Applet"; x = 30; y = 30; fontSize = 20; } public void start() {} public void stop() {} public void destroy() {} public void paint(Graphics g) { g.setColor(Color.YELLOW); g.fillRect(0,0, getWidth(), getHeight()); g.setColor(Color.RED); g.setFont(new Font("Arial", Font.ITALIC, fontSize)); g.drawString(text, x, y); MyApplet.html <html> <head> <title> 애플릿 테스트입니다.</title> </head> <body> <applet code="MyAppletEx.class" width="300" height="300"> </applet> </body> </html> 애플릿을 내장하는 HTML 파일

애플릿 실행 - appletviewer를 이용한 테스트 애플릿 뷰어(appletviewer.exe) 오라클에서 작성되어 JDK에 배포되는 유틸리티 JDK가 설치된 디렉터리 밑의 bin 디렉터리에 있음 명령창에서 실행 시킬 수 있으나 불편하므로 이클립스에서 바로 실행 가능 자바 프로그램 실행 버튼 클릭

이클립스에서 애플릿뷰어로 애플릿 실행 애플릿 실행

웹 브라우저를 이용한 애플릿 실행 더블클릭하여 웹 브라우저 실행 (30,30) MyApplet.html 을 MyAppletEx.class 와 같은 디렉토리에 작성 노란 배경색 영역이 애플릿이 실행되는 공간. 300x300 크기

스윙으로 만드는 애플릿 MyJAppletEx.java MyJApplet.html 애플릿을 내장하는 HTML 파일 import java.awt.*; import javax.swing.*; public class MyJAppletEx extends JApplet { String text=null; int x; int y; int fontSize; public void init() { text = "Hello. It's Applet"; x = 30; y = 30; fontSize = 20; setContentPane(new MyPanel()); } public void start() {} public void stop() {} public void destroy() {} class MyPanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.YELLOW); g.fillRect(0,0, getWidth(), getHeight()); g.setColor(Color.RED); g.setFont(new Font("Arial", Font.ITALIC, fontSize)); g.drawString(text, x, y); MyJApplet.html <html> <head> <title> 애플릿 테스트입니다.</title> </head> <body> <h1>애플릿 테스트</h1> <hr noshade> <applet code="MyJAppletEx.class" width="300" height="300"> </applet> </body> </html> 애플릿을 내장하는 HTML 파일

애플릿에 파라미터 전달하기 애플릿이 사용자로부터 값을 입력 받기 위한 방법 애플릿 응용프로그램에서 파라미터 읽기 <param> 태그 <applet> 태그의 내부 태그, name 속성과 value 속성 자바 애플릿 응용프로그램에서 이 name으로 지정한 이름으로 value의 값 액세스 애플릿 응용프로그램에서 파라미터 읽기 String Applet.getParameter(String name) <param> 태그의 name에 해당하는 value 문자열 리턴 <applet code=애플릿클래스파일이름. width=애플릿이 출력되는 화면 상의 윈도우의 크기. height=애플릿이 출력되는 화면 상의 윈도우의 크기. [codebase=애플릿의 URL] [alt = 대체 문자열] > <param name="파라미터이름1" value="파라미터 값1"> <param name="파라미터이름2" value="파라미터 값2"> ............... </applet>

애플릿에서 <param>태그의 파라미터 받기 HTML파일 <applet code=MyJAppletParamEx.class width=300 height=300> <param name="text" value="Let's study Applet!!!"> <param name="xpos" value="10"> <param name="ypos" value="100"> <param name="fontsize" value="30"> </applet> getParameter(“text”)의 리턴 값은 "Let’s study Applet!!!" 애플릿 public void init() { String text = getParameter("text"); int x = Integer.parseInt(getParameter("xpos")); int y = Integer.parseInt(getParameter("ypos")); int fontSize = Integer.parseInt(getParameter("fontsize")); } text = “Let’s study Applet!!!” x = 10 y = 100 fontSize = 30 init() 메소드의 실행 결과

<param>태그로부터 파라미터를 읽는 애플릿 예제 import java.awt.*; import javax.swing.*; public class MyJAppletParamEx extends JApplet { String text=null; int x=0; int y=0; int fontSize=10; public void init() { text = getParameter("text"); try { x = Integer.parseInt(getParameter("xpos")); y = Integer.parseInt(getParameter("ypos")); fontSize = Integer.parseInt(getParameter("fontsize")); }catch(NumberFormatException e) {} setContentPane(new MyPanel()); } class MyPanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); if(text == null) return; g.setColor(Color.YELLOW); g.fillRect(0,0, getWidth(), getHeight()); g.setColor(Color.RED); g.setFont(new Font(“Arial", Font.ITALIC, fontSize)); g.drawString(text, x, y); <html> <head> <title> 애플릿 테스트입니다.</title> </head> <body> <h1>애플릿 파라미터 테스트</h1> <hr noshade> 애플릿은 300x300 크기로 출력되며 (10,100) 위치에 30픽셀 크기의 Let\’s study Applet!!!을 출력한다. <br> <applet code=MyJAppletParamEx.class width=300 height=300> <param name="text" value="Let's study Applet!!!"> <param name="xpos" value="10"> <param name="ypos" value="100"> <param name="fontsize" value="30"> </applet> </body> </html> * appletviewer로 실행할 수 없음

애플릿의 보안에 따른 제약 애플릿의 보안 문제 애플릿의 제약 사항 애플릿은 서버에 있는 코드가 클라이언트 상에서 실행되는데 보안 문제 발생 서버 코드가 안전함을 확신하기 어려움 애플릿의 클라이언트 컴퓨터에 대한 접근 제약을 둠 예) 애플릿은 클라이언트 컴퓨터의 하드를 접근할 수 없도록 함 trusted applet 클라이언트 컴퓨터의 파일 시스템에 대한 접근이 허용된 애플릿 Java2부터 새로운 보안 프로토콜 도입됨 http://www.developer.com/java/ent/article.php/3303561 애플릿의 제약 사항 클라이언트 파일시스템 접근 불허 애플릿은 클라이언트 컴퓨터의 파일을 읽고 쓸 수 없다. 클라이언트 컴퓨터의 타 프로그램 실행 불허 애플릿은 클라이언트 컴퓨터 상에 설치된 프로그램을 실행할 수 없다. 클라이언트 컴퓨터 상의 정보를 빼오거나 클라이언트 컴퓨터를 망가뜨리거나 파일을 삭 제하거나 할 수 있기 때문 네트워크 접속 불허 애플릿은 클라이언트 컴퓨터에서 다른 컴퓨터로 네트워크 접속할 수 없다. 애플릿이 다운로드 되었던 서버하고만 유일하게 통신 가능

애플릿에서 오디오 다루기 애플릿에서 재생 가능한 오디오 포맷 오디오 클립 오디오 재생 과정 Wav, AIFF, MIDI, AU, RMF 오디오 클립 재생 가능한 오디오 정보를 담은 객체 오디오 재생 과정 오디오 클립 객체 생성 Java 2 이전 - 애플릿에서만 오디오 재생 가능 Java 2 이후 - 데스크톱 응용프로그램에서도 재생 가능 Class classObject = this.getClass(); URL url = classObject.getResource("song.au"); // class 디렉토리에 있는 song.au 의 URL AudioClip audioClip = Applet.newAudioClip(url); // 오디오 클립 생성

오디오 재생 AudioClip의 메소드 void play() void stop() void loop() 오디오 클립의 연주를 시작한다. 항상 처음부터 시작한다. void stop() 오디오 연주를 중단한다. void loop() 오디오 클립을 반복적으로 연주한다.

예제 15-1 : 애플릿에서 오디오 연주하기 AudioJAppletEx.java AudioJAppletEx.html 예제 15-1 : 애플릿에서 오디오 연주하기 AudioJAppletEx.html AudioJAppletEx.java <html> <head> <title> 애플릿 테스트입니다.</title> </head> <body> <applet code=AudioJAppletEx.class width=300 height=300> </applet> </body> </html> import java.awt.*; import javax.swing.*; import java.applet.*; import java.net.URL; public class AudioJAppletEx extends JApplet { AudioClip clip=null; public void init() { setContentPane(new MyPanel()); URL audioURL = getClass().getResource("ToYou.mid"); clip = Applet.newAudioClip(audioURL); } public void start() { if(clip != null) { clip.play(); ((MyPanel)getContentPane()).setText("오디오 연주가 시작되었습니다."); public void stop() { if(clip != null) clip.stop(); class MyPanel extends JPanel { JLabel label = new JLabel(); MyPanel() { add(label); void setText(String text) { label.setText(text); *ToYou.mid 파일을 class 파일이 있는 디렉터리에 삽입

예제 15-2 : 오디오 재생/중지 가능한 데스크톱 응용프로그램 작성 class MyPanel extends JPanel { AudioClip clip = null; JButton btn[] = new JButton [2]; MyPanel() { setBackground(Color.ORANGE); setLayout(new FlowLayout()); MyActionListener listener = new MyActionListener(); btn[0] = new JButton("Play"); btn[1] = new JButton("Stop"); for(int i=0; i<btn.length; i++) { add(btn[i]); btn[i].addActionListener(listener); } URL audioURL = getClass().getResource("ToYou.mid"); clip = Applet.newAudioClip(audioURL); class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Play")) clip.play(); else clip.stop(); public static void main(String[] args) { new AudioFrameEx(); import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*; import java.net.URL; public class AudioFrameEx extends JFrame { AudioFrameEx() { setTitle("JFrame에서 오디오 연주"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setContentPane(new MyPanel()); setSize(300, 150); setVisible(true); } Play 버튼을 누르면 ToYou.mid 연주 Stop 버튼을 누르면 연주 중단