관리 메뉴

너와 나의 스토리

[Java 기초부터 다시] 1. 자바 소개 - 자바 설명 / 특징 / JVM 본문

Programming Language/Java

[Java 기초부터 다시] 1. 자바 소개 - 자바 설명 / 특징 / JVM

노는게제일좋아! 2021. 3. 24. 17:26
반응형

"이것이 자바다"라는 책을 읽으며 JAVA를 기초부터 정리해 보려고 합니다.

 

 

자바란?

  • 자바는 오크(Oak)라는 언어에서부터 시작되었다. 이후 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고, 이름도 자바로 변경되었다.
  • 지금의 자바는 스마트폰을 비롯해서 각종 장비와 데스크톱에서 실행되는 애플리케이션, 그리고 금융, 공공, 대기업 등의 엔터프라이즈 기업 환경에서 실행되는 서버 애플리케이션을 개발하는 중추적인 언어로 자리매김하고 있다.

 

 

자바의 특징

  1. 이식성이 높은 언어이다.
    • 이식성: 서로 다른 실행 환경을 가진 시슽템 간에 프로그램을 옮겨 실행할 수 있는 것을 말함.
    • 예를 들어, 윈도우에서 실행하는 프로그램을 리눅스 또는 유닉스에서 실행할 수 있는 것 -> 이식성이 높음
  2. 객체 지향 언어이다.
    • 객체 지향 프로그래밍: 부품에 해당하는 객체를 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법
    • 객체 지향 프로그래밍에서 사용되는 언어를 객체 지향 언어라고 한다.
    • 자바는 아무리 작은 프로그램이라도 객체를 만들어 사용한다. 처음부터 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.
  3. 함수적 스타일 코딩을 지원한다.
    • 함수적 프로그래밍은 대용량 데이터의 병렬 처리, 이벤트 지향 프로그래밍에 적합하다.
    • 자바는 함수적 프로그래밍을 위해 람다식을 Java 8부터 지원한다. 
    • 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.
  4. 메모리를 자동으로 관리한다.
    • C++과 달리 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 자바가 직접 메모리를 관리한다. 
    • 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되는 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다.
  5. 다양한 애플리케이션을 개발할 수 있다.
    • 자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다.
    • 자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션(edition) 형태로 정의하고 있다. 
      • Java SE(Standard Edition): 기본 에디션
        • 자바 프로그램들이 공통적으로 사용하는 JVM(Java Virtual Machine)를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다. 자바 프로그램을 개발하고 실행하기 위해서는 반드시 Java SE 구현체인 JDK(Java Development Kit)를 설치해야 한다.
      • Java EE(Enterprise Edition): 서버용 애플리케이션 개발 에디션
        • Java EE는 분산 환경(네트워크, 인터넷)에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다. 서버용 애플리케이션으로는 Servlet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트인 EJB(Enterprise Javaa Bean) 그리고 XML, 웹 서비스(Web Services) 등이 있다.
  6. 멀티 스레드를 쉽게 구현할 수 있다.
    • 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요하다. 
    • 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
  7. 동적 로딩(Dynamic Loading)을 지원한다.
    • 자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생성된다. 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.
  8. 막강한 오픈소스 라이블러리가 풍부하다.
    • 자바는 오픈소스(Open Source) 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 넘쳐난다. 검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성이 높은 애플리케이션을 쉽게 개발할 수 있다. 

 

 

 

 

JVM(Java Virtual Machine)

  • 운영체제는 자바 프로그램을 바로 실행할 수 없는데, 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것이 JVM이다. 
  • 즉, 자바를 실행시키는 가상의 기계라고 해서 JVM이라고 한다. 
  • 운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에, 운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것이다. 
  • 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적이다. 자바 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행해야 하므로 JVM은 운영체제에 맞게 설치되어야 한다. 
  • JVM은 JDK 또는 JRE를 설치하면 자동으로 설치되는데, JDK와 JRE가 운영체제별로 제공된다. 
  • 자바 프로그램의 실행 단계: 소스 코드(*.java) -> [컴파일러(javac.exe)] -> 바이트 코드 파일(*.class) -> [JVM 구동(java.exe)] -> (윈도우용 JVM이였다면) 윈도우에서 실행할 수 있는 기계어로 번역 후 실행됨

 

 

 

출처: 

- [이것이 자바다]

반응형
Comments