Java 언어의 기본 구조

신범철·2022년 6월 30일
0

자바

목록 보기
13/20
post-custom-banner

자바 언어의 기본 구조

Java의 탄생

java는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체지향적 프로그래밍 언어이다.

Java의 특징

  1. 단순(Simple)
    • C(절차 지향) + c++(객체 지향) 언어를 기초로 하지만, C언어의 복잡한 기능을 제외 하여 코드를 단순하게 작성 가능. 예를 들어 C는 malloc를 사용하여 동적메모리를 할당하고, free로 해제하는 귀찮은 작업이 있는데 자바는 GC(Garbage Collector)에 의한 자동 메모리 관리로 할당된 메모리 해제를 신경 쓸 필요 없다.
  2. 객체지향(Object-Oriented)
    • 자바는 객체 지향 언어로 객체를 사용하여 프로그램을 작성한다. 이로써 재사용성(Reusability)을 높일 수 있다. 고로 유지보수가 쉽고 확장성이 높다.
  3. 분산 처리(Distributed)
    • 기본적으로 TCP/IP 라이브러브리가 포함되어 있고, HTTP 프로토콜에 대한 라이브러리 지원
  4. 인터프리터(interpreter)
    • 자바는 인터프리터 언어인 동시에 컴파일 언어이다. 아래와 같이 실행됨
    • 소스코드(.java) ▶︎ 컴파일(Compile): javac ▶︎ 중간코드(.class): 바이트 코드, 클래스 파일 ▶︎ 기계어로 해석(Interprete): java ▶︎ 실행
  5. 견고(Robust)
    • 자바는 높은 신뢰성을 보장하는데 그 이유로는 포인터 사용 x, GC 기능, 엄격한 데이터 타입 검사, Runtime 에러 처리를 보장하므로 높은 신뢰성을 보장한다.
  6. 안전(Secure)
    • 자바는 컴파일시에 엄격한 검사를 통해 프로그램 실행 시 발생할 수 있는 장애를 미리 방지한다. 클래스 로더, 바이트코드 검증기가 코드를 검사한다.
  7. 플랫폼 독립적(Architecture Neutral)
    • JVM을 통해 어떤 운영체제, CPU와 상관없이 실행 가능하다. 고로 이식성이 좋다.
  8. 멀티스레드(Multithread)
    • 자바는 멀티스레드를 지원한다. 이는 한 번에 여러 개의 스레드가 동시에 수행되는 과정으로, 하나의 CPU가 여러 프로그램을 동시에 수행하므로 수행속도가 증가.
    • 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공한다.
  9. 동적(Dynamic)
    • 실행 시에 모든 클래스가 로딩되는 것이 아니라 필요한 시점에 클래스를 로딩한다.
    • 애플리케이션의 변경 사항도 비교적 적은 작업으로 처리 가능

자바 언어의 단점

  • 자바는 높은 신뢰성를 보장하고 컴파일 언어이면서 인터프리터 언어이기 때문에 컴파일언어(C, C++)에 비해 속도가 떨어진다.
  • 파이썬의 비해 코드가 길어진다.

Java JVM, JRE, JDK

JVM

  • JVM은 자바 가상머신(Java Virtual Machine)의 약자이다.
  • 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)를 실행할 수 있다.
  • JVM이 있기에 플랫폼이 독립적일 수 있다.
  • 즉 아래 사진과 같이 윈도우, 리눅스 어디서든 실행 가능하다.

JRE

  • JRE는 자바 실행 환경(Java Runtime Environment)의 약자이다.
  • JRE는 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다. JRE는 JVM의 실행환경을 구현했다고 할 수 있다.

JDK

JDK는 자바 개발도구(Java Development Kit)의 약자이다.
JDK는 JRE + 개발의 필요한 도구(javac)들을 포함한다.

결론

자바 개발 도구인 JDK를 이용해 개발 프로그램은 JRE에 의해 가상의 컴퓨터인 JVM 상에서 구동된다.

profile
https://github.com/beombu
post-custom-banner

0개의 댓글