제 1 장. JAVA란 작성자 : NLIP
목 차 Java 란? 자바언어의 역사 자바의 주요특성 자바의 개발환경 키트(JDK)의 설치 Compile 및 실행 기본 자바 SITE와 서적
Java 란? 썬 마이크로시스템즈사에서 개발한 객체 지향 프로그래밍 언어 자바 바이트코드(Bytecode) 자바 가상 머쉰(Java Virtual Machine) 특정 플랫폼이 아닌 네트웍 환경과 다양한 하드웨어에서 작동할 수 있다. 자바로 작성된 프로그램은 윈도우, 매킨토시, 유닉스 등 자바 코드를 실행할 수 있는 자바 가상(virtual) 머신만 있으면 자바 코드를 변경할 필요없이 실행할 수 있다. 자바 컴파일러는 바이트 코드(Byte Code)라는 중립적인 구조의 실행 코드를 만들어낸다. 바이트 코드는 각 플랫폼에 있는 인터프리터를 통해 실제로 실행된다. (자바 인터프리터가 자바 코드를 한줄 한줄 실행하게 되어 있다.)
자바 언어의 역사 [1/2] Sun Microsystems Inc. 1990년 “그린 프로젝트”로 시작 James Gosling 1990년 “그린 프로젝트”로 시작 1991년 가전제품을 위한 언어로 개발 <OAK> 범용 프로그래밍 언어로 발전 Java James Gosling, Arthur Van Hoff, Andy Bechtolsheim 인도네시아 산 커피 원료 이름 자바는 월드 와이드 웹이 개발되기 시작하였던 1991년 선 마이크로시스템즈(Sun Microsystems)에서 제임스 고슬링(James Gosling)에 의해 단순하고 버그가 없는 가전 전자 제품을 만드는 것을 목적으로 개발
자바 언어의 역사 [2/2] 모든 OS, 플랫폼 및 GUI에서 작동 될 수 있는 분산 응용 프로그램은 없을까? 분산 Client-server 환경 PC 모든 OS, 플랫폼 및 GUI에서 작동 될 수 있는 분산 응용 프로그램은 없을까? NETWORK Server Mac
자바의 주요 특성 간단하며 친숙한 언어 객체지향 언어 플랫폼에 독립적 견고하고 보안에 강하다 동적 링킹, Multi Thread(멀티스레드) 지원 Garbage Collection(가비지 콜렉션) Java Virtual Machine(JVM)
간단하며 친숙한 언어 [1/2] 작고 간단해서 쉽게 프로그래밍하고, 쉽게 디버깅하고, 쉽게 배울 수 있도록 하는 것 연산자와 문장 구조 : ANSI C 언어 객체 지향적인 개념 : C++ 언어 C/C++의 복잡한 기능 일부 삭제(코드의 단순성) 포인터 연산 삭제, 자동적인 메모리 관리
간단하며 친숙한 언어 [2/2] 자바가 C/C++과 다른점 1.구조체(struct), 공용체(Union), 포인터(pointer)를 지원하지 않는다. 2. typedef와 #define을 지원하지 않는다. 3. 연산자 다중 정의를 지원하지 않는다. 4. 클래스 다중 상속을 지원하지 않는다. 5. 문자 배열로서 String이라는 클래스를 지원한다. 6. 쓰레기 수집( Garbage Collection ) 기능을 제공함으로써 메모리 할당과 해제 함수를 사용할 필요가 없다.
객체지향 언어 객체지향 언어 특성 다형성 자료 추상화(data abstraction) 상속성(inheritance) 다형성(polymorphism) 다형성 function overloading --- method overloading operator overloading --- 지원하지 않음 한 클래스 내에서 함수 이름은 동일하지만 함수의 아규먼트(아큐먼트의 수 아규먼트의 타입)가 다른 경우이다. Public void say(String msg){ } Public void say(String msg, int n){
플랫폼에 독립적 [1/3] 아키텍쳐에 독립적 기존 개발환경과의 비교 플랫폼에 독립적인 Bytecode 사용 JVM(Java Virtual Machine) 기존 개발환경과의 비교 전통적인 컴파일링 시스템 플랫폼에 독립적인 시스템 플랫폼 독립 특정 플랫폼이 아닌 네트웍 환경과 다양한 하드웨어에서 작동할 수 있다. 자바로 작성된 프로그램은 윈도우, 매킨토시, 유닉스 등 자바 코드를 실행할 수 있는 자바 가상(virtual) 머신만 있으면 자바 코드를 변경할 필요없이 실행할 수 있다. 자바 컴파일러는 바이트 코드(Byte Code)라는 중립적인 구조의 실행 코드를 만들어낸다. 바이트 코드는 각 플랫폼에 있는 인터프리터를 통해 실제로 실행된다. (자바 인터프리터가 자바 코드를 한줄 한줄 실행하게 되어 있다.)
플랫폼에 독립적 [2/3] 기존 프로그램 개발 환경 Pentium 소스 코드 PowerPC SPARC 이진 파일
플랫폼에 독립적 [3/3] 자바 개발 환경 (Pentium) Pentium 코드 (플랫폼 독립적) (PowerPC) 자바 컴파일러 (Pentium) (PowerPC) (SPARC) 자바 인터프리터 Pentium PowerPC SPARC 코드 바이트코드 (플랫폼 독립적)
견고하고 보안에 강하다 JVM은 읽어들인 byte code에 대한 security check를 하므로 기존의 언어에 비해 견고한 보안을 제공한다. HiJava.java HiJava.java 컴파일 시점 Internet 4. 신뢰성과 안정성 컴파일시에 엄격한 데이터 형을 검사함으로써 프로그램 실행시 발생할 수 있는 비정상적인 상황 등을 미리 막을 수 있다. 시스템의 힙(Heap)이나 스택(Stack) 등의 메모리에 접근할 수 없기 때문에 바이러스로부터 안전하게 보호될 수 있다. 공용키 암호화 방법으로 사용자를 식별하기 때문에 해커들로부터 암호화 같은 중요한 정보 들을 보호할 수 있게 된다. Class Loader JIT code generator HardWare 실행 시점 ByteCode Verifier Interpreter Runtime
동적이고 멀티 스레드를 지원 동적 링크 언어차원에서 멀티스레드를 지원 중립적인 바이트 코드를 통하여 JVM에서 작동하고,실행시간까지 링크를 지연함으로서 클래스 라이브러리가 동적으로 가져올 수 있도록 한다. 재컴파일 문제점 해결 언어차원에서 멀티스레드를 지원 서로 다른 일을 동시에 처리 가능 하나의 자바 프로그램이 여러 개의 스레드로 구성 동적 링크 클래스가 실행시간에 동적으로 로드 재컴파일 문제점 해결(인터프린터 언어) 6. 멀티스레드(Multi-thread) 하나의 프로그램 안에서 여러 작업을 동시에 처리할 수 있는 기능이 있다.
자바 개발 환경 프로그래밍 환경 운영 환경 통합 환경(IDE) 프로그램 작성 편집기, 디버거 프로그램 실행 컴파일러, 실행시간 지원 시스템, 라이브러리 시스템 JDK(Java Developers Kit) 통합 환경(IDE) Visual J++, Jbuilder, Symantec Cafe
키트(JDK)의 설치[2/1] 1. JDK 최신 버전을 다운로드 및 설치 http://java.sun.com/products/jdk/1.3 1.2버전 이후로는 JAVA 2 SDK(Software Development Kit)이란 명칭으로 배포 2. 실행 파일 경로 설정(c:\jdk1.3 에 설치) - Win 95/98(c:\autoexec.bat 파일 끝에 다음을 추가) set path=c:\jdk1.3\bin; set classpath=c:\jdk1.3\jre\lib\rt.jar; - Win NT(제어판의 시스템/환경변수 탭 조정) Path변수: c:\jdk1.3\bin 추가 ClassPath 변수 : 현재 디렉토리(.) 추가
키트(JDK)의 설치 [2/2] JDK설치 확인 class Test{ public static void main(String args[]) { System.out.println("Hello World!"); } 결과가 Hello World!가 나오면 JDK를 성공적으로 설치 결과: Hello World!
Compile 및 실행하기 Compile 방법 - dos창을 열어 다음을 입력한다. - Compile이 완료되면 .class파일 생성 C:\javac FileName(파일명).java 실행 방법 - dos창을 열어 다음을 입력한다. - 화면에 결과 출력 C:\java FileName(파일명)
기본 자바 SITE와 서적 자바 API 스팩 자바 웹 서적 http://java.sun.com/products/jdk/1.3/download-docs.html 자바 웹 서적 썬에서 제공하는 무료 온라인 지도서 http://java.sun.com/docs/books/tutorial Java Lecture Notes http://sunsite.unc.edu/javafaq/course/
에디터(Editor) EditPlus 다운로드 http://www.editplus.co.kr/kr/download.html