PowerPoint 프레젠테이션

Download Report

Transcript PowerPoint 프레젠테이션

JAVA
강의노트 1
전진오([email protected])
What is JAVA ?
• 컴퓨팅 환경의 변화
– 70년대 메인 프레임 시대
– 80년대 중형 컴퓨터/PC, 클라이언트/서버
– 90년대 웹/PC (빌 게이츠 : 향후 컴퓨팅 환
경은 웹과 PC의 결합)
– 90년대 말 : 네트워크 컴퓨팅?
인터넷과 자바
• 웹 혁명
– 웹은 세계의 디지털 라이브러리에 대한 보
편적인 인터페이스
– 자료에 대한 표준화되고 만국 공통의 인터
페이스
– 그래픽적인 표현
– 놀라운 전파력
• 인터넷 혁명
–
–
–
–
–
–
–
–
–
–
파일 + 메일
TCP/IP
초기 웹
모자이크 + 넷스케이프
인터넷 온라인 연결
Secure payments
멀티미디어 저작
자바
VRML
HTML +++
• 자바 혁명
– 단순한 정적 데이터가 아니라 살아있는 응
용 프로그램
– 클라이언트가 즉각적으로 반응할 수 있다.
– 대화형의 멀티미디어
– 프로토콜 공유 가능
– 자바는 새로운 패러다임에 적합한 진화
프로그래밍 언어와 자바
• C의 문제점 보완
– 리소스 자동 관리
– Strong-typed(RunTime에서 결정dynamic typing. C++도 역시 가능)
– 배열 경계 검사
– 강력한 유형 예외
• C++의 문제점 보완
– 복잡성 제거(다중 상속 제거, 순수 객체 지
향 등)
– 읽고 쓰기 쉽다(가독성 개선)
• 하드웨어/OS 독립
– 기초 유형들이 하드웨어 독립적(IEEE 규격
을 따름)
– 기계와 실제 구현에 독립
– 미정의된 것을 사용하지 않는다.
– 가상 커널 사용, 바이트코드로 미리 컴파일
– 자바 커널은 소프트웨어적 구현
객체 지향 프로그래밍
• 객체 지향(Objects)의 개념
– 객체는 자료와 기능(즉, 속성과 도구)의 집합
• Classes
– 객체를 기술하는 것을 클래스, 각 객체는 어떤 클
래스의 인스턴스
• Inheritance
– 단일 상속 (자바는 상속 방식은 C++의 가상 함수
와 유사)
– 다중 상속 (자바는 직접적으로 지원하지 않음. 구
현의 복잡성과 실효성을 절충한 인터페이스 도입)
• Message Passing
– 객체 간의 통신 수단.
– 메시지는 목적 객체를 구분하는 이름과 어
떤 인자/변수를 포함. 기존의 함수와 유사.
• dynamic binding
– message-sending polymorphism
• Polymorphism
– Inclusion polymorphism
• 동일한 부모 클래스를 가진 객체들의 동일한 메
시지에 대한 다른 처리 내용
– Operation polymorphism
• 클래스 상속에 의한 아무런 관계도 없는 객체들 간의 일
종의 다형성 행위
• function overloading도 일종의 연산 다형성
– Parametric polymorphism(genericity)
• 일반 유형 선언의 인자로 유형 선언.
• 변수 다형성에 의한 코드 공유.
• C++의 템플릿 개념.
• Reuse
– Inter-application reusability
• 프로그램 개발에 있어서 분석과 설계에 있어 재사용
• OLE 등과 같이 프로그램 객체가 외부 세계와 통신할 수
있는 인터페이스 제공도 포함.
– Development reusability
• 주어진 프로그램의 다음 버전에서 성분들을 재
사용.
• 특정 목적의 소프트웨어 구성 요소들의 집적된
집합을 지원하는 것이 목적.
– Program reusability
• 서로 다른 데이터를 가지고 계속 실행함으로써
프로그램 재사용.
• 사용자에게 친숙한 UI를 통하여 개선.
– Code reusability
• 모듈화에서 얻어지는 부분.
• 동적 바인딩과 다형성을 가진 상속을 이용하여
아주 강력한 재사용 지원
객체지향의 잠재적인 이익
• 복잡한 것을 손쉽게 관리
• 용이한 수정과 신뢰성
• 소프트웨어 재사용
JAVA의 소개
• JAVA?
– 인도네시아 섬, 커피의 대명사 등…
– 도심의 카페 이름
• JAVA란
– 미국 Sun Microsystems사에서 개발한 프로그램 언어
• Sun사 홈페이지 : http://www.sun.com
– 객체지향언어(Object Oriented Language)
• 60년 초반 Simula 언어에서 발전
– C++와 유사
• Java이전에 객체지향언어로 가장 범용적인 언어
• 80년 중반 AT&T연구소에서 개발
• JAVA의 역사
– 1990년 Green Project에서 시작
• 양방향 TV를 만드는 제어박스 제작 프로젝트
• 모든 하드웨어에서 작동할 수 있도록 고안
• 초기에 C++채택
– 다양한 하드웨어를 지원하는 분산 네트웍 시스템 개발에
부족
– Oak라는 언어를 직접 개발
• Oak가 발전하여 Java가 개발됨
• James Gosling이 개발
– 현재 Sun사의 부사장 : http:/java.sun.com/people/jag
– 1995년 5월에 SunWorld95에서 HotJava와 함께 공식 발표
• 96년에 Javasoft부를 설치하여 계속 개발
• 현재 JDK1.4 출시
정적인 웹페이지 vs 동적인 웹페이지
HTML
GIF
Web
browser
Web page
with graphics
HTML
정적인
웹페이지
Applet
Java-capable
Web browser
Web page
with applet
동적인
웹페이지
JAVA의 특징(1)
1) 간단하다
자바는 C++에 가깝지만 훨씬 간단하다. 자바에는
고급 언어들에 들어 있는 여러 가지 요소들 중에서
반드시 필요하지 않은 부분은 모두 빠져 있다.
2) 객체 지향적이다
자바는 숫자(int, float, long 등)나 논리값(true,
false)을 제외한 거의 모든 것이 객체로 구성되어
있다 . 실제로 자바는 Object 클래스에서 모든 클
래스를 파생한다.
Java는 C/C++의 다음 기능을 제외시켰다.
- typedef(형 정의)
--> 상수 선언으로 대치
- #define(기호상수 정의) --> 클래스 정의로 대체
- 구조체와 공용체
- 함수
- 다중 상속
- goto 문
- 연산자 중복
--> 클래스로 데이터 구조 정의
--> 클래스에 의존한 메소드
--> 단일 상속만 가능
--> break 문과 continue 문 제공
--> 난해한 이유로 제거
- 강제 변환(correction) --> 형 변환(Casting)으로 처리
- 포인터(pointer) --> 객체의 참조는 묵시적 참조로 처리
JAVA의 특징(2)
3) 분산 환경을 지원한다
자바에는 TCP/IP 라이브러리가 기본적으로 포함되어 있다.
또한 http와 ftp 프로토콜을 기본적으로 지원한다.
4) 인터프리터 언어이다
자바는 정확하게 말하면 컴파일 언어인 동시에 인터프리터
언어이다. 자바는 먼저 텍스트 소스를 컴파 일하여 2진 파일
(클래스 파일)로 만든 다음 자바 런타임이 클래스 파일을 인
터프리트하면서 실행한다. 먼저 시스템에 무관한 2진 파일을
만듬으로써 자바는 컴파일 언어에 가까운 속도와 시스템 독
립성을 동시에 얻을 수 있었다.
자바 컴파일러(Java Compiler):
자바 프로그램을 중간 언어(intermediate language) 형태인 자바 바
이트코드로 컴파일 함.
자바 바이트코드(Java Byte code):
플랫폼에 상관없이 자바 가상머신에 의해 실행될 수 있도록 정의된 중
간코드. 따라서, 자바 바이트코드로 컴파일 되기만 하면, 자바 인터프
리터인 자바 가상머신이 설치되어 있는 곳이면 어디든 실행 가능.
자바 인터프리터(Java Interpreter) 또는 자바 가상머신(JVM):
자바 바이트코드 명령어를 해석하고, 이를 자바 인터프리터가 설치되
어 있는 플랫폼(윈도우 95/98/NT, 유닉스, 매킨토시 등)에 맞게 실행
시켜 줌. 자바 인터프리터는 자바 바이트코드를 실행시켜 주기 위한
기능을 명세하고 있는 자바 가상머신을 구현해 놓은 것으로서 자바 가
상머신과 같은 의미로 사용되며, 주로 자바 가상머신으로 많이 사용됨.
Java 바이트코드와 Java 인터프리터
Java
소스코드
Java 컴파일러
(Intel)
Java 컴파일러
(Power PC)
10101010
01101101
Java 컴파일러
(SPARC)
Java bytecode
Java 인터프리터
(Intel)
Java 인터프리터
(Power PC)
Java 인터프리터
(SPARC)
Win95
MacOS
UNIX
JAVA의 특징(3)
5) 강고하다
이것은 자바가 C++과 마찬가지로 컴파일 때에 유
형 검사를하여 에러를 막을 뿐만 아니라 도구들까
지 명확한 유형 선언을 하도록 한다. 자바는 포인
터 연산을 지원하지 않는다. 이는 잘못된 주소를
가르킬 가능성을 사전에 없앤 것이다. 자바는 포인
터를 표현하기 위해 실제 배열을 사용하여 메모리
경계를 범할 가능성을 없애고 메모리 검사를 가능
하게 하였다. 자바는 모든 메모리 접근을 자바 시
스템이 관리하고 제한하며 또한 예외 핸들링을 하
여 시스템 붕괴의 우려가 없다.
JAVA의 특징(4)
6) 자바는 안전하다.
자바는 포인터 개념이 없고 유형 정의가 강고하여서 실행 전에
클래스 파일을 이용한 프로그램의 검사가 가능하다. 실제로 웹
브라우저가 애플릿을 실행하기 전에 보안 검사를 한다.
7) 기계 중립적이다.
웹의 서버-클라이언트 환경에서 이기종 서버-클라이언트의 지
원은 매우 중요한 문제이다. 자바는 웹을 기본 환경으로 하고
있기 때문에 처음부터 이 문제를 염두에 두고 만들어졌다. 자바
의 실행 파일은 기계 중립적인 이진 코드(클래스) 파일이다. 이
클래스 파일을 기계 종속적인 자바 런타임이 인터프리트하여
실행시키는 것이다. 따라서 자바 런타임이 설치된 시스템에서
는 어디서나 자바 프로그램을 실행할 수 있다.
JAVA의 특징(5)
8) 이식성이 높다.
자바는 유형 정의를 시스템에 무관하게 정의하고 있다.
따라서 C++에서처럼 시스템에 따라 동일한 유형(예를 들
어 int)이 다르게 사용되는 경우가 없다. 또한 기계 중립
적인 자바의 특성은 곧바로 자바의 높은 이식성을 말해
준다.
9) 높은 수행능력을 제공한다.
자바는 기계 중립적인 이진 코드로 미리 컴파일된 것을 실
행 때 기계어 코드로 번역하여 수행하는 방식을 채택하고
있고 또 이진 코드는 기계어로 번역될 것을 감안하여 설계
되었으므로 그 수행능력이 C나 C++ 컴파일러에 의한 기계
어 코드에 비견할 만하다. 현재 자바 이진코드의 수행속도
는 C 컴파일러의 약 20분의 1이라고 한다.
JAVA의 특징(6)
10) 멀티 쓰레딩을 지원한다.
윈도우 NT, 윈도우95나 솔라리스는 쓰레드를 지원하는 운영
체제들이다. 윈도우 3.1은 멀티 쓰레드를 지원하지 않으므로
자바 런타임을 구현할 수 없다. 쓰레드는 하나의 프로세스
인스턴스(인스턴스는 객체의 실제 변수로 생각하면 된다.)가
실행되는 경로로 정의되는데 멀티 쓰레드를 지원할 경우 하
나의 프로그램 단위가 동일한 쓰레드를 동시에 수행할 수가
있다. 보통 사용자 인터페이스 쓰레드와 장시간 계산이 필요
한 쓰레드가 동시에 필요할 때 멀티 쓰레드가 효과적이다.
특히 자바는 멀티 프로세서 하드웨어를 지원하도록 설계되
었으므로 멀티 CPU 시스템에서 높은 효율을 낼 수 있다.
JAVA의 특징(7)
11) 동적이다.
자바 인터페이스를 이용하면 하나의 모듈
을 갱신할 때 다른 모듈을 모두 갱신할 필
요가 없다. 이것은 인터페이스가 모든 인스
턴스 변수와 도구의 실행문을 배제한 채 객
체 간의 상호 작용을 정의하기 때문이다.
Java의 실행과정
Java의 현재와 미래
• Java 개발환경
–
–
–
–
MS의 Visual J++
Borland의 JBuilder
Symantec의 Café
Sun의 JDK, WorkShop
• Java로 만들어진 응용 프로그램
– Sun사의 HotJava
• 최초의 Java 프로그램을 실행할 수 있는 브라우저
– Operating System : Kona
• Java를 지원하는 최초의 OS
• Java의 성공 원인
– 인터넷 응용을 위한 이상적인 프로그램밍 언어
•
•
•
•
브라우저를 통해 쉽게 이용 가능
대화형 지원
보안성 중시
실시간 운영
– 간편한 객체지향언어
• 90년대의 객체지향의 발전
• 배우기 쉽고, 유지보수 및 재활용성이 좋음
– 플랫폼에 독립적(Platform independent)
• Any Hardware, Any OS
• Java의 미래
– 범용 프로그램밍 언어로서 차세대 인터넷 소프트웨어
의 중요한 역할 담당
– 네트웍 및 다양한 시스템 소프트웨어의 개발언어로
발전
– 1999년까지 Java의 상업성 가치는 6억 3천만달러
Java 관련 용어
• Java와 HotJava
– HotJava
• Sun사에서 만든 Java로 만들어진 브라우저(응용 프로그램)
• Java 프로그램의 종류
– Java Application
• 일반 응용 프로그램
– Java Applet
• App + Let(small)
• 브라우저를 통해서만 실행 가능한 프로그램
–
–
–
–
HotJava
Netscape Navigator 2.0 이상
MS Internet Explorer 3.0 이상
JDK에 있는 appletviewer
• Web 페이지에 들어있는 Java로 만들어진 작은 프로그램
– Web에서 사용 가능한 Java 프로그램
• JavaScript
– 브라우저에서 직접 인식할 수 있는 Script Language
• HTML과 함께 인터넷 프로그램에 필요한 언어
• .html확장자를 가진 파일 내에서 직접 쓰이는 언어
– 문법은 Netscape사가 만들고 Sun은 상표에 대한 소유
권
– HTML(Hyper Text Markup Language)
• Hyper Text를 만들기 위한 일종의 언어 규약
– 일반 텍스트 문서에 HTML Tag를 사용하여 작성
• JDBC
– Java Data Base Connectivity
– 기존의 DBMS와 Java 응용 프로그램간의 연결을 도와
주는 SQL API(Application Programming Interface)
Package
JAVA탄생의 뒷 이야기
• 탄생
– 가전 제품에 들어갈 소프트웨어를 만들기 위해 탄생
• 개발자
– 선 마이크로시스템즈 사의 James Gosling 외
• 가전 제품의 긴 수명으로 인한 완벽한 호환을 가진 소프트웨어
의 개발 요구
• 가전 제품에 사용될 소프트웨어의 높은 신뢰성 필요
• C 언어의 문제점
– 특정한 컴퓨터 칩에 대해 컴파일하여야