가장·인간적인·인터페이스( Human Interface )

공지 사항

Think 2008. 4. 14. 02:10 by 건두부


사용자 삽입 이미지




Q1 자바란 무엇인가, 또 자바라고 명명한 이유는?

자바(Java)는 썬마이크로시스템즈(이하 ‘썬’) 사의 제임스 고슬링과 그의 팀이 개발한 컴퓨터 프로그래밍 언어로, 지난 1995년 5월, 미국 샌프란시스코에서 열린 ‘썬 월드 95’에서 처음 발표되었다.
사실 자바가 처음부터 ‘자바’라는 공식 명칭으로 개발된 것은 아니다.
자바의 전신은 ‘오크(Oak)’라는 프로그래밍 언어로, 썬 사가 냉장고나 밥솥 등의 가전제품에 쓰이는 컴퓨터 칩을 제어할 프로그램을 개발하기 위해 만든 것이다.
하지만 오크를 대화형 TV에 적용시키려는 썬의 계획이 중도에 무산되고, 때마침 월드와이드웹의 열풍이 거세지자, 썬은 HTML의 정적인 단점을 오크 언어로 극복할 수 있다고 판단, 오크를 웹에 적용시켰다.
이후 오크의 장점을 최대한 살린 웹브라우저, 웹러너(핫자바(HotJava)의 전신)가 첫 데모에서 성공적인 반응을 얻게 되자, 썬은 자바 개발에 매진, 썬 월드 95를 통해 자바를 대중적인 언어로 만들었다.
자바라는 이름의 기원은 개발자인 James Gosling, Arthur Van Hoff, Andy Bechtolsheim의 이름 첫 글자를 조합했다는 설과, 개발자들이 자주 마시던 인도네시아산 커피 이름에서 따왔다는 설이 있다.

Q2 자바 프로그램을 실행시키려면 무엇이 필요한가?

자바 프로그램을 실행시키려면 우선 실행될 클래스 파일(확장자가 쪱.class인 바이트 코드의 모음)이 있어야 하며, 이 클래스 파일을 실행시킬 자바 가상 머신, 즉 JVM이 필요하다.
요컨대, 자바를 맛보기 위해서는 개인 플랫폼 상에 자바 프로그램을 실행시키는 자바 가상 머신이 탑재되어야 한다.
현재 자바 가상 머신은 여러 회사에서 개발하고 있는데, 가장 대중적인 자바 가상 머신은 썬에서 만든 JDK(Java Development Kit, 자바 개발 키트)에 있는 자바 가상 머신이다.
또한 윈도 95에도 마이크로소프트가 개발한 J뷰(JView)라는 가상 머신이 기본적으로 내장되어 있고, 넷스케이프 내비게이터나 인터넷 익스플로러에도 자바 애플릿을 볼 수 있는 가상 머신이 탑재되어 있다.
J++, J빌더(JBuilder) 등의 자바 개발 도구에도 썬의 가상 머신과 호환성을 보이는 가상 머신이 포함된다.

Q3 자바로 개발한 프로그램은 어떻게 모든 플랫폼상에서 구동되는가?

자바의 실행 파일인 클래스 파일은 하드웨어나 운영체제에서 제공하는 명령어인 API(Application Programming Interface) 대신에 ‘바이트 코드’라는 자바 가상 머신의 명령어를 사용한다.
따라서 자바 가상 머신이 있는 플랫폼이라면 어떤 환경에서든 구동된다.
또한 한번 개발된 프로그램은 가상 머신이 탑재된 플랫폼이라면 매킨토시, IBM PC, 유닉스 등 종류에 상관 없이 수정 과정을 거치지 않고 실행된다.
결국 자바가 모든 플랫폼상에서 구동되는 이유는 자바 가상 머신에 달려 있는 셈이다.
기본적으로 썬은 윈도 95와 윈도 NT, 솔라리스용 자바 가상 머신을 개발하고 있으며, 그 외의 플랫폼 자바 가상 머신은 썬과 계약을 맺은 업체들이 개발한다.

Q4 100% 순수 자바란 무엇이고, 썬과 마이크로소프트가 내놓은 자바의 차이점은?

자바는 처음 개발될 당시부터 “한번 작성된 프로그램은 어디서든 실행된다(Write Once, Run Anywhere)”라는 모토 아래 플랫폼 독립성을 이끈 프로그래밍 언어이다.
단, 자바 가상 머신 개발사와 컴파일러 개발사들이 썬이 제안한 명세서(Specification, 바이트 코드와 이를 실행하는 가상 머신의 동작을 정의한 문서)를 100% 따를 경우에만 가능하다.
자바를 개발한 썬은 타업체와 자바 라이선스시 이 같은 조건을 따른다는 계약을 맺는데, 이렇게 개발된 것이 100% 순수 자바 프로그램이다.
하지만 마이크로소프트 사는 이 계약을 다르게 해석해 자사 컴파일러인 비주얼 J++와 JVC로 만든 자바 프로그램을 윈도 95와 윈도 NT에서만 실행되도록 구현했다.
또한 자바 가상 머신의 하나로, 윈도 32버전의 API를 불러들여 개발 중인 프로그램에 적용시킬 수 있는 ‘J/다이렉트’ 기술을 발표해 윈도 95와 윈도 NT 운영체제에서만 지원하고 있다.
결국, 썬과 반 MS 업체들이 썬의 계약을 따르는 ‘100% 순수 자바’ 캠페인을 벌이고 있고, 마이크로소프트는 윈도에서만 사용할 수 있는 다이렉트X 등의 기술을 자바와 연결시켜 독자적인 노선을 걷고 있다.

Q5 대표적인 자바 제품으로는 무엇이 있나?

자바 제품은 크게 웹상에서 구동되는 애플릿, 데스크톱용 프로그램, 그리고 하드웨어로 구현된 제품 등 세 가지로 구분된다.
이 중 애플릿은 게임, 유틸리티, 통신 프로그램 등 수많은 제품으로 발표되었고, 이들 애플릿은 http://www.gamelan.com 사이트에서 손쉽게 구할 수 있다.
또한 데스크톱용 프로그램으로는 썬이 개발한 웹브라우저인 ‘핫자바’와 자바 개발 통합 환경인 ‘자바 워크숍’ 등이, 사무용 프로그램으로는 로터스의 ‘eSuite(http://www.lotus.com)’와 코렐 ‘Office for Java(http://www.corel.com)’, 스타디비전의 ‘스타오피스(http:// www.stardivision.com)’ 등이 있다.
넷스케이프 사도 차기 버전의 넷스케이프 내비게이터를 100% 자바로 개발할 계획이며, IBM에서도 많은 데스크톱용 자바 프로그램을 개발 중이다.
한편 자바 바이트 코드를 직접 실행시키는 자바 칩을 이용한 제품으로는 자바 스마트 카드가 있다.
이는 시중의 시내 버스 카드와 같이 카드에 자바 칩이 들어간 제품으로, 신용 카드, 출입 카드, 신분증 등으로 사용될 수 있다.
아울러 자바 스마트 카드의 변형인 자바 반지(반지에 자바 칩이 들어간 제품)와, 삼성전자, 노텔, 알카텔 등 세 업체가 공동 발표한 웹폰(자바를 탑재해 웹브라우저와 E-mail 기능을 동시에 사용할 수 있는 전화기)이 있다. 특히 지난 8월 LG가 발표한 NC는 다른 운영체제 없이 자바 OS로 동작하는 완전한 자바 제품이라고 할 수 있다.


Q6 핫자바란 무엇이며, 넷스케이프 내비게이터와 어떤 차이가 있는가?

핫자바는 자바 언어를 테스트하기 위해 개발된 자바 웹브라우저이다.
현재 1.1 버전까지 발표되었고, 자바 OS 1.1 이상, 솔라리스 2.5 이상, 윈도 95와 윈도 NT 플랫폼을 지원한다. 간혹 핫자바와 넷스케이프 내비게이터를 비교하는 사람들이 있는데, 두 제품 모두 자바 애플릿을 브라우징할 수 있는 웹브라우저라는 점에서 동일하다.
넷스케이프 사가 자바 기술을 라이선스해 버전 2.0 이상에서 자바를 지원하기 때문이다.
하지만 핫자바는 애플릿 브라우저 이상의 의미를 갖는다.
인터넷 애플리케이션 확장 라이브러리로서, 프로토콜의 동적 결합, 새로운 데이터 타입의 확장이 가능한 자바 프로그램인 것이다.

Q7 자바 애플리케이션과 자바 애플릿의 차이점은?

자바 애플리케이션은 실행 코드를 번역하는 자바 가상 머신만 있다면 유닉스, 윈도, 도스 프로그램처럼 독립적으로 실행된다.
반면, 자바 애플릿은 독립적인 실행이 불가능하다.
웹서버에서 클라이언트 쪽의 웹브라우저로 코드가 이동돼 웹브라우저 안에서만 실행되는 작은 프로그램이기 때문이다.
또한 클라이언트측의 시스템 보안을 위해 웹브라우저 밖의 시스템에는 접근할 수 없다.
즉, 클라이언트 파일 시스템상에서 파일 읽기와 쓰기, 삭제 등이 불가능한 것이다.
아울러 자바 애플릿은 네트워크를 통해 자바의 실행 파일인 클래스 파일이 전송된 후 실행되기 때문에, 파일 크기에도 제약이 있다.

Q8 자바 프로그램을 개발하기 위해서 필요한 툴은 무엇인가?

자바 프로그램을 개발한다는 것은 클래스 파일을 만든다는 이야기이다.
다시 말해 자바 소스 파일(쪱.java)을 자바 클래스 파일로 컴파일한다는 의미이다.
따라서 자바 프로그램을 개발하기 위해서는 자바 컴파일러와 함께, 실행시켜 구현할 자바 가상 머신과 디버깅을 위한 디버거, 자바 클래스 라이브러리 등이 필요하다.
현재 썬은 이런 개발 도구들을 한데 묶은 JDK 패키지를 인터넷에 배포하고 있으며, 1.1.5버전까지 나와 있다.
이외에도 좀더 편리한 환경에서 개발할 수 있도록 에디터, 컴파일러, 디버거, 도움말 등의 다양한 기능을 GUI 환경으로 제공하는 통합 패키지 프로그램, 마이크로소프트 J++, 볼랜드의 J빌더, 시만텍의 비주얼 카페, 썬의 자바 워크숍, 파워소프트의 파워 J 등이 시판되고 있다.

Q9 자바는 C 또는 C++와 어떻게 다른가?

자바는 C, C++ 등의 프로그래밍 언어와 문법이 비슷해 프로그래머들이 부담 없이 접근할 수 있다.
하지만 내부적인 면에서 기존 언어와 많은 차이가 있다.
우선 자바는 단순하다. 일례로, 자바는 C++의 문법적 복잡성을 없앴다고 해서 ‘C++--’라고도 불리는데, C++의 연산자 재정의와 다중 상속 등 복잡한 개념이 없어져 프로그래밍이 용이해졌다.
두 번째로 자바는 객체(Object) 지향 프로그램이다. 이는 객체라고 부르는 소프트웨어 컴포넌트로 대상을 모델링하는 데 기반을 둔 것인데, 데이터와 함수가 하나의 단위로 캡슐화되기 때문에, 데이터 종속이 국소화되고 변경 등으로 인한 영향을 줄일 수 있다.
아울러 정보 은닉화 기능이 제공돼 꼭 필요한 경우에만 객체가 데이터에 접근할 수 있다.
자바가 독립성과 확장성이 높은 이유는 이 객체 지향적인 특징 때문이다. 마지막으로 자바의 가장 큰 특징은 C나 C++가 컴파일 시간이 중요한 정적(Static) 언어인데 비해, 실행 시간이 중요한 동적(Dynamic) 언어라는 점이다.
다시 말해 자바는 프로그램 실행 중에 클래스를 추가하거나 배열을 선언할 수 있고, 심지어 클래스를 실행하는 중에 해당 클래스의 메소드(함수)와 필드(변수)를 확인한 후 필드값을 지정하거나 메소드를 호출할 수 있다.
따라서 자바는 C나 C++에 비해 속도가 느리지만 유연성이 높은 프로그래밍 언어라고 하겠다.

Q10 자바 개발 툴의 차기 버전인 JDK 1.2은 언제쯤 나오며, 달라지는 점은 무엇인가?

2001년 현재 jdk1.3 이 출시된 상태이다.
JDK 1.2는 98년 초에 나올 예정이며, 현재 베타 테스트가 이루어지고 있다. 이번 1.2버전은 보안에 관한 자바의 구조를 대폭 개선했다는 특징이 있다.
즉, 권한을 받은 상태라면 자바 애플릿도 시스템의 자원을 사용할 수 있게 되었다.
또한 ‘스윙(Swing)’이라고 불려온 JFC(Java Foundation Classes)가 기본으로 들어가 프로그래밍 속도를 높이고, 한국어, 일본어, 중국어 등의 입력기도 추가된다.
아울러, 기존 1.02버전에서 1.1버전으로 바뀐 것처럼 기본 구조의 변화가 아닌 패키지 추가이기 때문에 새롭게 문법을 배울 필요가 없다.
이외의 자세한 정보는 http://java.sun.com/products/jdk/1.2/docs에서 찾아볼 수 있다.

Q11 자바 빈이란 무엇인가?

자바 빈(Java Bean)은 자바 프로그래밍을 단순하게 만드는 기술이다.
구체적으로 레고 블록을 끼워 맞추듯 독립적인 프로그램 덩어리를 연결해 최종 프로그램을 만드는 식으로 컴포넌트 기법을 자바에 접목시킨 기술이다.
따라서 자바 빈으로 만든 컴포넌트는 J빌더나 자바 카페 등, 자바 빈을 지원하는 개발 도구를 사용해 다른 프로그램의 일부로 사용할 수 있다.
자바 빈을 만들기 위해서는 썬이 제안한 자바 빈 제작 방법을 따라야 한다.
즉, 필드는 무조건 접근 권한을 ‘Private’로 정해 외부 접근을 막고, 메소드, 즉 함수를 ‘set×××()’, ‘get×××()’(여기서 ‘×××’는 필드 이름)로 만들어야 한다.
그래야만 자바 빈을 지원하는 개발 도구에서 클래스를 읽어들일 때 소스 코드가 없어도 어떠한 메소드가 있는지, 어떻게 사용해야 하는지 알아낼 수 있다.
현재 대부분의 자바 빈은 전문 컴포넌트 개발사에 의해 만들어져 판매되고 있어, 처음부터 프로그램을 개발해야 하는 개발사의 부담을 줄여주고 있다.

Q12 자바 스크립트란 무엇이며, 이를 이용할 경우 어떤 이점이 있는가?

자바 스크립트는 기존 자바를 보완한 인터넷용 컴퓨터 언어이다.
정확히 말하자면, 클라이언트와 서버 양쪽의 객체와 자원을 상호 결합하는 온라인 응용 프로그램을 개발하는 데 사용되는 컴퓨터 언어로, 객체 지향 스크립트 언어라고도 정의할 수 있다.
사실 자바 스크립트의 원형은 넷스케이프 사가 개발한 ‘라이브 스크립트’이다. 하지만 자바가 선풍적인 인기를 끌자 썬과 넷스케이프가 손을 잡고 문법을 확장시켜 현재의 ‘자바 스크립트’를 만들었다.
자바 스크립트를 실행시키는 데 컴파일러나 자바 가상 머신 등은 필요치 않다.
넷스케이프 내비게이터가 HTML 문서를 읽다가 자바 스크립트가 나오면 알아서 해석하고 작동하기 때문이다.
따라서 자바 스크립트는 작은 프로그램을 HTML 내부에 작성하거나 HTML 흐름을 조정하는 데 사용되며, 경고 창, 입력, 간단한 애니메이션 등의 효과도 제공한다.

Q13 넷스케이프 내비게이터와 인터넷 익스플로러의 자바 스크립트는 어떤 차이가 있는가?

썬과 넷스케이프가 만든 자바 스크립트에 대항하기 위해 마이크로소프트 사는 비주얼 베이식 스크립트를 개발해 이를 인터넷 익스플로러에 적용시켰다.
물론 인터넷 익스플로러에서는 자바 스크립트도 동시에 지원된다.
반면 넷스케이프 내비게이터 4.03버전은 비주얼 베이식 스크립트가 지원되지 않는다.
하지만 이 두 웹브라우저에서 발생되는 스크립트 오류는 스크립트 자체의 문제가 아니다.
웹브라우저에 탑재돼 스크립트를 읽고 해석하는 엔진이 다르기 때문이다.
결국, 양사의 웹브라우저가 통합되거나 스크립트 엔진이 표준화되기 이전에는 웹브라우징시 발생하는 스크립트 오류를 극복할 수 없다.

Q14 자바는 어떻게 멀티미디어 효과를 내는가?

지금의 자바는 아직 초보적인 멀티미디어 효과만을 지원하는데, 기본적으로 쪱.gif와 쪱.jpg 파일을 화면에 보여주거나, 쪱.au 파일을 지원해 간단한 사운드 효과를 구현하는 정도이다.
이 멀티미디어 제품은 게임 형태로 조금씩 발표되고 있으며, http://fragisland.fragzone.se에 가보면 퀘이크(Quake)와 비슷한 수준의 상당히 잘 만들어진 게임도 볼 수 있다.
물론 부족한 멀티미디어 API를 보강하려는 자바 진영의 움직임도 활발하다.
특히 썬은 최근 들어 멀티미디어와 관련된 자바 패키지를 개발하는 데 많은 투자를 하고 있는데, 그 하나가 썬의 ‘자바 미디어&커뮤니케이션(Java Media&Communications)’이다. 이는 자바 3D, 자바 2D, 자바 사운드, 자바 스피치, 자바 텔레포니, 자바 미디어 프레임워크 등의 패키지들을 한데 묶은 것으로, 현재 개발 중에 있다.
이 중 자바 미디어 프레임워크는 베타판이 나와 있으며, 나머지 멀티미디어 기술은 1998년 초쯤에 개발될 것으로 보인다.

Q15 자바는 안전한 인터넷 보안을 유지하는가?

최근 마이크로소프트 사의 액티브X에 많은 보안 결함이 지적되고 있다.
하지만 자바는 보안에 관한 한 확실한 해결 방안을 갖고 있다.
우선 자바는 웹상에서 떠돌아다니는 애플릿 등에 대해 사용자의 컴퓨터 자원을 사용하지 못한다는 ‘모래 상자’ 원칙을 유지해, 인터넷을 통한 바이러스 침투가 불가능하다.
또, 자바 가상 머신을 실행하기 전, 바이트 코드에 대한 불법적인 행동이나 오류를 범하는지 몇 차례에 걸친 보안 검사를 한다.
아울러 최근에는 JDK에 기본적으로 보안 및 암호화에 대한 클래스 파일 등의 패키지가 포함되어, 인터넷 보안이 유지된다.

Q16 자바의 단점은 무엇인가?

자바의 단점은 역시 속도라고 할 수 있다.
기존의 C나 C++와 비교할 때, 최대 40배까지도 느려질 수 있다고 하는데, 썬은 이러한 단점을 극복하기 위해서 JIT(Just In Time) 컴파일러, 자바 가상 머신의 최적화, 자바 칩 등의 다양한 방법을 강구 중이다.
특히 JIT 컴파일러는 자바 가상 머신이 클래스 파일을 읽어들여 바이트 코드를 실행하는 데 걸리는 시간을 최소화하기 위해 개발된 것으로, 자바 가상 머신이 특정 메소드를 실행할 때마다 플랫폼상에 사용되는 머신 코드(플랫폼으로 사용되는)로 컴파일해서 실행하고, 다시 해당 메소드가 실행될 때 컴파일된 머신 코드를 호출하기 때문에, 실행 속도를 단축시킨다.
실제 속도를 검사해 보면 대략 인터프리터 방법에서 2에서 20배까지 속도 향상을 보인다.
자바의 또 다른 단점은 응용 애플리케이션의 부족이다.
아직까지 자바가 웹의 치장 도구를 벗어나지 못하기 때문인데, 현재 썬이 업무용 애플리케이션을 지원하는 API를 비롯해 다양한 API를 개발하고 있으므로, 조만간 자바 데이터베이스나 업무용 프로그램이 대거 출시될 것으로 전망된다.

Q17 자바와 NC는 어떤 관계에 있나?

자바와 NC는 뗄래야 뗄 수 없는 관계다.
대부분의 NC 개발업체가 자바를 플랫폼으로 사용하고 있기 때문인데, NC의 개념, 즉 하드디스크가 없거나 적은 클라이언트가 대형 서버에서 프로그램을 필요할 때마다 가져와 사용하는 과정이 자바 애플릿과 맞아떨어진다.
더욱이 최근에는 NC의 구동 속도를 빠르게 만들기 위해 자바 칩과 자바 OS를 채택하는 추세이다.
자바 칩은 자바의 바이트 코드를 번역 없이 직접 실행하는 마이크로프로세서로, 썬을 비롯해 미쯔비시, LG, 록웰, 디지털이큅먼트 등의 업체들이 개발하고 있다.
특히 썬과 LG반도체는 1997년 9월에 자바 프로세서를 공동 개발하고 연말부터 양산에 들어갔는데, 이 자바 칩은 피코자바 코어 기술에 입출력 등의 주변장치를 온칩(OnChip)으로 넣었으며, NC는 물론 인터넷 TV, 셋톱 박스 등에 채용될 전망이다.
한편, 자바 OS는 썬이 자바 언어로 개발한 운영체제로, 컴퓨터를 켜면 다른 운영체제의 도움 없이 바로 자바 프로그램을 구동시킬 수 있는 상태가 되며, 인터넷 사용을 위해 핫자바를 기본적으로 제공한다.
현재 자바 OS는 1.1버전까지 나와 있는데, 이 운영체제는 주로 개발사들과 라이선스를 통해 배포되고 있기 때문에 개인적으로는 구하기 어렵다.

Q18 자바는 어떤 용도로 사용되며, 그 미래는?

자바의 응용 범위는 무궁무진하다.
일단 웹 애플릿에서 시작해서 요즘에는 일반 애플리케이션으로 확대되는 추세이다. 또, 업그레이드 부담이 없는 까닭에 웹서버, 메일 서버 등에도 채택되고 있으며, JDBC, RMI, CORBA 등이 한데 결합된 애플리케이션 서버에서는 과거 많이 사용되던 레전시(Legancy) 시스템과 유닉스, 윈도 NT 등을 연결하는 데 이용된다.
일부 전문가들은 앞으로 자바가 호출기, 전자 렌즈 등의 가전제품, 스마트 카드, 자동차 등에 적용돼 PC와는 별개의 시장을 형성할 것이라고 전망한다.
그러나 이 같은 자바 열풍에도 불구하고 그 미래는 여전히 불투명하다.
자바는 생긴 지 3년이 채 안 된 신생 프로그래밍 언어이다. 게다가 마이크로소프트의 공세도 심상치 않다.
하지만 현재의 자바 상승세는 계속 유지될 전망이다.
자바의 공식적인 권리를 가진 썬이 자바 지원과 개발에 열을 올리고, 반 MS 진영인 오라클, 넷스케이프, IBM 등이 순수 자바를 이용한 제품들을 계속 출시하고 있기 때문이다.
BLOG main image
가장·인간적인·인터페이스( Human Interface )
모든존재는목적을향해나아간다
by 건두부

카테고리

전체보기 (8)
Warehouse(Work) (4)
Think (4)

태그목록

달력

«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
tistory!get rss Tistory Tistory 가입하기!

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백