Computing Paradigm의 변천과 Java 기술의 발전 (2. 구조적 측면)

Computing Paradigm의 변천과 Java 기술의 발전

앞서 program기법 측면에서 기술의 발전을 설명드렸으며, 이번 글에서는 Java가 무엇이 좋길래 쓰는 것인지에 대해 살펴보겠습니다.



2. 구조적 측면
시대가 흐르면서 사양이 높은 다른 머신에 다른 프로그램을 올려놓고 머신에서 요청하면 결과만 받도록 설계하는 경우가 생기기 시작했습니다. 

우리에겐 너무나 친숙한 이름과 Client와 Server가 이와 관련된 내용입니다.
요청하는쪽은 Client라 하고,  받는쪽은 Server라고합니다. (C/S구조)
그러나 C/S구조의 문제점은 똑같은 프로그램인데도 O/S마다 테스트(Windows와 Linux 등 테스트)하고 배포해야되는 불편이었습니다.
즉, 서버쪽 프로그램과 데이터만 관리하면 되는게 아니라 각 클라이언트 머신마다 전부 다르게 구동되야했습니다.

앞 글에서 Java 기술의 발전은 무엇을 기준으로 한다고 말씀드렸죠?
답은 바로 개발자 편의성입니다.

새로운 기술은 개발자가 불편을 느낄 때 나옵니다.
C/S구조의 문제점을 개선하기위해 Web site시대가 시작됩니다.

요청에 대한 프로그램을 짜는게 아니라 데이터만 주면 되는 것을 html이라고 합니다.
이때가 90년대이고 Web site시대라고 부릅니다. 
(다른말로 html 등만 지원하기에 정적인 시대라고 부르기도 합니다.)

처음에는 인터넷을 통해 단순히 뉴스를 보는 것처럼 text만 제공해주면 문제가 없었습니다.
그러나 인터넷이 발전하면서 단순히 text만 제공하는 것이 아닌 회원가입이나 로그인을 하는 것처럼 사용자도 인터넷으로 무언가를 하게되는 시대가 되었습니다.

개발자들은 이에 프로그램을 추가하기 시작하였고 어떤 언어들이 적합한지 다양한 언어들을 시도하게됩니다. 그리고 웹서버에 넣어 성공한 언어들을 CGI(Common Gateway Interface)라 부릅니다.
(CGI는 web서버 프로그램을 통칭해서 부르는 말입니다.)

여기서도 또 문제점이 대두되기 시작합니다. 바로 Process 문제점입니다.
이 때에는 컴퓨터의 자원을 공유하지 안았지만 리소스가 부족해지는 현상이 발생하게 되고 이에 대해 서버가 다운되지 않기 위해선 자원을 공유하는게 무엇인가가 필요했습니다. 
(개발자 불편 + 컴퓨터의 자원을 공유해야되는 필요성)
이때 나타난 것이 thread입니다.

이제 API라는 것만 설명드리면 자바가 나타난 배경에 대해 설명드릴 수 있을 것 같습니다. 

API는 쉽게 말하자면 라이브러리와 비슷합니다. 미리 짜여진 코드라 생각하시면 됩니다.
자바 API는 자바를 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리의 집합이라 볼 수 있습니다.
자바 API는 자바라는 언어를 사용하여 사용자의 부담을 최소화하는 반면에 입출력, 화면구성이미지, 네트워크와 같이 복잡하지만 필요한 클래스들을 미리 구현하여 사용자가 쉽게 구현하도록 하는 API입니. 이러한 자바 API는 하나의 커다란 클래스 계층구조로 설계되어 있습니다

예를 들어보겠습니다.
C개발자가 웹에서 돌아가는 CGIC이용했다고 해봅시다.
Request1개일땐 상관 없었는데 여러개일땐 문제가 생길 수 있습니다.
좀 전에 이를 해결하기 위해 나타난 것이 thread라고 말씀드렸죠? 
근데 이 thread가 굉장히 다루기 어렵기 떄문에 API가 나온 것입니다.
너무 깊게 들어가면 복잡할 수 있기 때문에 이정도까지만 간단히 짚고 넘어가겠습니다.

요약

자바가 나타난 배경
1. Process / request 문제를 개선하기 위해 Thread / request바꿔야한다
(개발자 불편 + 컴퓨터의 자원 공유 필요성)
2. Platform dependent => platform indepedent 필요
// API를 위해서 어떤 플랫폼에서든 구동하게 할 필요가 있었음 => 이때 플랫폼 독립적인 언어가 나옴

이 2가지 문제점 모두 해결 가능한게 SunServlet(Java)입니다.
* Java는 웹을 Target으로 한 범용 언어로 동시 접근에 대항할 수 있고 서버에 강합니다.

다음 글에서는 Java의 특징에 대해 알아보겠습니다.


댓글 없음:

Powered by Blogger.