1. Java의 유래
Java의 탄생 배경을 알면 Java 언어의 특성에 대한 이해가 쉬워집니다. Java는 1990년 James Gosling에 의해 처음 연구가 시작되어, World Wide Web이 개발되기 시작하였던 1991년 선 마이크로 시스템에서 개발을 시작하였습니다.
개발자인 James Gosling은 그 당시 단순하고 버그가 없는 가전 전자 제품을 만드는 것을 목적으로 일에 착수하였는데, 이를 위해 플랫폼에 독립적인 코드를 작성하여 모든 CPU에 맞도록 컴파일 되어야 하고, 서로 다른 장치를 연결하는 분산 네트웍에 적당한 언어를 개발해야 했습니다. 다시 말해서, Gosling은 특정한 컴퓨터 칩에 대해 컴파일해야 하는 C언어의 문제점, 또 가전 제품과 전기기기들을 통합하여 가정 환경에 새로운 인터페이스를 제공하는 새로운 프로그래밍 언어의 개발에 착수하였던 것입니다.
World Wide Web이 인터넷 서비스 부분에서 각광을 받기 시작하던 1993년 Gosling은 Java를 World Wide Web에 적용할 것을 결정하였습니다. 그는 PC, 맥, 유닉스와 같은 다양한 컴퓨터를 연결하고 있는 Web에는 플랫폼에 독립된 Java와 같은 언어가 이상적이라고 생각하였습니다. 그리하여 Java 언어를 이용하여 HotJava Web Browser을 개발하였습니다.
1995년 초에 HotJava와 Java, 그리고 Java의 문서와 소스 코드가 알파 버전으로 Web에 공개 되었습니다. 초기의 Java는 SPARC 솔라리스 상에서 동작하도록 되었고, 곧이어 Windows NT, 그 해 여름엔 Windows95와 Linux에 이식되었습니다. 그 해 가을에 베타 1이 썬사의 Web 사이트에 발표 되었고 Netscape 2.0에서 Java를 지원하기로 결정되었습니다. Java의 베타 1은 많은 업체들로 하여금 Java 기술을 라이센스하도록 하였고 대부분의 운영체제에서 Java의 이식이 시작되었습니다.
1995년 12월에 Java 베타 2가 발표되었고 썬사와 넷스케이프사에 의해 JavaScript가 발표 되었습니다. 12월 초에 마이크로스프트와 IBM이 Java 기술을 라이센스할 뜻을 밝혔습니다. 1996년 1월 23일 Java 1.0이 공식적으로 발표되고 인터넷을 통해 다운로드 받을 수 있도록 되었고, 이 때 JavaScript도 함께 발표되었습니다. Netscape 2.0은 Java와 JavaScript를 모두 지원합니다.
2. Java 의 종류
2.1 Java Application
일반적인 응용 프로그램으로 Browser 없이 독립적으로 실행될 수 있는 프로그램입니다. Applet과 달리 하나의 main() 부분을 가지고 있습니다.
2.2 Java Applet
Java를 지원하는 Web Browser에 의해서만 실행됩니다. 즉, World Wide Web에서 Browser을 통해 실행할 수 있는 프로그램입니다. Applet은 HTML 문서 내에 포함되어 사용되는Java 프로그램을 가리킵니다.
2.3 Java Script
Java 언어와는 별도로, 선 마이크로시스템과 Java Script License를 결합하여 이름을 Java Script 라고 하였습니다.
2.4 HotJava
선 마이크로시스템즈에서 만든 최초의 Java Applet 지원 Browser입니다.
3. Java에 사용되는 개념
3.1 객체
데이터와 그 데이터를 가공하는 함수를 한데 뭉친 것을 말합니다. 즉 가운데 데이터들을 가지고 있고,주변에는 데이터를 가공하는 Method들로 외부로 들어오는 호출을 모조리 막고(Encapsulation) 있음으로써 프로그램이 서로 연관되는 데이터와 함수들끼리 모을 수 있고, 서로간에 데이터를 바로 접근을 못하기 때문에 프로그램을 고치기가 용이합니다.
3.2 클래스
객체 지향 설계는 객체의 생성을 위한 용기로서 클래스 개념을 사용합니다. 이것은 어떤 사물의 특징 목록으로 생각될 수 있습니다. 즉, 데이터 선언이 있고 그 데이터를 처리해 주는 Method들로 둘러싸인 아직 실제로 존재하지 않는 구조를 말합니다.
3.3 상속
이미 있던 객체의 클래스에 다른 특성을 덧붙이거나 바꾸어서 만들면 금방 여러 개를 만들 수 있는 것을 말합니다.
3.4 Message
객체 지향 언어에서는 함수 호출을 Message라고 부릅니다. 즉, 한 객체가 다른 객체의 Method을 부르는 과정을 한 객체에서 다른 객체의 Method에게 Message을 보낸다고 말합니다.
3.5 Multi Thread
Multi Thread라는 것은 하나의 프로그램 안에서 여러 작업을 동시에 처리할 수 있는 기능을 가리킵니다. 보통의 프로그램들은 한번에 하나의 작업밖에 수행할 수 없기 때문에 사용자는 수행시킨 작업이 끝날 때까지 기다려야만 한다. 그렇지만 Multi Thread이 도입됨으로써 사용자는 전혀 기다릴 필요가 없어집니다. 한 Thread를 수행시킨 작업을 백그라운드로 계속해서 실행시키는 동안 다른 Thread가 사용자의 요구를 받을 수 있기 때문입니다.
3.6 Garbage Collection
Java 언어와 실행 체계의 내부에 존재하는 부분입니다. 한번 할당된 객체를 가지면, 실행 체계는 객체의 상태의 정보를 계속 추적하고, 객체가 더 이상 쓰이지 않거나, 메모리에서 해제되면 자동적으로 메모리를 개선합니다. Java 언어가 객체를 할당하기 위해 new연산자를 가지고 있지만, 명백한 Free함수는 없습니다.
Java 언어의 메모리 할당 모델과 자동적인 Garbage 수집은 프로그래밍 과제를 쉽게 하고, 전반적 으로 버그가 있는 클래스를 제거하며, 일반적으로 명백한 메모리 관리를 통해 얻었던 것보다 높은 수행력을 제공합니다.
3.7 패키지
관련된 클래스들의 그룹입니다. 즉, 단일한 Container안에 관계된 클래스들의 집합을 모아둔 자바 언어의 구조입니다.
3.8 인터페이스
인터페이스는 실제 정의 없이 선언만 되어 있는 Method들의 집합입니다. 인터페이스가 나오게 된 것은 Java에서 다중 상속이 허용되지 않기 때문이었습니다. 인터페이스는 여러 개의 클래스로부터 상속을 받아야 하는 경우에 사용할 수 있는 방법입니다.
클래스의 경우에는 각 Method의 정의를 반드시 해야 하고, 인터페이스에서 Method은 오직 선언만 되어야 합니다. 또한 클래스의 변수는 값이 대입됨으로써 변할 수 있지만, 인터페이스의 변수는 상수처럼 값이 바뀔 수 없습니다.
3.9 예외와 예외 처리
Java에서 에러가 Method 안에서 발생하면, Method은 예외 객체를 생성하고 생성된 예외 객체를 런타임 시스템에 넘겨 주게 됩니다. 그리고, 예외 객체는 발생한 예외의 종류와 에러가 발생한 프로그램의 상태에 대한 정보를 가집니다.
프로그램에서 발생할 수 있는 여러 가지 에러들에 대해 적절히 대비를 취하는 것을 가리킵니다. 예외 처리는 구조적 측면에서 에러에 대처할 수 있는 방법이 제공하는 것입니다.
3.10 디버깅
4. Java 특성
Java는 C나 C++와 같은 컴퓨터 프로그래밍 언어입니다. 즉, 일종의 응용 프로그램을 작성하는 도구인데, 기존의 프로그래밍 언어로 작성한 응용 프로그램과는 그 사용법과 수행 환경에 많은 차이가 납니다. Java는 인터넷을 환경으로 프로그램을 만들고 수행시킬 수 있는 응용 프로그램을 만드는 언어입니다. 물론 기존 프로그램 언어의 특성도 모두 가지고 있습니다.
4.1 간단하다
C++에 가깝지만 훨씬 간단합니다. 고급 언어들에 들어 있는 여러 가지 요소들 중에서 반드시 필요하지 않은 부분은 모두 빠져 있기 때문입니다.
4.2 객체 지향적
프로그램을 기술할 때, 단계보다는 데이터(객체 Objcet)와 데이터를 가공하는 함수들 (Method Method)에 초점을 맞춘 언어입니다. Java는 Object 클래스에서 모든 클래스를 파생합니다.
4.3 견고성
컴파일 할 때, 유형 검사를 하여 에러를 막을 뿐만 아니라 도구들까지 명확한 유형 선언을 하도록 합니다. 포인터 연산을 지원하지 않음으로써 잘못된 주소를 가르킬 가능성을 없앴습니다. 모든 메모리 접근을 Java 시스템이 관리하고 제한하며 또한 예외 처리를 하여 시스템 붕괴의 우려가 없습니다. 포인터 모델을 가지므로 메모리를 덮어 쓰거나 데이터를 망가뜨리는 가능성을 제거했습니다.
4.4 안전성
네트웍 환경에서 운영되는 언어임으로 다른 언어보다 안전성에 대한 중요성이 요구됩니다. 따라서 Java 코드는 바이러스, 파일의 삭제나 수정, 데이타 파괴 작업이나 컴퓨터 오류 연산 등을 방지할 수 있는 환경에서 실행되도록 설계되었습니다.
4.5 보안성
Java는 네트웍 환경이나 분산 환경에서 사용하기 위해서 만들어 졌습니다. virus-free 혹은 tamper-free 시스템들의 구축을 가능케 합니다. 인증 기술들(Authentication Techniques)은 공중키(Public Key) 암호화에 기반을 두고 있습니다.
4.6 분산 환경에 알맞은 네트워크 언어
HTTP(Hypertext transfer protocol)등과 같은 TCP/IP 네트워크 환경에서 동작하는 많은 프로토콜을 지원하는 라이브러리를 가지고 있습니다.
4.7 Multi Thread 지원
4.8 동적성
Java는 런타임 시까지 링크 과정을 연기함으로써 응용들이 동적으로 패치될 수 있도록 합니다.
4.9 인터프리터 방식
컴파일 언어인 동시에 인터프리터 언어입니다. 먼저 텍스트 소스를 컴파일하여 2진(클래스) 파일로 만든 다음 Java 런타임이 클래스 파일을 인터프리트하면서 실행합니다.
4.10 기계 중립적
Web의 서버-클라이언트 환경에서 이기종 서버-클라이언트의 지원은 매우 중요한 문제입니다. 일반적으로 네트웍은 다양한 CPU와 OS를 가진 시스템들로 구성되어 있습니다. Java 응용 프로그램이 네트웍상의 어디에서든지 수행이 되기 위해서는 컴파일러가 기계 구조에 중립적인 오브젝트 파일 포맷을 생성해야 합니다. 그러므로, 실행 파일이 기계 중립적인 이진 코드입니다. 이 클래스 파일을 기계 종속적인 Java 런타임이 인터프리트하여 실행시키게 됩니다.
4.11 이식성(Portable)
유형 정의를 시스템에 무관하게 정의하고 있습니다. 네트웍을 통해 프로그램을 다운받아 하드웨어 에 관계없이 사용하기 위해서는 근본적으로 아키텍처에 독립적이고 이식성을 보장하는 구조가 요구됩니다. Java는 이러한 문제를 해결하게 위해 하드웨어 아키텍쳐, 운영체제 인터페이스, 윈도우 시스템에 독립적인 바이트 코드를 사용합니다.
Java 프로그램은 Windows95/NT, Solaris2.x, Mac OS7.5와 같은 Java가 지원되는 모든 플랫폼상에서 Java 컴파일러에 의해 바이트 코드 형태로 컴파일되고, 인터프리터가 동작하는 Java 가상 기계에 의해 어떤 기종의 시스템에서도 쉽게 해석됩니다.
5. Java의 전망
Java는 현재 인터넷상의 차세대 객체 지향 언어로서 사실상 인터넷 국제 표준 언어의 역할을 한다고 해도 과언이 아닙니다. WWW Browser의 75% 이상을 점유하고 있는 Netscape에서 Java를 사용하고 있으며, 마이크로소프트사도 자사의 인터넷 표준으로 Java를 채택하고 있습니다. 또한 최근에는 실리콘 그래픽스와 선 마이크로 시스템즈는 차세대 가상 현실 모델링 언어인 VRML (Virtual Relality Modeling Lanugage)를 Java에서 포함할 수 있도록 계약을 체결하였습니다. 이 밖에 IBM, SGI, Toshiba, Oracle, Boland, Adobe, Macromedia, Spyglass등도 Java 라이센스를 계약하여 자사 제품에 Java를 지원한 새로운 제품을 현재 개발 중이며, 자바 스크립트 역시, 약 25개의 회사들이 공동으로 계약을 체결한 바 있습니다.
Java는 WWW으로 성공적인 출발을 장식했습니다. Java는 정보 창고인 인터넷의 활용 범위를 넓힐 수 있는 가이드라인을 제시했으며, 컴퓨터 벤더와 사용자 모두에게 상호 운용성의 문제에 대한 해결책을 제시하였습니다. 소프트웨어 측면에서도 Java가 있는 Web은 플러그-인 기능을 이용한 차세대 통합 응용 환경을 창출했으며, 이를 통해 인터넷은 더욱 더 확장 발전될 것으로 보입니다.
Java 이전의 정보망 관점에서 보면, 현재 대부분의 정보 서비스 모델인 클라이언트-서버 모델은 사용자의 증가에 따라 보다 복잡한 메스 형태의 구조를 가지게 되고 이에 대한 Application과 서비스의 원활한 제공이 커다란 문제점으로 안고 있었습니다. 결국 또한 Java로 인해 변화된 인터넷은 이러한 문제들의 모든 해결책을 제시합니다. 사용자는 자신의 시스템에 HotJava와 같은 하나의 프로그램만을 인스톨하며, 새로운 Application을 인스톨하거나, 그 페이지에 내장된 Applet과는 무관하게 브라우징을 통해서 새로운 서비스를 제공받을 수 있습니다. 서비스 제공자 입장에서는 WWW서버 내에 Applet을 포함시킴으로써 일반 클라이언트의 기종에 관여할 필요가 없으며, 업그레이드도 용이합니다. 이것은 데이터뿐만 아니라 코드를 함께 다운 로드 받음으로써 가능해 집니다. 이처럼 Java를 이용한 컴퓨터 세상은 궁극적인 네트웍 플랫폼으로 인터넷을 선택하게 되며, 컴퓨터 산업 전반에 걸쳐 새로운 기술 혁신을 가져오게 될 것으로 기대됩니다.
6. Java의 활용분야
6.1 금융, 사무 자동화, 인트라넷 분야
금융, 사무 자동화와 같은 실시간 환경, 웍플로우 기능이 요구되는 환경에서 Java의 위력은 유감없이 발휘됩니다. 온라인 은행 업무, 라이브 데이타 교화, 보안 무역(거래), 실시간 문서 관리, 사무 자동화 등에 적용될 수 있습니다. 최근에 인터넷과 데이타베이스, 사무용 기업환경이 결합한 인트라넷의 주요 기술로 Java를 빼 놓을 수 없는 것도 이 같은 Java의 특징을 반영하는 일례라고 하겠습니다.
6.2 오락, 게임 분야
Java의 특징 중 하나는 Web 상에서 여러 사용자가 인터렉티브한 게임을 할 수 있다는 점입니다. 다중 사용자 게임을 비롯해 컴퓨터 시뮬레이션에 이르기까지 그 활용 범위는 무궁무진합니다.
6.3 홈쇼핑, 광고 분야
Java의 애니메이션 기능은 기존 Web을 이용한 광고, 홈쇼핑 등에 적용되어 크게 각광받을 수 있는 적용 분야입니다. 인터렉티브 쇼핑, 라이브 경매, 상호 작용 3D, 오디오/비디오 광고 등이 가능합니다.
6.4 MIS 분야
Java 환경은 MIS분야에 적용되어 군사 응용 프로그램, 네트웍 데이타베이스 액세스 프로그램에 활용될 수 있습니다.
6.5 교육 분야
Java의 활용 분야는 가장 가깝게는 교육 분야에서 볼 수 있으며, 이를 통해 원격 교육, 세미나, 실시간 공동 작업등이 가능합니다.
'[기타 정보자료] > 컴퓨터관련' 카테고리의 다른 글
컴퓨터 바이러스란 (0) | 2012.04.24 |
---|---|
최근 바이러스의 특징 (0) | 2012.04.24 |
정보보안전문가 (0) | 2012.04.24 |
[정보보안전문가] 정보보안의 기본 용어 정리 (0) | 2012.04.24 |
[정보보안] 침입차단 시스템 (0) | 2012.04.24 |