[Java의 정석]Chapter1.자바를 시작하기 전에(01~03)

Hello_Wendy·2022년 3월 28일
2

자바의 정석

목록 보기
1/61
post-thumbnail

Chapter 1. 자바를 시작하기 전에

01. 자바(JAVA)란?

  • 객체지향 프로그래밍 언어
  • 운영체제(Operating System, 플랫폼)에 독립적
  • 실행환경(JRE), 개발도구(JDK), 라이브러리(API) 제공

02. 자바의 역사

  • 1991년 오크(Oak)라는 언어에서부터 시작
  • 가전제품이나 PDA와 같은 소형기기에 사용할 목적이었지만, 인터넷에 적합하도록 개발 방향을 바꾸면서 이름을 자바(Java)로 명칭
  • 1996년 1월에 자바의 정식 버전 발표

03. 자바의 특징

  • 운영체제에 독립적
    -자바 응용프로그램은 운영체제나 하드웨어가 아닌 자바가상머신(JVM)하고만 통신하고, JVM(Java Virtual Machine)이 자바 응용프로그램으로부터 전달 받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달
    -자바로 작성된 프로그램은 운영체제에 독립적이지만, JVM은 운영체제에 종속적임
    💡
    [기존언어] ↔ [운영체제, 하드웨어]
    [자바언어] ↔ [JVM] ↔ [운영체제, 하드웨어]

    💡

    .java 파일 : 사람이 읽을 수 있는 text 언어로 이루어짐(프로그래밍 영역)
    .class 파일 : .java파일을 컴파일 한 후 생성되는 파일이며, Bytecode로 이루어짐. JVM이 .class 파일을 각 운영체제에 맞게 기계어로 변환하고 실행

    .java 파일(text 언어) → 컴파일 →
    Hello.class생성(bytecode) → 실행 → "Hello, world." 출력
    
      
     즉, .java파일을 컴파일러에 의해 컴파일 되면,
     .class파일 후 .class파일의 bytecode를 JVM이 읽고,
     이를 각 Operating System에 맞는 기계어로 번역하여 OS에 전달
     
  • 객체지향언어
    -객체지향 프로그래밍 언어(Object-oriented programming language)
    -객체지향 개념의 특징 : 상속, 캡슐화, 다형성

  • 단순화된 언어
    -간결하면서도 명료한 객체지향적 설계

  • 자동 메모리 관리(Garbage Collection)
    -자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 됨(프로그래밍에 집중 가능)

  • 네트워크과 분산처리 지원
    -풍부하고 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원

  • 멀티쓰레드를 지원
    -일반적으로 멀티쓰레드(multi-thread)의 지원은 사용되는 운영체제에 따라 구현방법과 처리방식이 상이함. 그러나 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과 상관없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉬움
    -여러 쓰레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당

  • 동적 로딩(Dynamic Loading)을 지원
    -보통 자바로 작성된 애플리케이션 여러개의 클래스고 구성. 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용 가능
    -일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션 작성 가능

profile
안녕 나의 새로운 세상

0개의 댓글