1 분 소요

Java

자바란

자바 소개

  • 가전제품에 사용될 오크(Oak)라는 언어에서부터 시작
  • 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되고 자바로 이름 변경
  • 현재 스마트폰을 비롯한 각종 장비, 데스크톱 애플리케이션, 기업 환경에서 실행되는 서버 애플리케이션 개발

특징

  • 이식성 높은 언어
    • 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것
    • 자바 프로그램은 소스 파일 다시 수정하지 않아도 자바 실행 환경(JRE: Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능
  • 객체 지향 언어
    • 객체를 만들고 객체와 객체를 연결하여 목적에 맞는 프로그램 구현
    • 캡슐화, 상속, 다형성 기능 지원
  • 함수적 스타일 코딩 지원
    • 대용량 데이터 병렬 처리, 이벤트 지향 프로그래밍에 적합
    • 함수식 프로그래밍을 위한 람다식 지원
    • 컬렉션의 요소를 필터링 / 매핑 / 집계 처리 쉬워짐, 코드 간결
  • 메모리 자동 관리
    • 개발자가 직접 메모리에 접근 불가
    • 자바가 직접 관리 ⇒ Garbage Collector
  • 다양한 애플리케이션 개발
    • 다양한 운영체제에서 실행되는 프로그램 개발 가능
    • Java SE(Standard Edition)
      • 자바 가상 기계(JVM), 자바 개발에 필수적인 도구, 라이브러리 API 정의
      • 자바 프로그램을 개발하기 실행하기 위해 JDK 설치 필수
      • Java EE : 분산 환경에서 서버용 애플리케이션 개발을 위한 도구 및 라이브러리 API 정의
        • 서버용 앱 : Servlet/JSP 이용한 웹 애플리케이션, 분산 처리 컴포넌트 EJB, XML 웹 서비스
  • 멀티 스레드
    • 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리할 때 필요
    • 스레드 생성 및 제어와 관련된 라이브러리 API 제공
  • 동적 로딩 지원
    • 앱이 실행될 때 모든 객체가 생성되지 않고 객체가 필요한 시점에 클래스를 동적 로딩해서 객체 생성
    • 해당 클래스만 수정하면 되므로 전체 앱 다시 컴파일할 필요 없음 ⇒ 유지보수 용이
  • 막강한 오픈소스 라이브러리
    • 자바는 오픈소스 언어 ⇒ 수많은 오픈소스 라이브러리

JVM(자바 가상 기계)

  • 자바는 중간 단계의 바이트 코드이기 때문에 해석하고 실행할 수 있는 가상의 운영체제 필요 ⇒ JVM
  • 실제 운영체제를 대신해 자바 프로그램 실행하는 가상의 운영체제 역할
  • 운영체제별 프로그램 실행, 관리 방법 다르기 때문에 운영체제와 자바 프로그램을 중계하는 JVM 사용
  • 바이트 코드는 모든 JVM에서 동일한 실행결과 보장, JVM은 운영체제에 종속적.
  • 장점
    • 한번 작성하면 어디서든 실행된다
  • 단점
    • JVM에 의해 기계어로 번역되고 실행되기 때문에 C, C++의 컴파일 단계에서 만들어지는 완전한 기계어보다 속도 느림
    • 최적화된 JIT 컴파일러를 통해 속도 격차 줄이고 있음

개발 순서

  • .java 소스 파일 작성 ⇒ 컴파일러(javac.exe)로 바이트 코드 파일(.class)생성 ⇒ JVM 구동 명령어(java.exe) 실행