일반 자바설화

황제낙엽 2003.05.03 07:10 조회 수 : 395 추천:182

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  
이제서야 탄생배경을 적는 이유는???                     왠지 지금이라도 그래야 할거 같아서...


1989년 CERN의 팀 버너스리에 의해 처음 제안된 WWW(World Wide Web)은 1990년 말에 최초의 구현 시스템을 선보이면서 그 놀라운 역사의 첫 페이지를 펼쳤다. 그후 1993년 6월 NCSA에서 최초의 WWW브라우저인 모자이크를 개발하면서 WWW대중화에 바람을 일으켰고,1994년 5월 마크 안드레센(Marc Andreessen)과 짐 클라크(Jim Clark)가 세운 네트스케이프사의 네트스케이프란 이름의 네비게이터는 WWW가 하나의 인터넷 도구로서가 아니라, 인터넷을 이용한 모든 사용자 환경을 대변하게끔 되었다. 그로부터 1년 뒤인 1995년 5월, 인터넷은 물론 소프트웨어와 컴퓨터 산업전체를 뒤흔들어 놓을 '자바'라는 언어가 발표된다. WWW와 모자이크가 처음 세상에 소개될 당시, 어느 누구도 컴퓨터 전반에 미칠 이같은 영향을 예측하지 못했던 반면 자바의 등장은 처음부터 기대와 희망, 그리고 마이크로소프트(MS)와 같은 파트너들의 경쟁과 경계 속에 커다란 기술 혁신의 회오리를 예고했다.

WWW에 있어 자바의 등장은 핫자바(최초의 자바 브라우저 : 자바 1.0알파 버전으로 만들어짐, 자바 applet 1.0 알파버전만 실행가능)를 통해 그 가능성을 인정받았으며, 현재 자바 언어 개발 면에서도 초기의 1.0알파 3버전의 개발에 이어 SGML과의 호환을 위해 JDK(Java Developers Kit)베타 버전으로 개발 방향이 선회되어 네트스케이프 네비게이터 2.0( 자바 applet 1.0 베타버전만 실행가능)과 같은 자바 가능브라우져들이 계속 늘어나고 있다.

이처럼 자바가 WWW을 통해 그 중요성을 인정받는 이유는 간단하다. 웹에서의 표현은 HTML내 에 삽입되는 간단한 자바 프로그래밍 애플릿을 통하여 자바 이전의 웹이 한 권의 그림책을 읽는 듯한 이미지와 텍스트의 정적인 브라우저 기능을 제공한다면, 애플릿 사용으로 자바는 브라우저를 상호동작 게임이 가능한 동적인 브라우저로 만들어 준다.

특히 네트스케이프 2.0은 자바를 지원함으로써 새로운 인터넷 환경의 가능성을 만들어 가고 있으며, 자바스크립트(Java Script)와 같은 자바 응용 기술의 개발이 계속적으로 이어질 예정이다.

무궁무진한 자바의 잠재력이 인터넷 국제어로서의 역할을 하게 될 것이다.

자바의 내부 이야기

애니메이션, 상호작용 등이 취약한 WWW의 정적인 문제를 자바는 이미 1995년 이전에 해결책을 가지고 있었다.

사실 자바 프로젝트는 1990년 제임스 고슬링에 의해 실시간 환경을 지원하는 단순한 객체지향 분산 시스템의 구축을 목적으로 그 개발이 시작되어 1991년 'Conumer Electronics', 1993년 'Interactive TV(상호작용 TV)'에 적용되었다.

웹이 이처럼 폭발적인 인기를 끌기 이전, 가전제품에 대한 상호운용성의 확보는 소비자 측면에서 자바를 적용할 수 있는 좋은 환경으로 인식되어 있었다. 사실 상호작용 TV의 경우 좀 더 빨리 그 시장이 성숙됐더라면 웹보다 먼저 자바의 가능성이 발견되었을 것이다. 하지만 그때 당시의 인터렉티브TV의 개념은 소비자의 충족욕구를 너무나 앞선 기술이었다. 때문에 자바언어의 첫 등장은 실패로 시작되었다고 볼 수 있다.

결국 초기에 자바를 주로 가전제품에 사용하려던 생각은 인터넷의 폭발적인 인기에 대응해 95년도 들어서면서 인터넷용 언어로 초점을 전향하게 되었다.

언어에 대한 연구도 초기에는 C++컴파일러의 확장을 목적으로 하였으나, 결과적으로 C++로는 충분하지 않는 특징들 -분산환경, 이종간의 네트워크 등 -을 수용하기 위해 보다 다른 차원의 언어를 요구했다.

이렇게 4년이 넘는 연구를 통해 개발된 자바는 웹이 적용되기 전까지 호칭에 있어서도 많은 난제가 있었다.

초기의 프로젝트는 'Green Project','*7'팀 등으로 구성되어 개발된 언어를 'Oak'라고 불렀으나, 대부분의 프로그래머가 좋아하고, 이 언어의 특징을 잘 표현할 수 있는 향기로운(?) 자바로 이 언어의 이름을 결정했다.

자바와 WWW

1994년 중반,WWW이 인터넷 시장을 통해 폭발적인 성장을 거듭하면서 고슬링은 자바의 적용환경으로 결정했다. 자바의 적용환경으로 WWW을 결정했다.

자바의 사용으로 WWW은 웹 페이지 내에서 단순히 폼을 작성하거나 텍스트를 읽는 대신, 인라인 사운드 애니메이션(문서를 네비게이터에 로드함과 동시에 사운드를 들을 수있고 애니메이션을 볼 수 있다.),사용자간의 상호작용이 가능해지며, 게임을 즐기거나 스프레드시트등도 계산할 수 있게 된다.

이제부터는 필요로 하는 이미지 포맷이나 새로운 프로토콜을 웹상에서 지원하기 위해 이를 지원하는 브라우저가 개발되기까지 기다릴 필요가 없다. 자바를 이용하면 그 데이터를 포함한 내용을 보기 위해 자바 코드(새로운 데이터 포맷의 브라우징을 위한)와 데이터를 동시에 브라우저에 전송하면 된다.

예를 들면, 웹상에서 EPS파일을 보기 원한다면 EPS파일을 브라우징할 수 있는 코드를 작성하여 EPS파일을 포함한 페이지를 요청하는 클라이언트에게 그 파일과 코드를 같이 전송하면 된다.

또한 새로운 프로토콜이 확장도 가능하다. 예를 들어, 메인프레임 시스템(HTTP 프로토콜 동작하지 않는)에 저장된 전자 카드 카탈로그를 검색하고자 할 때는 이전까지는 카드 카탈로그 프로토콜을 지원하는 브라우저가 개발되기를 무작정 기다리거나, CGI프로그램과 같은 게이트웨이(서버에서 실행되면서 클라이언트에게 지원해주는 프로그램)를 별도로 구현해야 했으나, 자바를 이용하면 클라이언트가 카드 카탈로그 요청 시에 이를 위한 프로토콜 코드를 동시에 보내 주면 된다.

앞으로 자바를 이용하면 최근 발표된 새로운 버전의 브라우저(인터넷 익스플로러 2.0과 네트스케이프2.0)에서 지원하는 나 태그보다 더욱 놀라운 기능이 계속 추가될 것이다. 또한 아키텍처에 무관한 자바의 특징으로 인해 지금의 윈도우 95/NT,솔라리스2.x플랫폼뿐만 아니라, 맥OS,윈도우 3.1,그리고 대부분의 유닉스 운영체제에서도 지원하게 될 것이다.

현재는 java는 sunOs 3.1, HPUX, IRIX, LINUX, 윈도우 95/NT(인텔 x86), 솔라리스 2.x(스팍) 플랫폼에서 지원된다. 앞으로 지원될 플랫폼으로는 매킨토시(맥OS 7.5)버전이 96년 초에 발표될 예정이며, 아미가, 넥스트, 윈도우 3.1버전용으로 개발중이다.

자바와 C++

자바는 선마이크로 시스템즈에서 만든 프로그래밍언어로,C++의 후손이라고도 할 수 있다.

90년대 초 가전제품에 들어갈 프로그램을 C++로 작성했으나 적합하지 않다는 것을 알고, 이를 기반으로 새로운 객체지향 언어를 만든 것이 바로 자바이다.

따라서 초기목표는 가전제품, 인터렉티브TV(상호작용 TV)에 내장(Embedded)되는 시스템에 사용하는 프로그램을 만드는 것이었다. 이것이 인터넷으로 초점이 맞춰져 지금과 같은 모습을 갖게 되었다. 따라서 간단하고 플랫폼 독립적이며, 안정성, 견고성, 향상된 성능 등을 제공해야 한다는 전제를 만족시킨다.

자바는 C++에서 출발한 만큼 언어적 특성이나 구문이 C++와 유사하다. 하지만 이런 특성을 만족시키기 위해 C/C++에서 사용하는 포인터 연산을 제외시켰고 스트럭트나 타입정의 등의 기능이 없다. 그리고 메모리 사용에 있어 프리 메모리를 할 필요가 없고, 자동으로 garbage collection이 수행되며, 선점형 멀티태스킹(멀티쓰레딩)이 지원된다는 점이 특징이자 장점이다.

자바 애플릿

현재 웹에서 자바를 사용하는 대부분의 방법은 애플릿을 작성하는 것이다. 애플릿이란 HTML문서 내에 포함될 수 있는 자바 프로그램을 가리킨다. 웹을 통해 보여지는 인라인 사운드, 애니메이션, 상호동작게임 등은 모두 애플릿을 이용한 것이다.

자바 애플릿은 API(Application Programmming Interface)를 이용하여 작성한다. 현재 애플릿은 JDK베타 버전으로 개발이 계속되고 있으며, 알파버전은 개발이 중지되었다. 대신 JDK베타버전 속에 알파 애플릿을 베타 애플릿으로 변환하는 업그레이드 유틸리티가 포함되어 있으며 API로 java.lang, java.util, java.io, java.net, java.awt, java.awt.peer, java.awt.image, java.applet를 제공한다. 별도의 에디터는 제공하지 않고 있다.

베타 API에 의해 자바 소스프로그램이 완성되면, 작성된 자바 소스파일은 java라는 확장자로 저장시킨 후, 자바 컴파일러( javac )에 의해 컴파일 시키면 class라는 확장자를 가진 바이트코드가 만들어진다.

이제 브라우저 상에서 애플릿을 사용하기 위해 HTML문서 내에서 APPLET태그 구문에 맞추어 위에서처럼 만들어진 바이트코드(*.class)를 포함시키는 HTML을 작성하면 된다.

이처럼 HTML내에 실행코드가 아닌 중간코드를 삽입하는 이유는 HTML문서를 방문할 때 네비게이터 안의 java 인터프리터는 바이트코드 실행 시에 각각의 시스템에 네이티브(native)한 기계어로 변환하여 실행함으로써 다양한 이기종 시스템이 혼재하고 있는 환경(Internet 과 같은)에서 실행될 수 있도록 하기 위해서이다.

자바는 사실 프로그래밍 언어이기 때문에 웹에 상관없이 실행될 수 있는데, 이런 종류의 스탠드-어론(Stand-alone)프로그램을 애플리케이션(Application)이라 하고, 네비게이터에서 수행되어지게끔 만들어진 코드를 애플릿(Applet)이라고 부른다.

애플리케이션(Application)을 만드는 방법은 애플릿(Applet)만들 때와 같으며 java 라는 확장자를 가진 소스코드를 작성한 후, 애플릿 만들 때 javac로 컴파일시켜 class라는 확장자를 가진 인터프리터가 실행시킬 수 있는 중간코드(기종의존성이 없는 바이트코드)를 단지 java라는 인터프리터로 직접 실행시킨다는 점이 다르다.

최초의 브라우저인 핫자바

핫자바는 자바 언어를 사용하는 최초의 웹 브라우저라는 기념비적인 의미를 지닌다. 자바애플릿(알파 애플릿만을 지원)을 웹 브라우저에서 표현할 수 있다는 것 외에도, 자바의 특징인 프로토콜의 동적인 결합, 새로운 데이터 타입의 확장이 가능한 브라우저로서 소프트웨어 산업의 자바로 인한 기술혁신을 예고하는 실증적인 좋은 예로 손꼽히고 있다.

자바스크립트

네스케이프사는 Natvigator 2.0 버전에 자바를 추가할 때 자바와 HTML 사이에 존재하며 두 기술을 이어줄 수 있는 시스템이 필요하다는 것을 느끼고 두 개의 기술을 이어주는 강력하고 새로운 스크립트 언어를 개발했다. 처음에는 LiveScript 라는 이름으로 발표되었으나 Sun과 Netscape 사는 팀을 구성하여 LiveScript가 웹 기반의 표준 스크립트가 되도록 구문을 자바와 유사하게 바꾸고 이름도 JavaScript라고 바꾸었다. Netscape2.0에서 지원하는 JavaScript는 1.0 버전이고 이를 개선하고 약속되었던 자바와의 연계를 지원하는 JavaScript 1.1 버전을 Netscape 3.0 버전부터 지원하기 시작했다. 또 마이크로소프트사는 Internet Explorer 3.0 버전부터 JavaScript 1.0을 지원하고 있다.
정리하자면 JavaScript는 쉽고 개방적이며 HTML과 자바 사이의 객체와 자원을 이어주는 독립적인 스크립트 언어이다. 자바 언어가 주로 프로그래머들이 애플릿을 만들기 위해 사용되는 반면 자바스크립트는 CGI 프로그래머나 HTML 작성자들이 웹 페이지 간의 상호 작용과 폼의 제어를 위해 사용될 수 있고 자바 프로그래머를 위해 자바와 HTML이 상호 보완적으로 통합되도록 디자인되어 있다."
번호 제목 글쓴이 날짜 조회 수
23 Polymorphism과 Method Overriding에 대한 이야기 황제낙엽 2003.05.15 330
22 자바의 특징 황제낙엽 2003.05.06 450
21 JVM (Java Virtual Machine)에 대한 몇가지 설명 황제낙엽 2003.05.06 210
» 자바설화 황제낙엽 2003.05.03 395
19 XML기반 정보 보호 기술의 대두 황제낙엽 2003.04.22 265
18 인터넷을 통한 자바 기술의 변화 황제낙엽 2003.04.07 493
17 JAVA관련 용어와 기술 황제낙엽 2003.04.05 458
16 UTF-8을 위한 문자열 인코딩처리 관련 황제낙엽 2006.10.06 881
15 Code Conventions for JavaTM Programing Language file 황제낙엽 2006.10.23 518
14 자바에서 UTF-8 개발에 관한 정리 (2) 황제낙엽 2006.10.06 543
13 자바에서 UTF-8 개발에 관한 정리 (1) 황제낙엽 2006.10.06 539
12 일본어 전각 반각 변환 예제 소스 .두번째 [1] file 황제낙엽 2007.01.11 569
11 일본어 전각 반각 변환 예제 소스 .첫번째 file 황제낙엽 2007.01.10 3371
10 환경파일 로드 클래스 구성 (XML파싱) 황제낙엽 2007.01.05 437
9 HttpURLConnection을 사용하여 웹 페이지 액세스하기 (두번째) 황제낙엽 2007.01.05 593
8 자바의 I/O 예제 [1] file 황제낙엽 2006.12.28 346
7 HttpURLConnection 클래스를 이용한 Search 황제낙엽 2006.12.28 670
6 HttpURLConnection을 사용하여 웹 페이지 액세스하기 (첫번째) 황제낙엽 2006.12.28 522
5 Servlet으로 구현한 파일 다운로드(download) 페이지 황제낙엽 2006.12.27 455
4 JSP로 구현한 파일 다운로드(download) 페이지 황제낙엽 2006.12.27 2583