곰돌이 놀이터

[JAVA] 자바란 무엇인가? 본문

Back-End/JAVA

[JAVA] 자바란 무엇인가?

달나라 곰돌이 2018. 6. 19. 11:40

8년을 끈 구글과 오라클의 자바(JAVA) 저작권 전쟁이 오라클의 승리로 막을 내렸다.


그렇다면 과연 자바가 무엇이길래 구글과 오라클에서 이리도 오랫동안 라이센스 분쟁을 벌였던것일까?


썬 마이크로시스템즈를 인수한 오라클에서는 자바를 아래와 같이 설명한다.


 Java는 Sun Microsystems가 1995년에 처음 출시한 프로그래밍 언어이자 컴퓨팅 


 플랫폼으로, 수 많은 응용 프로그램 및 웹 사이트가 Java를 설치하지 않으면 작동되지 


 않으며, 이 수는 매일 늘어나고 있습니다. Java는 빠르고, 안전하며, 안정적입니다. 


 랩톱에서 데이터 센터, 게임 콘솔에서 과학용 수퍼 컴퓨터, 휴대 전화에서 인터넷에 


 이르기까지 Java 기술은 어디에나 존재합니다.


.. 그렇다 위의 설명만으로는 자바를 이해했다고 보기 어렵기때문에 좀 더 자세히 알아보도록 하자.


자바의 탄생과 역사                  

                   

■ 자바는 1991년 썬 마이크로시스템즈(Sun Microsystems)사에서 제임스 고슬링(James Gosling)이 고안하였고 오크(Oak), 혹은 그린(Green) 이라고 불렸다.

■ 오크는 최초 가전제품에서 쓰일 프로그램의 개발이 목적이었지만 인터넷과 웹의 출현으로  자바의 초점은 가전제품에서 인터넷으로 옮겨지게 되었고, 이후 1995년 이름을 자바로 변경하게되었다.

■ 고슬링의 목표는 C/C++ 스타일의 언어와 가상 머신을 구현하는 것으로, Write Once, Run Anywhere(한 번 쓰고 어느 곳에도 실행하는것을 약속하였다.

■ 자바는 인기플랫폼에 무료 런타임을 제공하였고, 대부분의 브라우저들은 곧 자바 애플릿(Java Applet)을 웹페이지 안에서 실행할 수 있었으며 자바의 인기는 급상승 하였다.

■ 2009년 썬 마이크로시스템즈는 오라클과 인수 합병되었고 자바에 대한 권리 및 유지보수 또한 오라클로 넘어가게 되었다.


자바의 특징                     

                                                                           

■ 자바는 객체지향 언어이다.

  • 객체지향 프로그래밍(OOP, Object Oriented Programming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립연결하여 전체 프로그램을 완성하는것을 말한다.
  • 객체를 만들기 위해서는 설계도인 클래스를 작성하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다.
  • 객체지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원한다.

■ 이식성이 높다.

  • 서로 다른 실행환경을 가진 시스템간에 프로그램을 옮겨 실행할 수 있는것을 말한다.
  • 자바는 자바 실행환경(JRE)이 설치 되어 있는 모든 운영체제에서 실행이 가능하다

■ 인터프린터 언어이다.

  • 컴파일 언어인 동시에 인터프리터 언어이다.
  • 텍스트 소스를 컴파일 하여 2진 파일(클래스 파일)로 만든 다음 자바 런타임이 클래스 파일을 인터프리트 하면서 실행한다.
  • 시스템에 무관한 2진 파일을 만듬으로써 자바는 컴파일 언어에 가까운 속도와 시스템 독립성을 얻을수 있다. 

■ 메모리를 자동으로 관리다.

  • C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야한다. 만약 이 작업을 성실하게 해주지 않는다면 프로그램은 불완전해지고 갑자기 다운되는 현상을 겪을수도 있다.
  • 자바는 개발자가 직접 메모리에 접근할 수 없으며 메모리는 자바가 직접 관리한다.
  • 객체 생성시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.
  • 덕분에 개발자는 메모리 관리의 수고를 덜고, 핵심기능 코딩에 집중할 수 있다.

■ 멀티 스레드 구현이 쉽다.

  • 운영체제에 따라 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성제어와 관련된 라이브러리 API를 제공하므로 운영체제에 상관없이 멀티 스레드를 쉽게 구현할수있다.

■ 동적 로딩을 지원한다.

  • 실행시에 모든 클래스가 로딩되는것이 아니라 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점을 지닌다.
  • 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 장성할 수 있다.

■ 분산환경을 지원한다.

  • 자바에는 TCP/IP 라이브러리가 기본적으로 포함되어 있다.
  • 또한 httphtp 프로토콜을 기본적으로 지원한다.

■ 오픈소스 라이브러리가 풍부하다.

  • 자바는 오픈소스(Open Source) 언어이고 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스의 양이 방대하다.
  • 고급 기능을 구현하는 코드를 작성하는 대신 검증된 오픈소스 라이브러리를 사용하면 애플리케이션을 다시 컴파일 할 필요가 없다.
  • 따라서 유지보수를 쉽고 빠르게 진행 할 수 있다.
단점   
  
  • 자바는 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느리다.
  • 자바는 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함이 있다.
  • 자바는 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다.
끝으로 

오늘은 자바의 역사와 특징들을 간단히 정리하여보았다.

다음엔 자바의 특징에 대해 코드와 함께 조금 더 자세하게 알아보도록 하겠다.


Comments