Programing Language/Java

[Java] 자바 언어 기초(Java Language Basic)

vinedpillar 2022. 5. 10. 18:23

자바(Java)란?

  • 썬마이크로시스템즈에서 1995년 개발된 객체지향 프로그래밍 언어입니다.

  • 다양한 환경의 하드웨어에서 동작하는 프로그램을 만들기 위해 탄생했습니다.
    (당시 많이 사용되던 언어인 'C++'의 장점과 확장성이 부족하다는 단점을 보완)

  • 현재는 다양한 운영체제가 공존하는 웹 환경에서 적합한 언어로 인기를 끌고 있습니다.
    (국내에서는 전자 정부 프레임워크에 사용되면서 특히 백엔드 분야에서는 가장 보편적으로 사용)

  • 슬로건: 'Write Once, Run Anywhere'

 

 


자바의 주요 특징

  • 독립성(Independence)
    • 자바 이전의 언어들은 특정 CPU에서만 작동하거나, OS에 따라 다르게 작성해야 했는데,
      자바는 자바 가상 머신(Java Virtual Machine)에 의해 해당 OS나 CPU에 맞는 언어로 번역합니다.
    • 따라서 JVM만 설치되어 있는 환경이라면 모든 운영체제에서 실행이 가능하도록 만들어졌습니다.

  • 객체지향(Object Oriented Programing) 방식
    • 객체 지향 프로그래밍이란 모든 요소를 객체로 규정을 하고,
      해당 객체들을 연결하여 하나의 프로그램을 실행하는 방식으로 설계되었습니다.

      (객체를 부품화 하고, 이를 조립하는 개념)
    • 자바는 모든 기능을 객체로 구성하여 활용합니다.
    • 객체지향적으로 설계된 프로그램은 유지보수가 쉽고 확장성이 높습니다.

  • 함수형 프로그래밍(Functional Programing) 지원
    • 함수형 프로그래밍 방식인 람다식과 스트림을 이용하여 컬렉션 요소를 필터링, 매핑, 집계 처리하기가 용이해졌습니다.
      (자바 8버전부터 지원)

  • 자동 메모리 관리(Automatic memory management)
    • 자바는 가비지 컬렉터를 통해 사용하지 않는 메모리를 자동으로 수거하는 기능을 지원합니다.
    • 덕분에 개발자는 메모리를 관리하는 수고를 덜고, 핵심 코드에 집중할 수 있게 되었습니다.
      ( C, C++ 등 이전 언어는 개발자가 메모리를 제어해 줘야 했음)

 

 

 

자바의 구성

  • 자바 프로그래밍 언어(Java Programing Language)
    • 자바는 사람이 쉽게 이해할 수 있도록 만들어진 고급 언어입니다.
    • 자바 가상 머신(컴파일러)이 해석할 수 있는 문법(Syntax) 제공합니다.

  • 자바 개발 키트(Java Development Kit)
    • 자바 애플리케이션을 개발하기 위한 툴 세트로 JRE(실행 환경)와 JVM(가상 머신)을 포함합니다.
    • Oracle JDK(오라클 표준 JDK)와 Open JDK(사용자가 만든 오픈 소스 JDK)로 나뉘어집니다.

  • 자바 실행 환경(Java Runtime Environment)
    • OS 위에서 실행되고, 클래스 라이브러리 및 특정 Java 프로그램이 실행해야 하는 리소스를 제공하는
      소프트웨어 계층입니다.
    • 클래스 로더, 자바 API, 런타임 라이브러리 등을 포함합니다.

  • 자바 가상 머신(Java Virtual Mechine)
    • 자바는 중간에 JVM을 활용하기 때문에 자바 -> JVM -> 기계어 순으로 변환됩니다.
    • 프로그램이 실행되기 위해서 컴퓨터의 자원을 제어하는 OS가 정한 규칙을 따라야 하는데,
      자바는 JVM을 매개체로 이용하기 때문에 OS에 대해서 독립적으로 사용될 수 있습니다.
    • 하지만 JVM을 거치기 때문에 C, C++ 같이 OS에 다이렉트로 작동되는 언어에 비해서는 속도의 한계가 발생합니다.
    • JIT(Just In Time) 기법을 통해서 이러한 단점을 보완하고자 노력하고 있습니다.
      (JIT: 프로그램을 실행하는 시점에서 필요한 부분을 즉성해서 컴파일하는 방식)

  • 기타 유틸 프로그램(Util Program)

 

 

 

자바의 구분

  • Java SE(Standard Edition): 표준 에디션

  • Java EE(Enterprise Edition): 서버 페이지에 특화된 에디션

  • Java ME(Micro Edition): 임베디드 시스템에 특화된 경량 에디션