sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
sitelink6 |
읽기전에...
인터넷이 없었다면 자바가 발전할 수 없었다.
분명한것은 자바는 C보다는 느리다. 윈도우에 최적화된 VC++보다 느리다.
하지만 자바가 발전할 수 있었던 것은 인터넷과 PC하드웨어의 비약적인 발전 때문이었다.
그래서 자바는 인터넷과 함께 발전한다. 운영체제가 바뀌어도 자바는 인터넷과 발전할 것이다.
근래에는 너도나도 인터넷을 접하고 또한 관련 서적을 통해 웹이나 html이라는 것을 쉽게 접할 수 있지만 정작 그러한 것이 어떤 이유로 또 어떻게 진화되어 왔는지에 대해서는 알 수 있는 기회가 많지 않다. 왜냐하면 일부러 찾지 않는 한 최신기술을 집필한 서적에서 기술의 히스토리까지 알려 줄 필요는 없기 때문이다. 게다가 대부분의 사람들이 정보라는 분야에 있어서 중요시하는 것은 최신의 기술 자체만 추구하는 경향이 있다. 하지만 그것은 IT라는 분야에서 나무만 자체만 보게 될 뿐 숲은 볼 수 없게 되는 원인이 되기도 한다.
따라서 최신의 기술을 익히는 것도 중요하지만 여유가 된다면 그러한 기술이 탄생한 배경도 같이 이해한다면 기술을 습득하는데 에 더 유연하고 탄력적으로 그리고 필연성을 가지고 빠르게 습득해 가리라 생각한다.
그리고 더 나아가 최신의 기술보다 더 앞서가는 기술을 내다볼 줄 아는 견목 또한 넓힐 수 있을 거라 생각한다.
다음에 서술하는 내용은 어느 웹관련 서적에서 인용한 것으로 책의 저작권에 침해가 될지는 모르겠으나, 솔직히 책의 내용에서 아주 중요하다고 판단되지는 않고 또 개인적으로는 웹의 히스토리를 이해하는데 어느 정도 도움이 될 것이라 판단하여 이곳에 옮겨보았다.
1. 애플리케이션
사람들은 자신들이 하는 작업을 보다 쉽고 빠르게 하기 위해 컴퓨터라는 기계를 만들게 되었고 이러한 기계에서 작업할 수 있도록 하기 위해 프로그램을 작성하였다.
이러한 프로그램을 애플리케이션이라 한다. 다시 말해서 애플리케이션이란 여러분이 앉아 있는 컴퓨터에서 직접 실행할 수 있도록 작성한 프로그램을 의미한다. 자바는 이러한 애플리케이션을 작성하는 언어의 일종이다.
애플리케이션은 현재 앉아 있는 컴퓨터에서 바로 실행되는 프로그램이다. 이러한 애플리케이션을 텍스트 환경에서 사용하려다 보니 사용자가 입/출력을 하기가 불편하고 직관적이지 못하였다. 이러한 문자 기반의 인터페이스를 CUI(Character User Interface)라 한다.
사용자들은 좀 더 보기 좋은 그림 형태의, 다시 말해서 그래픽 형태의 화면을 원하게 되었고 이를 위해 자바에서는 AWT(Abstract Window Toolkit)가 나타나게 되었다. AWT는 컴퓨터와 사용자간에 GUI(Graphic User Interface)기반의 사용자 인터페이스를 제공해 줌으로써 CUI기반의 사용자 인터페이스보다 훨씬 직관적이고 알아보기 쉽게 되었다.
그러나 AWT는 단순한 형태의 GUI를 제공함으로써 사용자들은 빨리 싫증을 느꼈고 좀 더 예쁜 형태의 그래픽과 디자인을 원하게 되었다. 또한 프로그램이 발달하면서 좀 더 복잡한 형태의 데이터들을 표현할 수 있는 컴포넌트들이 필요하게 되었다. 따라서 이러한 사람들의 욕구를 만족시키기 위해 자바에서는 JFC/SWING을 제공하게 되었다. 보다 복잡한 형태의 그래픽 사용자 인터페이스를 제공함으로써, 사용자는 보다 편안하고 보기 좋은 환경에서 직관적으로 작업할 수 있게 되었다.
2. HTTP프로토콜 기반의 단순 HTML 웹서비스
애플리케이션을 사용하여 많은 작업을 하게 되었고, 대부분의 작업은 인간을 편안하게 하기 위해 컴퓨터가 대신하게 되었다. 그러나 여러분이 도서관에서 제공해 주는 도서 목록이나 현재 상영하는 영화의 목록을 알고자 한다면 어떻게 해야 하나? 지금 같으면 웹에서 가능하지만 , 웹이 나타나기 전에는 도서관에 가서 직접 프로그램을 실행시켜서 도서 목록을 볼 수 있었고, 영화관에 직접 가서 거기에 있는 컴퓨터에서 영화 리스트를 보여주는 애플리케이션을 실행시켜서 볼 수가 있다.
네트워크는 사람들이 직접 도서관에 찾아가지 않고도 도서목록을 열람할 수 있게 해줌으로써 이러한 불편함을 해결해준다.
처음에는 네트워크로 도서관에 있는 서버를 연결해서 도서 목록을 텍스트로 보았지만 텍스트는 한 눈에 알아보기 힘들고, 키보드를 입력하여 도서 목록에서 자신이 원하는 도서를 찾는다는 것이 힘들었다. 따라서 사용자들은 도서 목록을 좀 더 알아보기 쉽고 직감적으로 보고 찾기를 원하게 되었고, 이러한 사람들의 욕심에 의해 네트워크로 컴퓨터들을 연결하고, 도서 목록을 보다 쉽고 직감적으로 보기 위해 HTML을 만들게 되었다.
3. 자바 스크립트/애플릿과 네트워킹
단순하게 HTML문서를 보는 것만으로도 처음에는 재미있고 신기한 일이었다. 그러나 이러한 환경에 익숙해지다 보니 사용자들은 매번 같은 HTML문서에 싫증을 내기 시작했다. 링크와 그림만 있는 페이지에서 재밌는 이벤트를 기대하기는 힘들었다. 사용자는 HTML페이지 상에서 채팅과 같은 인터렉티브한 작업을 하고 싶어했고 또 특정한 이벤트에 반응하는 스크립트언어에 관심을 가지기 시작했다.
이러한 사용자의 욕심을 만족시키기 위해 HTML페이지를 보면서 웹 브라우저에서 게임을 할 수 있도록 해 주고, HTML페이지 상에서 뭔가 사용자의 작업을 할 수 있도록 자바 애플릿이 나왔다. 웹 서버를 관리하는 쪽에서 사용자들이 할 수 있는 게임을 자바를 이용하여 개발하여 해당 HTML페이지를 요청하면 그 페이지 내에서 게임을 할 수 있도록 하는 것이다.
이렇게 하여 사용자들은 단순하고 정적인 HTML페이지만을 보다가 자바 스크립트/애플릿이라는 것을 이용하여 좀더 다채로운 HTML페이지를 접할 수 있게 되었다. 그러나 불행히도 사용자의 욕심은 여기서 끝나지 않았다. 혼자서 게임을 한다는 것은 지루하고 매번 같은 방식으로 진행되기 때문에 사용자들은 쉽게 싫증을 느끼게 된다.
다른 사람들과 게임을 함께 하기를 원하게 되고, 이를 위해 웹 서버에 게임을 중재할 수 있는 프로그램 즉, 애플리케이션을 실행해야 하고 게임 서버 애플리케이션 프로그램과 자바 애플릿은 네트워킹을 통해 게임 관련 데이터를 주고받으면서 다른 사람들과 네트워크 게임을 할 수 있게 되었다.
4. CGI (Common Gateway Interface)프로그래밍과 자바 서블릿
이제 사용자는 자신의 발자취를 서버에 남기고 그러한 발자취를 다른 사용자들이 보기를 원하게 되었다. 물론 자신 또한 다른 사람들이 남긴 발자취를 보기를 원하게 되었다. 그리고 사용자는 서버의 무한한 자원, 즉 서버에 존재하는 데이터베이스의 내용을 자유롭게 자신이 원하는 형태로 보기를 원하게 되었고, 또한 그러한 데이터베이스의 내용을 변경하기를 원하게 되었다.
물론 직접 웹 서버가 있는 곳에 가서 데이터베이스를 참조하고 변경할 수 도 있겠지만, 당연하게도 사용자들이 요구하는 것은 자신이 어디에 있든지 인터넷만 연결되어 있는 곳이면 어디든 상관없이 자신이 원하는 작업을 하는 것이었다.
5. JSP (Java Server Pages)와 자바빈
이렇게 사용자는 웹 서버에 존재하는 데이터베이스와 같은 자원에 대해 인터넷이 연결되어 있는 어떤 곳에서든 접근할 수 있게 되었다. 데이터베이스가 있는 컴퓨터에 직접 가지 않고서도 네트워크 즉, 인터넷이 연결되어 있는 어떤 곳에서도 접근할 수 있다는 것은 너무도 흥미로운 일이었다. 그러나 이러한 흥분은 잠시뿐이고 다들 그러한 서비스를 제공해 주기 때문에 사용자들에게는 이젠 당연한 일이 되었다. 따라서 서비스를 제공하는 입장에서는 사용자들을 끌어들이기 위한 방법들이 필요하게 되었다. 좀 더 멋진 페이지를 제공해 주어야 하는 것이다. 따라서 웹 서버를 관리하는 입장에서는, 즉 웹 서비스를 제공해 주는 입장에서는 디자이너의 필요성이 대두되었다. 그러나 기존의 서블릿 등과 같은 프로그래밍 중심의 CGI프로그래밍 방식을 이용한다면 디자이너와 프로그래머가 동시에 작업하기에는 비효율적이었다.
따라서 새로운 방식의 웹 서버 프로그래밍이 필요하게 되었다. 그것은 디자이너와 웹 프로그래머가 공통적으로 다루게 되는 HTML이다. 이러한 이유로 CGI때문에 중요시되었던 프로그래밍 중심의 웹 프로그래밍 방식이 디자이너들을 위한 HTML중심의 웹 프로그래밍 방식으로 패러다임이 변하게 된 것이다.
JSP(Java Server Pages)기술은 디자이너가 함께 웹 애플리케이션을 개발할 수 있도록 하기 위해 HTML중심의 웹 애플리케이션 개발을 가능하게 하고 있다. 이러한 방식은 ASP와 PHP등에서도 제공해 주기는 하지만 JSP에서처럼 디자이너와 프로그래머의 역할을 완벽하게 분리하지는 못하고 있다. 자바에서는 JSP파일은 디자이너가 변경할 수 있는 HTML기반이고, 이는 사용자에게 보여주기 위한 부분을 담당하게 된다.
어떻게 보면 사용자에게 보여질 때마다 똑같은 정적인 페이지 또는 템플릿 HTML페이지라고 할 수 있다. 이러한 템플릿 HTML페이지에 데이터베이스에서 데이터를 가져와 데이터가 HTML(JSP)페이지 내에 위치할 곳에 위치시킬 수 있어야 한다. 따라서 데이터베이스에서 데이터를 가져오거나 관련 작업을 하기 위한 프로그램을 따로 만들 수 있도록 하고 있고, 이러한 작업을 하는 자바 클래스를 자바빈(Server Side Java Beans)이라 한다.
6. EJB (Enterprise JavaBeans)기반의 분산 웹 애플리케이션
위와 같이 디자이너와 프로그래머가 함께 작업함으로써 세련되고 예쁜 페이지를 사용자가 원하는 형태로 제공해 줄 수 있게 되었다. 그러자 많은 사용자들이 몰리게 되어 웹 서버 하나로는 많은 사용자들을 감당하기 힘들게 되었다.
사용자들에게 양질의 서비스를 제공하기 위해서는 여러 대의 웹 서버를 준비해야 한다. 그리고 기존의 웹 애플리케이션을 그대로 사용하고자 하는 요구를 만족하기 위해 분산 컴퓨팅이 발생하게 되었다.
그리고 웹 서버가 가지고 있는 뱅킹 서비스와 같은 보다 고급스러운 엔터프라지즈급 정보를 사용자들은 원하게 되었다. 이러한 상황에서 EJB기반의 분산 웹 애플리케이션이 발달하게 되었다. 웹 서버는 분산이 되었더라도 개발자 또는 사용자는 하나의 웹 서버에서 작업하는 것과 똑같이 작업할 수 있어야 한다는 것이다.
이러한 작업을 가능하도록 하기 위해 엔터프라이즈급 데이터를 다룰 수 있는 즉, 비즈니스 로직을 포함하고 있는 자바빈을 제공해 주게 되었고 이를 엔터프라이즈 자바빈(EJB:Enterprise JavaBeans)이라 한다.
그리고 이러한 EJB는 비즈니스 로직을 주로 담당하게 되는 세션 빈과 데이터베이스와 직접적으로 연결되어 데이터를 관리하게 되는 엔티티 빈으로 구분되며, 세션 빈과 엔티티 빈은 분산되어 존재할 수도 있다.
이렇게 분산되어 있는 EJB를 찾기 위해 JNDI(Java Naming Directory Interface)를 제공해 주고 있으며, 분산되어 있는 즉, 다른(리모트) 컴퓨터에 존재하는 EJB의 기능 즉, 메소드를 호출하기 위한 RMI(Remote Method Invocation) 또는 RMI-IIOP(Internet Inter-ORB Protocol)등을 제공해 주고 있다.
7. 무선 인터넷과 자바
이렇게까지 웹 서버를 확장하면서 사용자에게 모든 것을 제공해주고 있다. 더 이상 변할 것이 없고, 더 이상 필요한 것이 없을 것 같은 사용자가 다시 욕심을 부리기 시작했다. 선이 없는 곳에서도 자신만의 정보를 갖기를 원한다는 것이다. 다시 말해서 자신이 어디에 있든지 상관없이 자신만의 정보를 소유하기를 원하게 되었다는 것이다. 이러한 요구에 의해 핸드폰이 등장하게 되었고, 이윽고 핸드폰에서도 무선 인터넷이라는 것을 통해서 서버에서 제공해주는 정보 서비스를 이용할 수 있게 되었다.
이러한 인간의 욕심은 핸드폰에도 자바가 들어가게 만들었다. KVM, CLDC/MIDP 등과 같은 자바 기술을 이용하여 핸드폰에서도 자바를 사용할 수 있도록 하였고, 미들릿이라는 형태의 프로그램을 실행하게 되었다.
현재는 핸드폰에 이어 PDA에서도 PJAVA(Personal Java), CDC/MIDP라는 자바 기술을 이용하여 핸드폰과 같은 서비스를 제공해주고 있다.
이렇게 자바는 언제나 사용자의 요구에 따라 진화를 하였고, 자바가 더 이상 진화할 수 없게 된다면 그때는 자바를 능가하는 새로운 기술을 개발해야 할 것이다.
그래서 프로그래머는 항상 새로운 기술에 민감할 수밖에 없다.
어느 한가지의 최고가 되는 것이 매우 어렵고도 의미있는 일이기는 하지만 이미 사양세로 접어든 기술로 어렵게 최고가 된다 해도 노력에 대한 성과에 실망스럽게 될 수 밖에 없다.
차라리 최고가 되지 못할 바에는 새로운 기술에 능동적으로 대응하여 빠르게 흐름을 쫓는 것이 적어도 프로그래머로써의 생명력을 연장하는 하나의 방편이라 생각한다."
인터넷이 없었다면 자바가 발전할 수 없었다.
분명한것은 자바는 C보다는 느리다. 윈도우에 최적화된 VC++보다 느리다.
하지만 자바가 발전할 수 있었던 것은 인터넷과 PC하드웨어의 비약적인 발전 때문이었다.
그래서 자바는 인터넷과 함께 발전한다. 운영체제가 바뀌어도 자바는 인터넷과 발전할 것이다.
근래에는 너도나도 인터넷을 접하고 또한 관련 서적을 통해 웹이나 html이라는 것을 쉽게 접할 수 있지만 정작 그러한 것이 어떤 이유로 또 어떻게 진화되어 왔는지에 대해서는 알 수 있는 기회가 많지 않다. 왜냐하면 일부러 찾지 않는 한 최신기술을 집필한 서적에서 기술의 히스토리까지 알려 줄 필요는 없기 때문이다. 게다가 대부분의 사람들이 정보라는 분야에 있어서 중요시하는 것은 최신의 기술 자체만 추구하는 경향이 있다. 하지만 그것은 IT라는 분야에서 나무만 자체만 보게 될 뿐 숲은 볼 수 없게 되는 원인이 되기도 한다.
따라서 최신의 기술을 익히는 것도 중요하지만 여유가 된다면 그러한 기술이 탄생한 배경도 같이 이해한다면 기술을 습득하는데 에 더 유연하고 탄력적으로 그리고 필연성을 가지고 빠르게 습득해 가리라 생각한다.
그리고 더 나아가 최신의 기술보다 더 앞서가는 기술을 내다볼 줄 아는 견목 또한 넓힐 수 있을 거라 생각한다.
다음에 서술하는 내용은 어느 웹관련 서적에서 인용한 것으로 책의 저작권에 침해가 될지는 모르겠으나, 솔직히 책의 내용에서 아주 중요하다고 판단되지는 않고 또 개인적으로는 웹의 히스토리를 이해하는데 어느 정도 도움이 될 것이라 판단하여 이곳에 옮겨보았다.
1. 애플리케이션
사람들은 자신들이 하는 작업을 보다 쉽고 빠르게 하기 위해 컴퓨터라는 기계를 만들게 되었고 이러한 기계에서 작업할 수 있도록 하기 위해 프로그램을 작성하였다.
이러한 프로그램을 애플리케이션이라 한다. 다시 말해서 애플리케이션이란 여러분이 앉아 있는 컴퓨터에서 직접 실행할 수 있도록 작성한 프로그램을 의미한다. 자바는 이러한 애플리케이션을 작성하는 언어의 일종이다.
애플리케이션은 현재 앉아 있는 컴퓨터에서 바로 실행되는 프로그램이다. 이러한 애플리케이션을 텍스트 환경에서 사용하려다 보니 사용자가 입/출력을 하기가 불편하고 직관적이지 못하였다. 이러한 문자 기반의 인터페이스를 CUI(Character User Interface)라 한다.
사용자들은 좀 더 보기 좋은 그림 형태의, 다시 말해서 그래픽 형태의 화면을 원하게 되었고 이를 위해 자바에서는 AWT(Abstract Window Toolkit)가 나타나게 되었다. AWT는 컴퓨터와 사용자간에 GUI(Graphic User Interface)기반의 사용자 인터페이스를 제공해 줌으로써 CUI기반의 사용자 인터페이스보다 훨씬 직관적이고 알아보기 쉽게 되었다.
그러나 AWT는 단순한 형태의 GUI를 제공함으로써 사용자들은 빨리 싫증을 느꼈고 좀 더 예쁜 형태의 그래픽과 디자인을 원하게 되었다. 또한 프로그램이 발달하면서 좀 더 복잡한 형태의 데이터들을 표현할 수 있는 컴포넌트들이 필요하게 되었다. 따라서 이러한 사람들의 욕구를 만족시키기 위해 자바에서는 JFC/SWING을 제공하게 되었다. 보다 복잡한 형태의 그래픽 사용자 인터페이스를 제공함으로써, 사용자는 보다 편안하고 보기 좋은 환경에서 직관적으로 작업할 수 있게 되었다.
2. HTTP프로토콜 기반의 단순 HTML 웹서비스
애플리케이션을 사용하여 많은 작업을 하게 되었고, 대부분의 작업은 인간을 편안하게 하기 위해 컴퓨터가 대신하게 되었다. 그러나 여러분이 도서관에서 제공해 주는 도서 목록이나 현재 상영하는 영화의 목록을 알고자 한다면 어떻게 해야 하나? 지금 같으면 웹에서 가능하지만 , 웹이 나타나기 전에는 도서관에 가서 직접 프로그램을 실행시켜서 도서 목록을 볼 수 있었고, 영화관에 직접 가서 거기에 있는 컴퓨터에서 영화 리스트를 보여주는 애플리케이션을 실행시켜서 볼 수가 있다.
네트워크는 사람들이 직접 도서관에 찾아가지 않고도 도서목록을 열람할 수 있게 해줌으로써 이러한 불편함을 해결해준다.
처음에는 네트워크로 도서관에 있는 서버를 연결해서 도서 목록을 텍스트로 보았지만 텍스트는 한 눈에 알아보기 힘들고, 키보드를 입력하여 도서 목록에서 자신이 원하는 도서를 찾는다는 것이 힘들었다. 따라서 사용자들은 도서 목록을 좀 더 알아보기 쉽고 직감적으로 보고 찾기를 원하게 되었고, 이러한 사람들의 욕심에 의해 네트워크로 컴퓨터들을 연결하고, 도서 목록을 보다 쉽고 직감적으로 보기 위해 HTML을 만들게 되었다.
3. 자바 스크립트/애플릿과 네트워킹
단순하게 HTML문서를 보는 것만으로도 처음에는 재미있고 신기한 일이었다. 그러나 이러한 환경에 익숙해지다 보니 사용자들은 매번 같은 HTML문서에 싫증을 내기 시작했다. 링크와 그림만 있는 페이지에서 재밌는 이벤트를 기대하기는 힘들었다. 사용자는 HTML페이지 상에서 채팅과 같은 인터렉티브한 작업을 하고 싶어했고 또 특정한 이벤트에 반응하는 스크립트언어에 관심을 가지기 시작했다.
이러한 사용자의 욕심을 만족시키기 위해 HTML페이지를 보면서 웹 브라우저에서 게임을 할 수 있도록 해 주고, HTML페이지 상에서 뭔가 사용자의 작업을 할 수 있도록 자바 애플릿이 나왔다. 웹 서버를 관리하는 쪽에서 사용자들이 할 수 있는 게임을 자바를 이용하여 개발하여 해당 HTML페이지를 요청하면 그 페이지 내에서 게임을 할 수 있도록 하는 것이다.
이렇게 하여 사용자들은 단순하고 정적인 HTML페이지만을 보다가 자바 스크립트/애플릿이라는 것을 이용하여 좀더 다채로운 HTML페이지를 접할 수 있게 되었다. 그러나 불행히도 사용자의 욕심은 여기서 끝나지 않았다. 혼자서 게임을 한다는 것은 지루하고 매번 같은 방식으로 진행되기 때문에 사용자들은 쉽게 싫증을 느끼게 된다.
다른 사람들과 게임을 함께 하기를 원하게 되고, 이를 위해 웹 서버에 게임을 중재할 수 있는 프로그램 즉, 애플리케이션을 실행해야 하고 게임 서버 애플리케이션 프로그램과 자바 애플릿은 네트워킹을 통해 게임 관련 데이터를 주고받으면서 다른 사람들과 네트워크 게임을 할 수 있게 되었다.
4. CGI (Common Gateway Interface)프로그래밍과 자바 서블릿
이제 사용자는 자신의 발자취를 서버에 남기고 그러한 발자취를 다른 사용자들이 보기를 원하게 되었다. 물론 자신 또한 다른 사람들이 남긴 발자취를 보기를 원하게 되었다. 그리고 사용자는 서버의 무한한 자원, 즉 서버에 존재하는 데이터베이스의 내용을 자유롭게 자신이 원하는 형태로 보기를 원하게 되었고, 또한 그러한 데이터베이스의 내용을 변경하기를 원하게 되었다.
물론 직접 웹 서버가 있는 곳에 가서 데이터베이스를 참조하고 변경할 수 도 있겠지만, 당연하게도 사용자들이 요구하는 것은 자신이 어디에 있든지 인터넷만 연결되어 있는 곳이면 어디든 상관없이 자신이 원하는 작업을 하는 것이었다.
5. JSP (Java Server Pages)와 자바빈
이렇게 사용자는 웹 서버에 존재하는 데이터베이스와 같은 자원에 대해 인터넷이 연결되어 있는 어떤 곳에서든 접근할 수 있게 되었다. 데이터베이스가 있는 컴퓨터에 직접 가지 않고서도 네트워크 즉, 인터넷이 연결되어 있는 어떤 곳에서도 접근할 수 있다는 것은 너무도 흥미로운 일이었다. 그러나 이러한 흥분은 잠시뿐이고 다들 그러한 서비스를 제공해 주기 때문에 사용자들에게는 이젠 당연한 일이 되었다. 따라서 서비스를 제공하는 입장에서는 사용자들을 끌어들이기 위한 방법들이 필요하게 되었다. 좀 더 멋진 페이지를 제공해 주어야 하는 것이다. 따라서 웹 서버를 관리하는 입장에서는, 즉 웹 서비스를 제공해 주는 입장에서는 디자이너의 필요성이 대두되었다. 그러나 기존의 서블릿 등과 같은 프로그래밍 중심의 CGI프로그래밍 방식을 이용한다면 디자이너와 프로그래머가 동시에 작업하기에는 비효율적이었다.
따라서 새로운 방식의 웹 서버 프로그래밍이 필요하게 되었다. 그것은 디자이너와 웹 프로그래머가 공통적으로 다루게 되는 HTML이다. 이러한 이유로 CGI때문에 중요시되었던 프로그래밍 중심의 웹 프로그래밍 방식이 디자이너들을 위한 HTML중심의 웹 프로그래밍 방식으로 패러다임이 변하게 된 것이다.
JSP(Java Server Pages)기술은 디자이너가 함께 웹 애플리케이션을 개발할 수 있도록 하기 위해 HTML중심의 웹 애플리케이션 개발을 가능하게 하고 있다. 이러한 방식은 ASP와 PHP등에서도 제공해 주기는 하지만 JSP에서처럼 디자이너와 프로그래머의 역할을 완벽하게 분리하지는 못하고 있다. 자바에서는 JSP파일은 디자이너가 변경할 수 있는 HTML기반이고, 이는 사용자에게 보여주기 위한 부분을 담당하게 된다.
어떻게 보면 사용자에게 보여질 때마다 똑같은 정적인 페이지 또는 템플릿 HTML페이지라고 할 수 있다. 이러한 템플릿 HTML페이지에 데이터베이스에서 데이터를 가져와 데이터가 HTML(JSP)페이지 내에 위치할 곳에 위치시킬 수 있어야 한다. 따라서 데이터베이스에서 데이터를 가져오거나 관련 작업을 하기 위한 프로그램을 따로 만들 수 있도록 하고 있고, 이러한 작업을 하는 자바 클래스를 자바빈(Server Side Java Beans)이라 한다.
6. EJB (Enterprise JavaBeans)기반의 분산 웹 애플리케이션
위와 같이 디자이너와 프로그래머가 함께 작업함으로써 세련되고 예쁜 페이지를 사용자가 원하는 형태로 제공해 줄 수 있게 되었다. 그러자 많은 사용자들이 몰리게 되어 웹 서버 하나로는 많은 사용자들을 감당하기 힘들게 되었다.
사용자들에게 양질의 서비스를 제공하기 위해서는 여러 대의 웹 서버를 준비해야 한다. 그리고 기존의 웹 애플리케이션을 그대로 사용하고자 하는 요구를 만족하기 위해 분산 컴퓨팅이 발생하게 되었다.
그리고 웹 서버가 가지고 있는 뱅킹 서비스와 같은 보다 고급스러운 엔터프라지즈급 정보를 사용자들은 원하게 되었다. 이러한 상황에서 EJB기반의 분산 웹 애플리케이션이 발달하게 되었다. 웹 서버는 분산이 되었더라도 개발자 또는 사용자는 하나의 웹 서버에서 작업하는 것과 똑같이 작업할 수 있어야 한다는 것이다.
이러한 작업을 가능하도록 하기 위해 엔터프라이즈급 데이터를 다룰 수 있는 즉, 비즈니스 로직을 포함하고 있는 자바빈을 제공해 주게 되었고 이를 엔터프라이즈 자바빈(EJB:Enterprise JavaBeans)이라 한다.
그리고 이러한 EJB는 비즈니스 로직을 주로 담당하게 되는 세션 빈과 데이터베이스와 직접적으로 연결되어 데이터를 관리하게 되는 엔티티 빈으로 구분되며, 세션 빈과 엔티티 빈은 분산되어 존재할 수도 있다.
이렇게 분산되어 있는 EJB를 찾기 위해 JNDI(Java Naming Directory Interface)를 제공해 주고 있으며, 분산되어 있는 즉, 다른(리모트) 컴퓨터에 존재하는 EJB의 기능 즉, 메소드를 호출하기 위한 RMI(Remote Method Invocation) 또는 RMI-IIOP(Internet Inter-ORB Protocol)등을 제공해 주고 있다.
7. 무선 인터넷과 자바
이렇게까지 웹 서버를 확장하면서 사용자에게 모든 것을 제공해주고 있다. 더 이상 변할 것이 없고, 더 이상 필요한 것이 없을 것 같은 사용자가 다시 욕심을 부리기 시작했다. 선이 없는 곳에서도 자신만의 정보를 갖기를 원한다는 것이다. 다시 말해서 자신이 어디에 있든지 상관없이 자신만의 정보를 소유하기를 원하게 되었다는 것이다. 이러한 요구에 의해 핸드폰이 등장하게 되었고, 이윽고 핸드폰에서도 무선 인터넷이라는 것을 통해서 서버에서 제공해주는 정보 서비스를 이용할 수 있게 되었다.
이러한 인간의 욕심은 핸드폰에도 자바가 들어가게 만들었다. KVM, CLDC/MIDP 등과 같은 자바 기술을 이용하여 핸드폰에서도 자바를 사용할 수 있도록 하였고, 미들릿이라는 형태의 프로그램을 실행하게 되었다.
현재는 핸드폰에 이어 PDA에서도 PJAVA(Personal Java), CDC/MIDP라는 자바 기술을 이용하여 핸드폰과 같은 서비스를 제공해주고 있다.
이렇게 자바는 언제나 사용자의 요구에 따라 진화를 하였고, 자바가 더 이상 진화할 수 없게 된다면 그때는 자바를 능가하는 새로운 기술을 개발해야 할 것이다.
그래서 프로그래머는 항상 새로운 기술에 민감할 수밖에 없다.
어느 한가지의 최고가 되는 것이 매우 어렵고도 의미있는 일이기는 하지만 이미 사양세로 접어든 기술로 어렵게 최고가 된다 해도 노력에 대한 성과에 실망스럽게 될 수 밖에 없다.
차라리 최고가 되지 못할 바에는 새로운 기술에 능동적으로 대응하여 빠르게 흐름을 쫓는 것이 적어도 프로그래머로써의 생명력을 연장하는 하나의 방편이라 생각한다."