[객체지향프로그래밍] 1. java 시작 -2

Zoe·2022년 4월 16일
0

1. Java API

자바 API

  • Application Programing Interface
  • JDK에 포함된 클래스 라이브러리. 주요한 기능들을 미리 구현한 클래스 라이브러리 집합.
  • API에서 정의한 규격에 따라 클래스 사용.

자바 패키지

  • 서로 관련된 클래스들을 분류하여 묶어 놓은 것
  • 계층 구조 : 클래스의 이름에 패키지의 이름도 포함, 다른 패키지에 동일한 이름의 클래스 존재 가능
  • 자바 API는 JDK에 패키지 형태로 제공됨. -> 필요한 클래스가 속한 패키지 import하여 사용
  • 개발자가 자신의 패키지를 생성 가능

2. 모듈 프로그래밍 (JAVA9 ~)

모듈화 : Java9에 정의된 새로운 기능

  • 모듈: 자바 패키지들과 이미지, XML 파일 등의 자원들을 묶은 단위
  • 모듈 프로그래밍 : 자바 응용 프로그램을 직소 퍼즐 연결하듯 필요한 모듈을 연결하는 방식으로 작성

자바 플랫폼의 모듈화

  • 실행 시간에 사용되는 자바 API의 모든 클래스들을 모듈들로 분할
  • 모듈화의 목적
    - 세밀한 모듈화, 자바 응용프로그램이 실행되는데 필요 없는 모듈 배제
    - 작은 크기의 실행환경 구성, 하드웨어가 열악한 소형 IoT 장치 지원

3. 자바 응용의 종류

데스크톱 응용 프로그램

  • PC 등 데스크톱 컴퓨터에 설치되어 실행
  • 자바 실행 환경이 설치된 어떤 컴퓨터에서도 실행 (다른 프로그램의 도움 없이 단독 실행)

서블릿 응용프로그램

  • 서블릿 (servlet) : 웹 서버에서 실행되는 자바 프로그램
  • 데이터 베이스 서버 및 기타 서버와 연동하는 복잡한 기능 구현 시 사용
  • 사용자 인터페이스가 필요없는 응용
  • 웹 서버에 의해 실행 통제

안드로이드 앱

  • 구글의 주도로 여러 모바일 회사 모여 구성한 OHA (Open Handset Alliance)에서 만든 무료 모바일 플랫폼

4. 자바의 특성

플랫폼 독립성

  • 자바 프로그램은 플랫폼에 상관없이 어디서든 실행 가능

객체지향

  • 상속성, 다형성, 캡슐화

클래스로 캡슐화

  • 클래스 내에 모든 변수(필드), 함수(메소드) 구현
    (클래스 안에서 새로운 클래스 작성 가능)

소스(.java)와 클래스(.class)파일

  • 하나의 소스 파일에 여러 클래스 작성 가능
    - 클래스는 하나만 가능. 소스 파일의 이름과 public으로 선언된 클래스 이름은 같아야 함

  • 컴파일 된 클래스 파일에는 클래스는 하나만 존재

  • 다수의 클래스를 가진 자바 소스를 컴파일 하면 클래스마다 별도의 클래스 파일 생성

    실행 코드 배포

  • 실행코드: 한 개의 class 파일 또는 다수의 class 파일로 구성

  • 여러 폴더에 걸쳐 다수의 클래스 파일로 구성된 경우 ->jar 파일 형태로 배포 가능

  • main() 메소드
    - 자바 응용프로그램의 실행은 main()에서 시작
    - 하나의 클래스 파일에 하나 이상의 main() 메소드 존재 불가. (각 클래스 파일이 main() 메소드 포함하는 것은 상관 없음)

패키지

  • 관련된 여러 클래스를 패키지로 묶어 관리 (폴더 개념)

멀티 스레드

  • 자바는 운영체제의 도움 없이 자체적으로 멀티 스레드 지원 (C/C++ 등에서는 멀티 스레드 운영체제 API 호출)

가비지 컬렉션

  • 자바는 응용 프로그램에서 메모리 반환 기능 없음 (할당, new 만 존재)
    -> Dangling Pointer 현상을 방지하기 위함
  • 가비지 : 할당 후 사용되지 않은 메모리
  • 자바 가상 기계가 자동으로 가비지 회수

실시간 응용 시스템에 부적합

  • 자바 응용 프로그램은 실행 도중 예측 불가한 시점에 가비지 컬렉션 실행
    -> 일정 시간 내에 반드시 실행 결과를 내야하는 실시간 시스템에는 부적합

안전함

  • 타입 체크 엄격, 포인터 개념 없음

실행 속도 개선을 위해 JIT 컴파일러 사용

  • 자바의 속도 저하: 인터프리터 방식으로 바이트 코드 실행
  • JIT 컴파일링 기법으로 개선 : 실행 도중 바이트 코드를 해당 CPU의 기계어 코드로 컴파일, 해당 CPU가 기계어를 실행
profile
모른다는 말로 다가가 새로운 기술을 반갑게 맞이하고 적용하여 새로운 문제 해결을 꿈꿉니다.

0개의 댓글