[Java/자바] 개요 Overview

특징

  • 단순 Simple

    • C/C++ 의 복잡한 기능(전위처리, 포인터 사용, 다중 상속, 구조체, goto문 사용 등)을 제외하여 단순하게 작성 가능
    • Garbage Collector에 의한 자동 메모리 관리로 메모리 해제를 신경쓰지 않아도 됨
  • 객체지향 Object-Oriented

    • 재사용성(reusability)을 높일 수 있음
  • 분산 처리 Distributed

    • 분산 환경에서 TCP/IP등의 프로토콜을 통해 효율적으로 실행할 수 있도록 설계된 언어

      • TCP/IP 네트워크 기능 내장
      • HTTP, FTP 등 프로토콜 라이브러리 제공
  • 인터프리터 Interpreter

    • 컴파일 언어임과 동시에 인터프리터 언어이다
    • 소스코드(.java)를 컴파일하여 ☞ 중간 코드(.class) = 바이트 코드를 기계어로 해석하여 ☞ 실행
  • 견고 Robust

    • 다양한 플랫폼 상에서 실행되기 위해 에러의 원인이 되는 요소들을 제거하거나 자동으로 해결

      • 포인터를 사용하지 않음
      • 자동으로 Garbage Collection 기능을 수행
      • 엄격한 데이터 타입의 검사를 통해 에러를 조기에 발견함
      • 실행 시간에 발생하는 에러를 처리함
  • 안전 Secure

    • .class가 인터프리터에 적재되면,

      1. 클래스 로더로 코드가 내 컴퓨터에서 온 것인지 다른 컴퓨터에서 온 것인지 먼저 분리
      2. 바이트 코드 검증기로 바이트 코드에 문제가 없는지 확인 후 인터프리터에 의해 코드 실행
        즉, 클래스 로더, 바이트 코드 검증기로 코드의 보안성을 높일 수 있다.
  • 플랫폼 독립 Architecture Netural

    • 사용하는 OS나 CPU등의 하드웨어 사양에 관계 없이 실행될 수 있음 by JVM(Java Virtual Machine)
    • 이식성이 높음
    • Write once, Run any where
  • 높은 성능 high Performance

    • Garbage Collection 기능을 통해 자동으로 메모리 관리가 가능 예) 메모리가 할당된 객체의 상태를 추적 관리하다가, 더 이상 참조되지 않으면 자동으로 할당된 메모리를 해제하여 불필요한 메모리 낭비를 방지할 수 있음
  • 멀티스레드 Multithread
    한 번에 여러 개의 스레드가 동시에 수행되는 과정으로 하나의 CPU가 여러 개의 프로그램을 동시에 수행하도록 함. 즉, 수행 속도를 빠르게 함
  • 동적 Dynamic

    • 자바 언어는 변화되는 환경에 잘 적응되도록 설계됨
    • 기존 프로그램에 영향을 주지 않으면서 라이브러리에 새로운 메소드/속성 추가 가능
    • 프로그램과 프로그램에서 사용되는 라이브러리와의 연결을 실행시간에 수행하여 변화를 곧바로 적용할 수 있음

플랫폼 Platform

프로그램이 실행될 수 있는 하드웨어 및 소프트웨어 환경을 의미

컴퓨터 하드웨어와 하드웨어를 제어하는 운영체제로 구성된 일반 플랫폼과는 다르게 자바 플랫폼은 소프트웨어만으로 구성되어 있으며 JDK(Java Developemt Kit)로 설치된다.

종류

  • Java SE: 가장 기본이 되는 에디션, 자바 언어 대부분의 패키지 포함
  • Java EE: 현업에서 사용되는 API들이 집약된 에디션 예) JSP, Servlet, JDBC 등의 기술들
  • JAVA ME: 모바일 기기 등에서 사용되는 API가 포함된 에디션이나 스마트폰의 자체 OS로 현재는 거의 사용되지 않음

구조

일반 플랫폼 자바 플랫폼
애플리케이션 자바프로그램
운영체제 자바 가상 머신 with 자바 API
다양한 하드웨어 플랫폼 다양한 하드웨어 플랫폼

JVM(Java Virtual Machine) 자바 가상 머신

  • 자바 언어로 쓰여진 애플리케이션을 실행시키는 기능 수행
  • 자바로 쓰여진 애플리케이션과 특정 운영체제 중간에 존재하여 서로를 분리함으로써 애플리케이션이 운영체제와 상관없이 동작할 수 있는 환경을 제공
  • 단, JVM은 운영체제와 직접적으로 통신을 해야하기 때문에 운영체제에 맞는 JVM을 설치해야 함.

JAVA API

  • 프로그래머가 필요로 하는 기본적인 class들을 거대한 라이브러리로 미리 만들어서 제공하는 것
  • 미리 제공되는 클래스를 표준 클래스라고 함
  • 자바 언어 자체는 작고 단순한 구조를 갖지만 많은 기능들을 API에서 제공하고 있음
  • 예) 자바 패키지(package)java.applet, java.awt, xjava.io, java.lang, java.net, javax.swing, java.util

자바 개발 환경 JDK Java Development Kit

자바는 개발 환경과 실행 환경(JRE, Java Runtime Environment)을 나눠서 설치할 수 있다.

  • JDK: 개발 및 실행에 필요한 모든 도구를 포함
  • JRE: JDK에서 몇 가지 도구를 제외한, 실행만을 위한 도구들로 구성됨. 따라서 JRE만으로는 소스를 컴파일 할 수 없어 컴파일러를 포함한 SDK(Software Development Kit)를 설치해야한다.

    • (+)JVM을 포함하고 있다. Server에는 JRE를 설치해놓고 개발단에는 JDK를 설치해놓으면 된다.

JDK? SDK?

JDK와 SDK는 동일한 의미이다. 1.2버전이 출시될 때 SDK라는 용어가 JDK라는 용어와 혼용되기 시작했는데 새로운 개념의 JDK라는 의미로 SDK라고 부르기 시작했다.

JDK 폴더 구조

  • bin: 자바 개발 환경과 관련된 각종 명령들을 포함, 자바 컴파일러와 인터프리터 명령도 여기에 포함됨.
  • include: 플랫폼 별로 필요한 JDK의 각종 헤더 파일들을 포함
  • jre: 자바 실행 환경 관련 명령어와 라이브러리를 포함한 폴더
  • lib: 자바 개발환경에서 사용될 라이브러리를 포함한 폴더

환경변수에 path를 추가한다는 것은 자바의 컴파일, 인터프리터 등에 필요한 명령들을 운영체제에 등록한다는 것을 의미. 모든 경로에서 자동으로 그 파일을 인식할 수 있게 만드는 것.


Hi! I'm @Yeseul Lee
Passionate for what I love

GitHubLinkedIn