자바(1) - 자바란

Do it! 자바프로그래밍 입문을 보고 정리하는 글입니다.

자바를 쓰면 좋은 이유

  1. Write once, Run anywhere 자바는 한 번 작성하면, 어디서든 돌아간다.(Write once, Run anywhere)의 슬로건과 함께 특정 플랫폼에 종속되지 않고, 여러 플랫폼에서 실행할 수 있게 해준다. C같은 경우에는 윈도우 운영체제에서 컴파일하면 Test.exe같이 만들어 지는데, 이 프로그램은 윈도우에서만 실행이 가능하다. 그렇기에 리눅스에서 돌리고자 하면 리눅스 환경에 맞게 파일을 다시 작성해야 한다.

플랫폼, 프로그램이 실행되는 환경. 윈도우, 맥, 리눅스 등을 말한다.

반면, 자바는 가상머신개념을 도입하여 어느 환경에서든 같은 코드로 실행할 수 있게 해준다. 아래와 같은 순서로 작동한다.

  1. 우리가 작성한 파일(자바 소스 코드 확장자 .java)
  2. 자바 컴파일러를 통해 컴퓨터가 이해할 수 있는 바이트 코드로 변환(확장자 .class)
  3. 윈도우 or 리눅스 자바 가상 머신은 이 바이트 코드를 읽고 실행해준다.

예전에는 이런 변환 과정으로 실행 속도가 느리다는 평이 있었다는데 JIT(Just In Time)컴파일 방식으로 개선되어 문제가 없다고 한다.

JIT 컴파일러는 실행 시점에 기계어 코드를 생성하고, 같은 코드가 반복되면 이전에 만든 기계어를 재사용한다. 또한, 운영체제에 맞게 바이트 실행 코드로 한 번에 변환하여 성능이 대폭 상향되었다.

  1. 객체 지향 언어라 유지보수가 쉽고 확장성이 좋다. 객체 지향 프로그래밍이란 일의 순서대로 프로그래밍(절차지향)이 아닌 여러 객체의 협력을 통해 프로그램을 구현하는 것이다. 일례로 쇼핑몰 사이트에서의 상품 주문을 생각해보자. 이때 회원, 상품, 주문, 배송 등이 객체이고 이것들을 기반으로 서로 상호 작용하여 프로그래밍 하는 것이다. 객체 지향으로 프로그래밍하면 공통으로 사용하는 부분을 수정하지 않고도 프로그램에 새 기능을 쉽게 추가할 수 있다. 이를 통해 유지보수와 확장성이 좋아진다.

  2. 프로그램이 안정적이다. 자바는 C나 C++처럼 포인터를 사용하지 않아 메모리를 직접 제어할 수는 없다. 하지만, 메모리를 직접 제어하다 보면 오류가 발생할 수도 있는데, 이런 위험성이 없기에 안정되게 작성할 수 있다. 또한 동적 메모리 수거를 가비지 컬렉터라해서 주기적으로 동적으로 수거해가기에 메모리를 효율적으로 관리할 수 있다.

  3. 풍부한 기능을 제공하는 오픈 소스이다. 자바에는 기본 기능을 제공하는 클래스뿐 아니라 자료 구조, 네트워크, 입출력, 예외 처리 등 최적화 된 알고리즘을 라이브러리로 제공한다. 이를 JDK(Java Development Kit)라 한다. 검증 된 오픈 소스들을 활용해 빠르고 안전하게 작성할 수 있다.