526f963f0cfdb11cba88161edb081f3a.ppt
- Количество слайдов: 57
제 1장 Java 소개
1. 1 Java 소개
Java 소개 내용 n n Java의 플랫폼 독립성 Java 환경 n n n Java 프로그래밍 환경(programming environment) Java 실행 환경(run-time environment) Java 플랫폼(platforms)
프로그래밍 언어 n 소프트웨어가 발전함에 따라 새로운 프로그래밍 언어 가 소개되었다. n 주요 언어 n n n Assembly : ~1960, hardware access Fortran : 1960 s ~1980 s, scientific program C : 1970 s~1990 s, all kinds of program C++ : 1980 s~1990 s, OO-based program Java : 1990 s~, ubiquitous program C# : 2000 s~, MS Windows-based program
플랫폼 종속성 C program Windows (x 86) x 86 Linux Executable x 86 Windows Compiler x 86 Windows Executable Linux (x 86) SPARC Solaris Executable Solaris (SPARC) x 86 Linux Compiler SPARC Solaris Compiler
의존성은 어디에서 오는가? n Programs should modify themselves in accord with a specific platform. n Hardware n n n Instruction set architecture (ISA) Memory management model Operating System n n n Executable file format API (Application Programming Interface) Linking and relocation : addressing reference
Java의 플랫폼 독립성 n 모든 플랫폼은 Java 프로그램을 지원해야 한다. n 플랫폼-독립적인 언어 n n n 어떤 하드웨어/운영체제에서도 실행 가능 한번 작성 어디서나 사용(Write Once, Use Everywhere) 내장형 프로그래밍에 적합 n n 여러 종류의 플랫폼이 하나의 명세를 만족해야 한다. 단점은 없을까? n n n 많은 메모리 사용 느린 실행 속도 정교한 시스템 소프트웨어 기술이 요구됨
Java 가상 기계(Virtual Machine) n Java 플랫폼 독립성의 핵심 n 가상 기계(virtual machine) n 소프트웨어 혹은 하드웨어로 구현될 수 있다. n n n 명령어 집합 n n n 바이트코드(bytecode) 똘똘한 메모리 시스템 n n 소프트웨어 방법 : SUN JDK, Hot. Spot 하드웨어 방법 : Java chip 쓰레기 수집(Garbage collection) 가능 실행 파일 형식 n class 파일 표준 API
플랫폼 독립성 Windows, JVM (x 86) Java program Java class file Linux, JVM (x 86) Java Compiler Solaris, JVM (SPARC)
왜 Java인가? n 플랫폼 독립성 n 네트워크 지원 n n n 엄격한 보안 검사 n n 바이트코드 검증(Bytecode verification) 접근-수준 기반 보안 모델(Access-level based security model) 메모리 출혈 없음 n n 스트림-기반 실행 모델(stream-based execution model) 동적 로딩(Dynamic class loading) 자동 메모리 회수 작은 코드 크기(바이트코드) 객체-지향 언어
Java의 장점 n 사용자 측면 n n 여러 종류의 장치 상에서 일관된 look-and-feel 플랫폼을 걱정할 필요가 없다 한번 사면 어디서나 실행(Buy once, Use everywhere) ! 개발자 측면 n 유지 관리 비용을 줄인다. n n 소스 재작성/재컴파일 필요 없음 새로운 플랫폼에서 상업화 가능
Java 환경 n Java Development Kit (JDK)/SDK n Java 프로그래밍 환경 n n n 프로그램 소스로부터 클래스 파일 생성 Compiler, debugger, document generator, … 프로그램 소스는 Java, C, Lisp, … 등으로 작성 가능 Java로 작성 가능하며 플래폼 독립적이다. Java 실행 환경(Java runtime environment: JRE) n n n Java 프로그램 실행 JVM과 Java API로 구성 이 부분은 Java로 작성하기 어렵고 플랫폼 종속적이다.
Java 프로그래밍 환경 n n A Java program = multiple “. java” files A Java executable = multiple “. class” files App_1. java App_2. java App_1. java Java programming environment App_1. class App_2. class App_1. class
Java Compiler (javac) Program “App” class App 1 { … }; class App 2 { … }; class App 3 { … }; n Java compiler App 2. class App 3. class Compiles a Java source into multiple class files n n n App 1. class A Java source consists of definitions of multiple classes. Java compiler creates a class file per a class definition. Currently, n n n Javac does not generate good-quality code. Almost no optimization JRE itself should perform optimization
Java Document Generator(javadoc) n Comments of ‘/**. . */’ n 클래스, 메쏘드, 필드 등에 관한 주석 정보 Java file containing API description javadoc
Java 실행 환경 (JRE) n 바이트코드 프로그램 실행 환경 n n n Java virtual machine(JVM) : 바이트코드 실행 Java API : 표준 클래스 라이브러리 JRE 구성 n n n Java processor + Java. OS + JVM Non-Java processor + OS + JVM
JRE 구성 Applets and Applications Java Standard Extension API Java Base Classes Java Standard Extension Classes Java Virtual Machine Porting Interface Adapter Browser OS Hardware Java on a Browser Adapter OS Hardware Adapter Java. OS OS Hardware Java on a desktop OS Java on a smaller OS Java on Java. OS
Java 프로세서 n Bytecode execution hardware engine n n n Hard to implement all JVM functionalities n n pico. Java, micro. Java, ultra. Java Bytecode frontend for ARM Memory management Thread management Require the support of Java. OS or JVM So far, not popular n Language-specific hardware is a bit expensive.
Java. OS n Operating system for Java platform n n n Java virtual machine Java Embedded API Windowing, Networking, File system n Designed for Network Computer(NC), consumer device, and network device n So far, not popular n Language-specific OS is a bit expensive.
JRE on Java. OS Applets and Applications Java Standard Extension API Java. OS Java API JVM JVM Java. Chip M processor
1. 2 자바의 종류
Java 종류
J 2 SE n Java 2 Standard Edition n n 데스크 톱 환경을 위한 Java 다른 플랫폼에 대한 시작점 JVM(Java Virtual Machine) 소프트웨어 응용 범위 n n 실행 시간: 하루 이하 빠른 시작과 빠른 실행
J 2 EE n Java 2 Enterprise Edition n n 서버 응용 프로그램을 위한 Java 플랫폼 다양한 기술을 통합 n n n Servlet과 JSP(Java Server Page) Enterprise Java. Beans(컴포넌트 기술) CORBA JDBC, XML, Java Transactions Hot. Spot server VM 긴 실행 시간 n n 빠른 실행 동적 컴파일
J 2 ME n Java 2 Micro Edition n n 내장형 시스템을 위한 Java 플랫폼 VM + Profile n n VM : 바이트 코드 실행 환경 Profile : 특정 장치를 위한 라이브러리 전의 embedded Java와 personal Java를 대치 요구 사항 n n 빠른 응답 적은 전력 사용 최소한의 네트워크 연결 넓은 범위의 내장형 시스템 지원
Java 플랫폼 Embedded Space Java Classes TV Profile Screen Phone Profile Car Profile CDC Foundation Class Hot. Spot JVM Servers Workstations PCs J 2 EE J 2 SE CVM Thin Clients Kitty. Hawk Doja. P MIDP Profile CLDC Core Class Smart Card Profile KVM Card VM Battery Powered Card J 2 ME (Java 2 Micro Edition)
1. 3 자바 관련 사이트
http: //java. sun. com/ SUN의 공식 자바 사이트
http: //www. gamelan. com/
http: //www. javaworld. com/ 온라인 자바 관련 잡지
http: //developer. java. sun. com/
http: //www. gnu. org/software/java/ GNU 자바 사이트
http: //www. javalobby. org/
1. 4 자바 언어 맛보기
Hello. World. java 1. 편집기를 이용해서 Hello. World. java 파일을 작성 1 class Hello. World { 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 }
Hello. World. java 2. javac 이용해서 Hello. World. java 파일을 컴파일 % javac Hello. World. java 3. 컴파일하면 Hello. World. class라는 파일이 생성됨 4. Hello. World. class 파일을 자바 인터프리터 java에 의해 실행 n 결과 % java Hello. World Hello World
자바 프로그램의 종류 n 애플릿 (applet) n n n 웹브라우저 상에서 실행되는 프로그램 appletviewer나 네스케이프를 이용해서 실행 어플리케이션 (application) n n 일반적인 응용 프로그램 java라는 인터프리터를 이용해서 실행
자바 애플릿 Hello. java 1. 편집기를 이용해서 Hello. java 파일을 작성 1 import java. awt. *; 2 import java. applet. *; 3 4 public class Hello extends Applet { 5 private String Greeting[ ] = "Hello, world "; 6 7 public void paint(Graphics g) { 8 g. draw. String(Greeting[0], 25); 9 } 10 }
자바 애플릿 Hello. java 2. 편집기를 이용해서 Hello. html 파일을 작성 예제: Hello. html 1 <html><head><title>Hello</title></head> 2 <body> 3 <applet code=Hello. class width=250 height=250> 4 </applet> 5 </body> 6 </html>
자바 애플릿 Hello. java 3. javac를 이용해서 Hello. java를 컴파일 % javac Hello. java 4. 애플릿뷰어(appletviewer)나 네스케이프를 이용, Hello. html 파일을 본다 n n 애플릿은 java 인터프리터로 실행시키지 않고, 웹브라우저나 애플릿뷰어로 실행 프로그램 개발에는 보통 애플릿뷰어를 이용하는 것이 좋음 n 웹브라우저에는 캐쉬 기능
자바 애플릿 Hello. java n 결과 % appletviewer Hello. html
1. 5 초보자가 자주 범하는 실수들
초보자의 실수들 1. 자바는 대소문자를 구별 n 자바는 프로그램에서는 물론 파일 이름도 대소문자를 구별 2. 한글이름으로 된 디렉토리에서는 잘 실행되지 않음 n n DOS에서 한글 이름의 디렉토리를 사용하는 경우에 문제가 생길 수 있다 클래스 경로(path)를 찾는 동안에 한글 이름의 디렉토리는 자바나 웹브라우저가 잘 인식하지 못하기 때문임 3. 자바 소스 파일은. java로 끝나고, 텍스트 형태로 저장해야 함 n 메모장이나 워드를 사용하는 경우, 자바 소스 파일의 이름을 확인 n java로 끝나야 함
초보자의 실수들 4. 자바 실행 파일 경로(PATH)가 제대로 설정되어야 함 n Windows 환경에서 만약 JDK가 C: jdk 1. 2 디렉토리에 설치되어 있다면, autoexec. bat 파일에 다음 변수를 설정 set PATH=%PATH%; c: jdk 1. 2bin n 유닉스에서 /usr/local/java에 설치되어 있다면 C-shell 사용자는. cshrc 파일에 다음과 같은 환경 변 수를 설정 set path=(/usr/local/java/bin/: $path) 5. main()이 있는 클래스를 실행시켜야 한다 n main()이 없는 클래스는 java 인터프리터로 실행시킬 수 없다
초보자의 실수들 6. main은 항상 public static void main(String args[]) 형태이다 7. 애플릿으로 작성한 클래스는 항상 public이다 8. 한 파일에 public 클래스는 1개를 초과할 수 없다 n n 한 파일에는 public 클래스가 최대 1개이다 1개를 초과하는 경우에는 컴파일 시에 에러 메시지를 보여 준다 9. public으로 선언된 클래스가 있는 경우에 파일 이름은 클래스 이 름과 동일해야 한다. 10. 구성자는 리턴 타입이 없고, 클래스 이름과 동일하다 n n 생성자는 클래스 이름과 동일해야 하고 리턴 타입이 없어야 함 리턴 타입이 있는 경우에는 일반 함수로 인식
초보자의 실수들 11. 애플릿은 애플릿뷰어나 웹브라우저를 이용해서 실행해야 한다. 12. HTML에서 애플릿의 width와 height 사이에는 ", "가 없다. <applet code=클래스파일 width=300 height=200> </applet> 13. JDK에서 제공하는 클래스 이름과 동일한 이름의 클래스는 만들 지 않는 것이 좋다. 14. 클래스의 멤버 필드와 함수의 매개변수 이름이 같은 경우, 매개 변수 이름이 우선 순위가 높다. public class Test { int x; public Test(int x) { x = x; } }
초보자의 실수들 15. HTML에서 애플릿의 code 부분에 클래스 이름이 정확한지를 확인 <applet code=클래스파일이름 width=300 height=200> </applet> n "클래스파일이름"의 철자가 틀리는 경우에 IOException 에러가 발생 16. Border. Layout에서 컴포넌트를 붙이는 경우 n "East", "South", "West", "North", "Center"의 대소문자 구별 n 철자에 유의 : 철자가 틀리는 경우에 컴포넌트가 화면에 안 보임 17. 애플릿에서 Image나 Audio. Clip을 읽어올 때 n get. Code. Base( )는 애플릿 클래스가 있는 곳의 URL을 리턴 n get. Document. Base( )는 HTML 파일이 있는 곳의 URL을 리턴
초보자의 실수들 18. 자바 언어의 수많은 클래스들과 메소드를 모두 기억한다는 것 은 불가능 n API 문서를 java. sun. com에서 다운로드 받아 필요할 때마다 참조 19. Button a[] = new Button[10]; n n 이 문장은 버튼을 만드는 것이 아니라 버튼이 들어갈 배열을 만듬 배열을 생성하는 것과 배열 안에 들어갈 객체를 혼동하지 마라 !! 20. 클래스나 메소드에 이름을 붙이는 규칙이 있음 n 클래스 이름은 영어 명사형으로 붙이고 대문자로 시작 n n 예: Car, Chatting. Server 메소드 이름은 동사형으로 소문자로 시작 n n n 여러 단어를 사용할 때는 마찬가지고 시작하는 단어를 대문자로 한다 예: get. Name(), set. Label() 멤버 필드의 이름은 의미에 맞게 붙이고 소문자로 시작한다
1. 6 자바 환경 도구
SDK n n SDK의 bin 디렉토리에 들어 있는 여러 실행 프로그램 SDK 1. 4는 전체적으로 다음과 같은 구조로 구성
SDK 1. 4 설치 n SDK 설치 후에 PATH에 bin 디렉토리 추가 n n CLASSPATH를 설정하지 않아도 기본적인 시스템 클래스와 현재 디렉토리에서 클래스를 찾는다. 그외 다른 디렉토리에 있는 클래스를 사용할 필요가 있는 경우에 CLASSPATH를 설정
javac 컴파일러 n 형태 javac [ options ] [ sourcefiles ] [ @files ] n 옵션 -classpath <클래스패스> : 지정된 클래스패스를 이용한다. -d <디렉토리> : 클래스 파일의 위치를 지정한다. -deprecation : deprecated API 사용에 관해 경고 메시지를 보여준다. -encoding <인코딩이름> : 소스 파일의 인코딩 이름을 설정한다. -g : 디버깅 정보를 생성한다. -g: none : 디버깅 정보를 생성하지 않는다. -g: keyword list : 콤마로 구별되는 키워드에 대해서만 디버깅 정보를 생 성한다. -nowarn : 경고 메시지를 출력하지 않는다. -O : 코드를 최적화한다. -sourcepath <소스패스> : 소스 파일의 위치를 지정한다. -target <버전> : 지정된 버전의 VM에서 작동되는 코드를 생성한다.
java 인터프리터 n 형태 java [ options ] class [ argument. . . ] java [ options ] -jar file. jar [ argument. . . ] n 옵션 -classpath <클래스패스> -cp <클래스패스> : 클래스나 jar, zip 파일이 있는 디렉토리를 기술한다. -Dproperty=value : 시스템의 속성을 기술한다.
appletviewer n n 애플릿을 실행시켜주는 브라우저이다. 형태 appletviewer [ options ] url n 옵션 -encoding <인코딩이름> -J <자바옵션> : java 인터프리터의 옵션을 사용할 수 있다. n url은 자바 애플릿을 포함하는 HTML 파일의 URL 주소를 지정
javah n Javah 헤더 파일 만들기 n n C 언어를 위한 헤더 파일을 생성한다. 형태 javah [ options ] fully-qualified-classname n 옵션 -o <출력파일> : 결과물을 저장할 파일을 지정한다. -d <디렉토리> : 헤더 파일이 생성될 디렉토리를 지정한다. -stubs : 자바 파일에서 C 선언을 생성하도록 한다. -jni : JNI 스타일의 메소드 프로토타입을 갖는 헤더 파일을 생성한다.
jar n jar 압축 파일 만들기 n n 자바 압축 파일을 만들고, 압축을 풀어준다. 형태 jar [ option ] [ manifest-file ] destination input-file [ input-files ] n 옵션 c : 새로운 압축 파일을 만든다. t : 압축 파일의 내용을 화면에 보여준다. x <파일> : 파일의 압축을 푼다. f : 두 번째 아규먼트가 처리할 jar 파일임을 나타낸다. m : manifest 파일을 포함한다. u : 기존의 jar 파일의 내용을 업데이트한다.
javap n javap 역어셈블러 n n 클래스 파일을 역어셈블한다 형태 javap [ option ] class n 옵션 -l : 지역 변수 테이블을 보여준다. -public : public으로 선언된 메소드만 보여준다. -protected: protected와 public으로 선언된 메소드를 보연준다. -package: package, protected, public으로 선언된 메소드를 보여준다. -private : 모든 메소드를 보여준다. -s : 내부 시그니쳐 형태로 보여준다.
526f963f0cfdb11cba88161edb081f3a.ppt