다라다라V
article thumbnail
728x90
반응형

 

최근 컴퓨터는 우리에게 친숙한 PC부터, 스마트폰, 태블릿 등으로 다양해졌습니다. 이러한 컴퓨터 하드웨어를 작동시키는 것을 소프트웨어(software) 혹은 프로그램(program)이라고 부릅니다. 컴퓨터가 실행할 프로그램을 작성하는 언어를 프로그래밍 언어라고 합니다. 프로그래밍 언어는 0과 1인 이진수 명령어로 구성된 기계어(machine language)로부터 가급적 표현하기 쉬운 상징적 니모닉 기호를 사용한 언어인 어셈블리어(assembly language)로 발전했습니다. C언어와 같은 사용자 친화적 언어로 진화하던 프로그래밍 언어는 편의성을 추구하는 객체 지향 언어까지 발전했습니다.

우리가 앞으로 배울 자바(JAVA)는 객체지향언어의 대표적인 언어입니다.

📌 자바 개요

📚 자바의 역사

1991년, 선마이크로시스템스(SUN Microsystems)의 제임스 고슬링(James Gosling)을 중심으로 가전제품에 사용할 프로그래밍 언어가 개발되었습니다. 기존 프로그래밍 언어의 문제점을 보완하는 특징을 가졌습니다.

  • 다시 컴파일하지 않아도 다른 시스템에서 사용할 수 있는 플랫폼(Platform)에 독립적인 언어입니다.
  • 내장형 시스템(Embedded System)에 적합하게 메모리 사용량이 적습니다.
  • C++ 언어를 모델로 한 객체지향적 프로그래밍 언어입니다.

이 언어가 발전하여 1995년 SunWorld 95에서 자바(Java)라는 이름으로 새로운 기술을 발표되었고, 웹 기반 응용 프로그램에서 많이 사용되게 되었습니다. 2009년에는 오라클이 선마니크로시스템즈를 인수하면서 오라클에서 자바를 제공하게 되었습니다.


📚 자바 개발 목적

  1. 플랫폼 호환성 문제의 해결
    : 재컴파일하지 않고 다른 플랫폼에서 사용가능한 언어가 필요했습니다.

  2. 플랫폼 독립적인 언어
    : 모든 플랫폼에서 호환성을 가져, 네트워크(웹)에 최적화한 언어가 필요했습니다.

  3. 메모리 사용량이 적고 다양한 플랫폼을 갖는 가전 제품에 적용
    : 적은 메모리로 사용가능한 내장형 시스템에 알맞은 언어가 필요했습니다.

 


📌 자바 프로그램의 실행 방식

📚 기존 언어의 플랫폼 종속성

 개발자는 프로그래밍 언어 문법에 맞추어  프로그램의 기초 설계도와 같은 소스코드(Source Code)를 작성합니다. JAVA 언어만의 특징을 위해 프로그래밍 언어의 기초인 C언어로 작성된 소스코드가 실행파일이 되는 과정을 보여드리겠습니다.

  1. 개발자는 C언어 문법에 맞추어 프로그램 소스코드를 작성합니다. 작성되는 소스코드는 사람이 알아보기 쉬운 고급언어로 작성됩니다.
  2. 컴퓨터는 0과 1인 이진수로 된 명령어만 알아들을 수 있습니다.  C언어로 작성된 소스코드는 컴파일러(Compiler)라는 번역기에 의하여 해당하는 플랫폼이 이해할 수 있는 기계어 코드로 변환됩니다. 이렇게 변환된 코드 파일을 오브젝트 파일이라고 합니다.
  3. 하나의 완성된 프로그램을 위해서는 수행에 필요한 모든 오브젝트 파일을 모아야합니다. 이 과정은 링커(Linker)에 의해 이루어지고, 링커가 만들어준 파일을 실행파일이라고 합니다.

2번 과정에서 컴파일러는 프로그램이 실행될 대상의 컴퓨터 CPU나 운영체제의 종속적으로 소스코드를 번역해준다고 하였습니다. 때문에 기존의 언어로 작성된 프로그램은 플랫폼 종속적이라는 문제를 가지게 되었습니다.


📚 자바의 플랫폼 독립성

 자바(JAVA)는 다른 언어들과 다르게 자바 가상 기계(JVM, Java Virtual Machine) 만 알아들을 수 있는 바이트 코드(Byte Code)로 소스코드를 변환합니다. 이 파일은 컴퓨터의 CPU에서 직접 실행되는 것이 아닌 JVM이 인터프리터 방식으로 실행시킬 수 있습니다. 프로그램을 실행시키고자 하면 JVM이 바이트 코드를 각 운영체제에 알맞은 기계어 코드로 변환시킵니다. 이를 토하여 JVM이 설치된 모든 컴퓨터에서는 플랫폼 독립적으로 코드를 작성할 수 있도록 합니다.

 

 

📃 WORA (Write Once Run Anywhere)

  • 한 번 작성된 코드는 모든 플랫폼에서 바로 실행
  • 기존 언어의 플랫폼 종속성을 극복하여, 운영체제나 하드웨어와 관계없이 자바 프로그램을 실행시킬 수 있음
  • 자바소스(.java)를 컴파일 한 목적 코드(.class)를 바이트 코드(byte code)라고 하며
    JVM에게 해석되어 실행되므로 자바 언어로 작성된 코드들이 플랫폼 독립성이 가지게 함

📃 자바 가상 기계(JVM, Java Virtual Machine)

  • 자바 어플리케이션이 실행되는 공간
  • 자바 컴파일러가 생성한 바이트 코드를 현재 컴퓨터가 인식할 수 있는 명령으로 변환하여 실행시킵니다.

 

📚 자바의 개발 및 실행

📃 개발

  • 자바 프로그램은 여러 자바 소스코드(.java)로 나누어 개발합니다.
  • 바이트 코드를(.class)를 하나의 실행 파일로 묶는 링크 과정이 없습니다. 이 특징으로 인하여 자바 프로그램은 적은 메모리를 사용하여 프로그램이 동작하도록 할 수 있습니다.

📃 실행

  • main() 메서드를 가진 클래스부터 실행이 시작됩니다.
  • JAVA는 링크 과정이 없는 대신에 JVM이 필요할 때마다 다른 바이트 코드를 로딩합니다.

📌 자바 플랫폼

📚 자바 API(Application Programming Interace)

자바 API(Application Programming Interace)는 JDK에 포함되어 주요 기능을 미리 구현해놓은 라이브러리입니다. 개발자는 API를 이용하여 더 쉽고 빠르게 프로그램을 개발할 수 있습니다. 


📚 자바 플랫폼

자바 플랫폼(Java Platform) 프로그램이 실행되는 하드웨어와 소프트웨어 환경을 말합니다. 자바 플랫폼은 JRE(Java Runtime Environment) 또는 JDK(Java Development Kit)만 설치하여도 구축할 수 있습니다. JRE는 자바 응용 프로그램이 실행될 때 필요한 소프트웨어들인 JVM과 자바 API가 포함되어 일반 사용자는 JRE만 있어도 자바 프로그램을 실행시킬 수 있습니다. JDK는 자바 개발자를 위한 상업용 소프트웨어로 개발도구와 JRE로 구성되어 있습니다.


📚 자바 배포판

자바는 개발 환경에 따라 다양한 배포판이 제공됩니다. 

  • Java EE(Enterprise Editon) : 기업용 배포판, 기업용 응용 프로그램, 웹 서버 응용프로그램 등에 필요한 개발 도구 및 라이브러리 제공
  • Java ME(Micro Editon) : 모바일용 배포판, 임베디드 장치에서 실행되는 응용 프로그램 개발시 사용
  • Java SE(Standard Editon) : 자바 표준 배포판

📚 자바 프로그램의 종류

  • 자바 응용 프로그램 (Java Application)
    : 독립적으로 실행될 수 있는 일반 응용 프로그램을 말합니다.
  • 자바 애플릿 (Java Applet)
    : 웹 서버에서 웹 클라이언트로 전소오디어 웹 브라우저 안에서 실해오디는 프로그램
  • 자바 서블릿 (Java Servlet)
    : 웹 서버에서 실행되는 서버용 자바 프로그램
  • JSP (Java Server Page)
    : HTML 안에 자바 코드를 포함, 서블릿으로 변환되어 실행됨
  • 안드로이드(Android) SDK

📚 자바의 특징

앞으로 우리가 배워볼 자바의 큰 특징들입니다.

  • 플랫폼 독립적
  • 객체지향
  • 클래스로  캡슐화
  • 운영체제의  도움없이  자체적으로  멀티스레드  지원
  • 가비지  컬렉션
    : 프로그램 내에서 사용되지 않는 메모리는 JVM이 자동으로 회수합니다.
  • 안전하고  프로그램  작성이  쉬움
    : 타입 체킹이 엄격하고 명시적인 포인터의 개념이 없습니다.
반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!