본문 바로가기
Java

[Java] 자바(Java)란 무엇일까?

by Ocean of Data 2022. 8. 27.

자바(Java)의 특징

자바(Java)는 방대한 라이브러리, 재사용이 가능한 코드, 다양한 실행 환경을 가지고 있는 하나의 거대한 플랫폼입니다. 자바를 사용하면 C나 C++ 언어보다 더 적은 노력으로 프로그램을 작성할 수 있고, 방대한 자체 라이브러리를 통하여 그래픽이나 네트워킹, 데이터베이스를 쉽게 사용할 수 있습니다. 또한, 한번만 작성해놓으면 코드를 변경하지 않고서도 다양한 종류의 컴퓨터에서 실행이 가능합니다.

 

2022년 8월 PyPL(PYPL PopularitY of Programming Language) 순위표

  • PyPL 순위는 특정 프로그래밍 언어의 튜토리얼이 구글에서 얼마나 많이 검색되었는지를 기준으로 순위를 평가하는 지수입니다. 여기서 자바(Java)는 출시된지 오래되었음에도 불구하고 순위 2위를 차지할 정도로 점유율이 여전히 높습니다. 오늘은 자바 프로그래밍 언어에 대해 알아보는 시간을 가지고자 합니다.

1. 자바의 역사

자바의 창시자, 제임스 고슬링(James Gosling)

  • 1991년에 제임스 고슬링(James Gosling)을 비롯한 썬 마이크로시스템 사의 Green 프로젝트팀에서는 가정용 전자제품에 사용할 수 있는 컴퓨터 언어를 설계하고 싶어했습니다. 가정용 전자제품은 일반 컴퓨터에 비하여 컴퓨팅 파워와 메모리가 부족하였기 때문에 언어가 간결해야 했습니다. 또한, 전자 제품에 많은 종류의 CPU¹가 탑재되기 때문에 특정한 CPU에 의존하면 안 되었습니다. 연구팀에서는 일종의 가상적인 컴퓨터인 가상 기계(virtutal machine) 개념을 도입하였고 고슬링은 운영체제 구현이 복잡한 C++을 대신 간결한 언어인 자바를 제작합니다. 자바는 다른 객체 지향 언어보다 배우기 쉬우며 버그가 적고 네트워크 기능을 내장한 덕분에 기계 중립적인 언어로 성장합니다. 이후 1993년 발표된 www(world wide web)와의 연동을 구현하면서 주목받기 시작해 지금까지도 사랑받는 언어가 되었습니다.
더보기

¶ ¹컴퓨터 시스템을 통제하고 프로그램의 연산을 실행 · 처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩입니다. 컴퓨터 안의 중앙 처리 장치(CPU)는 외부에서 정보를 입력받고, 기억하고, 컴퓨터 프로그램의 명령어를 해석하여 연산하고, 외부로 출력하는 역할을 합니다. 사람으로 치면 뇌와 같습니다. 

2. 자바의 버전

  • 1995년 5월, 자바 언어가 정식으로 발표되고 난 이후에 자바는 꾸준히 업그레이드되고 있습니다. JDK 1.0에는 수백 개에 불과하던 라이브러리가 현재는 4000개 이상으로 증가하였으며 초기 라이브러리의 대다수가 트렌드에 맞춰 사용 중단이 권고 되어 있습니다. 아래의 표는 자바 버전의 변천사를 나타냅니다.

자바의 버전 업데이트 내역

3. 자바 가상 기계(Java virtual machine)

  • C, C++ 등의 프로그래밍 언어는 소스 코드가 컴파일러에 의해 특정한 컴퓨터의 기계어로 변환되어 특정 컴퓨터에서만 사용할 수 있었습니다. 그러나 자바 컴파일러의 동작 과정은 달랐습니다. 실제 컴퓨터에 자바 가상 기계라는 소프트웨어를 씌워서 가상적인 컴퓨터를 생성하고, 가상 컴퓨터의 기계어인 바이트 코드(byte code)를 생성합니다. 이 바이트 코드는 자바 가상 기계에 의해 한 줄씩 해석되면서 다양한 컴퓨터에서 실행됩니다.
  • 자바 가상 기계를 가지고 있으면 어떤 바이트 코드도 다시 컴파일할 필요가 없이 자바 가상 기계 위에서 실행할 수 있습니다. 즉, 대부분의 컴퓨터 운영 체제(Mac, 윈도우, 리눅스)에서 변경없이 실행 가능합니다.

자바의 실행 과정(JVM은 자바 가상 기계를 의미합니다!)

4. 자바의 종류

  • 자바는 개발 분야에 따라 Java SE, Java ME, Java EE, Java FX로 나뉘어서 제공됩니다.

① Java SE(Standard Edition)

  • Java SE는 자바 언어의 기본적인 자료형과 객체에서부터 네트워킹, 보안, 데이터베이스 접근, 그래픽 사용자 인터페이스, XML 파싱에 사용되는 고수준의 클래스까지를 모두 정의합니다. Java SE 플랫폼은 자바 가상 기계, 컴파일러와 같은 개발 도구, 자바 웹 스타트와 같은 배포 기술을 포함하고 있습니다. 아래는 Java SE에서 제공하는 기술들을 요약한 그림입니다.

자바 SE의 구성

② Java EE(Enterprise Edition)

  • Java EE는 기업용 애플리케이션을 개발하는데 필요한 여러 가지 도구 및 라이브러리를 모아 놓은 것으로 Java SE 플랫폼 상에 구축됩니다. 이 패키지는 응용 서버, 웹서버, J2EE API, 엔터프라이즈 자바 빈즈(JavaBeans) 지원, 자바 서블릿 API와 JSP를 포함하며 Sun GlassFish 엔터프라이즈 서버도 포함하고 있습니다.

③ Java ME(Micro Edition)

  • Java ME 플랫폼은 핸드폰, PDA, TV 셋톱박스, 프린터와 같은 모바일 기기나 다른 임베디드 장치들에서 실행되는 애플리케이션을 위한 환경을 제공합니다. Java SE 일부분에 모바일 장치를 위한 특수한 클래스 라이브러리가 추가된 형태이며, Java ME에 기반을 둔 애플리케이션은 많은 장치 간에 이식이 가능하고 성능이 저하되지 않습니다. 하지만 안드로이드에 많이 밀리는 추세를 보이고 있습니다.

④ JavaFX

  • JavaFX 플랫폼은 애플리케이션 개발자들이 RIA(Rich Internet Application)²를 생성하고 배포하는 것을 돕는 자바 클라이언트 플랫폼입니다. 고성능의 하드웨어 가속 그래픽과 미디어 엔진 API를 제공하여 엔터프라이즈 클라이언트의 개발을 쉽게 해주며 Java EE 플랫폼 서비스의 클라이언트가 될 수도 있습니다.
더보기

¶ ²RIA는 웹 브라우저나 웹 플러그인, 샌드박스, 자바스크립트, 가상 기계 등의 기술을 통해 사용자에게 화려한 웹페이지를 제공하는 웹 애플리케이션입니다. RIA를 사용하는 플랫폼으로는 어도비 플래시, JavaFX, 실버라이트(Silverlight) 등이 있습니다.

5. 자바로 만들 수 있는 것

① 자바 애플리케이션(Java application)

  • 독립적으로 실행할 수 있는 일반 응용 프로그램을 의미하며 문자 기반이나 그래픽 사용자 인터페이스(Graphical user interface) 형태로 작성할 수 있습니다. 자바를 개발할 때 쓰는 도구 중 하나인 이클립스(eclipse)도 자바로 작성되었다고 하네요.

자바 애플리케이션의 예(대학교 때 만들었던 간단한 커피 주문 프로그램입니다 ㅎㅎ;;;)

② 자바 애플릿(Java applet)

  • 애플릿은 application + let을 조합한 합성어이며 이것은 단독으로 실행되지 않고 웹 브라우저 안에서 실행되는 작은 자바 프로그램을 의미합니다. 일반적으로 프로그램 크기가 작아서 www(world wide web)을 통하여 쉽게 배포할 수 있습니다.
  • 동작 원리로는 웹 언어인 HTML로 작성한 문서에 <APPLET> 태그를 사용하여 자바 가상 머신이 지정된 애플릿을 웹 서버로부터 다운로드하여 실행할 수 있도록 돕는 방식입니다.
  • 현재는 보안 문제로 인해 웹 브라우저에서 애플릿의 실행을 차단하고 있습니다.

③ 자바 서블릿(Java servlet)

  • 서블릿은 웹 서버에서 동작하는 서버 모듈로서 클라이언트의 요구를 받아서 그에 대한 처리를 한 후에, 실행 결과를 HTML 문서 형태로 클라이언트 컴퓨터에 전송해줍니다. CGI(common gateway interface)³와 유사하지만 자바의 기능을 모두 활용할 수 있어서 CGI보다 효율적입니다.

자바 서블릿의 실행 과정

더보기

¶ ³공통 게이트웨이 인터페이스(common gateway interface)의 약어로, 웹서버와 외부 프로그램 사이에서 정보를 주고 받는 방법이나 규약들을 말한다. 브라우저가 서버를 경유하여 데이터베이스 서버에 질의를 내는 등 대화형 웹페이지를 작성할 때 이용된다.
* 완전한 이해를 한 상태가 아니기 때문에 위 문장은 [네이버 지식백과] CGI [common gateway interface] (두산백과 두피디아, 두산백과)에서 인용한 문장임을 밝힙니다.

④ JSP(Java Server Page)

  • HTML안에 자바 코드를 넣어서 웹페이지와 사용자가 상호작용할 수 있도록 만든 것입니다. JSP는 서버에서 서블릿으로 변환 실행되고 실행 결과는 HTML 형식으로 사용자에게 보내집니다.

JSP의 실행 과정

⑤ 자바 빈즈(Java beans)

  • 자바로 작성된 컴포넌트를 자바 빈즈라고 합니다. 컴포넌트는 분산 네트워크 환경에서 다른 컴퓨터 내의 다른 컴포넌트들과 결합 및 재사용이 가능하기 때문에 애플리케이션을 제작할 때 용이합니다.

⑥ 안드로이드 애플리케이션

  • 모바일 운영체제 중 하나인 안드로이드는 운영 체제로는 리눅스(linux)를 사용하지만, 운영체제를 제외한 나머지 부분은 자바로 작성되어 있습니다. 하지만 모바일 기기는 데스크탑에 비해 처리 속도와 메모리가 뒤처지기 때문에 PC에서 쓰이는 표준 자바 가상 기계 대신 자체적인 가상 머신을 구현하게 되었습니다.
  • 안드로이드에서는 가상 머신에서 JIT 컴파일러를 없애버리고 가비지 콜렉터를 다시 작성했으며 클래스 파일에서 중복된 정보를 제거한 새로운 실행 파일 형식인 달빅 실행 파일(.dex)을 사용합니다. 이러한 자체적인 자바 가상 머신을 달빅(Dalvik) 가상 머신이라고 부르며, 데스크탑 환경과 다른 점은 바이트 코드를 달빅 실행 파일(.dex)으로 변환하여야 모바일 환경에서 실행할 수 있다는 점입니다.

안드로이드 애플리케이션 홈 화면


글을 마치며...

오늘은 자바 언어에 대해 소개하였습니다. 다음 시간에는 자바 컴파일러인 JDK(Java Development Kit)와 대표적인 자바 개발 툴 중 하나인 이클립스(eclipse)를 설치하는 방법에 대해 말씀드리고자 합니다. 정독해주셔서 감사합니다!

댓글