[Java]자바란 무엇인가?

J·2021년 12월 20일
0

1. 자바(Java)란?

자바는 썬 마이크로시스템즈(Sun Micorsystems)에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어(object-oriented programming language)이다. 그 후 2010년에 오라클이 썬 마이크로시스템즈를 인수하면서 Java의 저작권을 소유하게 되었다.

2. 자바의 역사

  • 자바는 1991년 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작되었다.

  • 제임스 고슬링과 아서 밴 호프와 같은 썬의 엔지니어들은 가전제품에 탑재될 소프트웨어를 만드는 것을 목적으로 C++을 확장해서 사용하려 했지만 C++로는 그들의 목적을 이루기에 부족함이 존재하였다. 그래서 C++의 장점을 도입하고 단점을 보완한 Oak라는 언어를 개발하였다.

  • Oak의 등장 후 여러 종류의 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장하자 운영체제에 독립적인 Oak가 이에 적합하다고 판단하여 Oak를 인터넷에 적합하도록 개발 방향을 변경하면서 이름은 자바(Java)로 반경하였으며, 자바로 개발한 웹브라우저인 '핫 자바(Hot java)'를 발표하고 그 다음 해인 1996년 1월에 자바의 정식 버전을 발표하였다.

  • 그 당시만 해도 자바로 작성된 애플릿(Applet)은 정적인 웹페이지에 사운드와 애니메이션 등의 멀티미디어 적인 요소들을 제공할 수 있는 유일한 방법이었기 때문에 많은 인기를 얻었고 단 기간에 많은 사용자층을 확보할 수 있었다. 그러나 보안상의 이유로 최신 웹브라우져에서 애플릿을 더 이상 지원하지 않게 되었다.

  • 대신 최근 자바는 서버 쪽 프로그래밍을 위한 서블릿(Servlet)과 JSP(Java Server Page)로 많이 사용되고 있다.


3. 자바의 특징

1. 운영체제에 독립적

  • 기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서 많은 노력이 필요하였지만, 자바는 자바가상머신(JVM)과 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
  • 이처럼 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이기 때문에 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 활용해야 한다.
  • 그래서 자바로 작성된 프로그램은 운영체제와 하드웨어에 관계없이 실행 가능하며 이것을 Write once, run anywhere라고 표현하기도 한다.

2. 객체지향언어

  • 자바는 객체지향 프로그래밍언어(object-oriented programming language) 중의 하나로 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.

3. 자동 메모리 관리(Garbage Collection)

  • 자바로 작성된 프로그램이 실행되면, 가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 되며, 프로그래머가 보다 프로그래밍에 집중할 수 있도록 지원한다.

4. 네트워크와 분산처리 지원

  • 자바는 인터넷과 대규모 분산환경을 염두에 두고, 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.

5. 멀티쓰레드 지원

  • 일반적으로 멀티쓰레드(multi-thread)의 지원은 사용되는 운영체제에 따라 구현방법도 상이하며, 처리방법에도 차이가 존재하지만, 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 여러 쓰레드에 대한 스케줄링(scheduling)을 인터프리터가 담당하게 된다.

6. 동적로딩(Dynamic Loading) 지원

  • 보통 자바로 작성된 애플리케이션은 여러 개의 클래스로 구성되어 있다. 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다.
  • 또한, 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생하도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.

0개의 댓글