Notice
Recent Posts
Recent Comments
Link
관리 메뉴

브래의 슬기로운 코딩 생활

JAVA 프로그래밍 10주차 정리 본문

2-1/JAVA 프로그래밍

JAVA 프로그래밍 10주차 정리

김브래 2023. 5. 9. 18:00

Java

Language Fundamentals
Token, variable, Data type - type conversion, Operator
Statement, Array, String, Method(or Function)

OOP

연관된 Method(연산)와 자료구조(속성)를 정의한 Class - Object
Inheritance, Abstract Class, Interface, Polymorphism
Inner Class, Nested Class
Package, Exception Handling

Additional

Enum, Lambda (Functional Interface)
Generic, JCF(Java Collection Framework) - ArrayList, List, Map, Set
Stream, I/O,
향후 : Thread, JDBC

https://docs.oracle.com/en/java/javase/17/docs/api/index.html
https://docs.oracle.com/en/java/javase/17/ // 자바 참고 사이트
 

JDK 17 Documentation - Home

The documentation for JDK 17 includes developer guides, API documentation, and release notes.

docs.oracle.com

 

JDK 17 Documentation - Home

The documentation for JDK 17 includes developer guides, API documentation, and release notes.

docs.oracle.com

 

JDK 17 Documentation - Home

The documentation for JDK 17 includes developer guides, API documentation, and release notes.

docs.oracle.com



 * MVC Model(or Pattern) : Model, View, Controller 나누어 소프트웨어 개발하는 방법론
 * MVC Model 2 + Service Pattern : 업무 로직(business logic) 세분화
 * DTO(Data Transfer Object) : 데이터 전송 객체 (주고 받는 데이터)
 * DAO(Data Access Object) : 데이터 접근 객체 (데이터 처리)

JPMS (Java Platform Module System)


패키지(package)

what

연관된 클래스, 인터페이스, 열거형, 애노테이션 등들의 모음 - 디렉토리와 대응되는 계층 구조를 가짐
 

why or benefit

- 연관성 있는 클래스들의 분류를 편리하게 하여 관리를 손쉽게 할 수 있다.
- 개발자가 같은 클래스 이름으로 개발을 하여도 이름 충돌을 피할 수 있도록 네임스페이스(namespace) 관리를 제공한다.
- 접근 권한을 조정할 수 있다.
 

패키지 선언

선언 구문 구조: package packageNameList;
 

패키지 사용

사용 구문 구조

import packageNameList.ClassName;

-ClassName 이라는 이름의 클래스만 사용(실행 시 로딩)
 

import packageNameList.*;

- 패키지에 포함된 모든 클래스들을 사용(실행 시 로딩)

디폴트 패키지(default package)

 
소스 코드에 package 정보를 명시하지 않아서  패키지 이름이 없는 패키지
 

특징

- 현재 작업 디렉토리를 대상 디렉토리로 사용함

- 간단하여 테스트 프로그램 작성시 사용함

 
- 다른 패키지에 포함된 클래스들이 접근할 수 없음, import 할 수 없음

JAR (Java Archive) 파일

what

 
연관된 패키지나 클래스 파일들을 묶어서 만든 파일
 
- 여러 개의 파일을 하나의 파일처럼 관리하고 배포할 수 있음, pkzip을 기반으로 함

자바 모듈(Module) 개요

등장 배경

플랫폼의 모듈화 필요성 증가

- Java 9부터 자바 API의 모든 클래스들(자바 실행 환경)을 패키지 기반에서 모듈들로 완전히 재구성
 

응용프로그램의 모듈화

- 클래스들은 패키지로 만들고, 다시 패키지를 모듈로 만듦
- 모듈 프로그래밍은 어렵고 복잡. 기존 방식으로 프로그램 작성
 

정의

여러 패키지와 이미지 등의 자원을 모아 놓은 컨테이너
하나의 모듈을 하나의 .jmod 파일에 저장
 

특징

모듈성은 패키지 위에서 더 높은 수준의 집계를 추가
하나 이상의 패키지를 가짐

 

모듈화의 목적

Java 9부터 자바 API를 여러 모듈(99)로 분할

- Java 8까지는 rt.jar의 한 파일에 모든 API 저장
 

응용프로그램이 실행할 때 꼭 필요한 모듈들로만 실행 환경 구축

- 메모리 자원이 열악한 작은 소형 기기에 꼭 필요한 모듈로 구성된 작은 크기의 실행 이미지를 만들기 위함
 

모듈의 현실

Java 9부터 전면적으로 도입
복잡한 개념
큰 자바 응용프로그램에는 개발, 유지보수 등에 적합
현실적으로 모듈로 나누어 자바 프로그램을 작성할 필요 없음
 

자바 API 모듈 파일들

자바 JDK에 제공되는 모듈 파일들

자바가 설치된 jmods 디렉터리에 모듈 파일 존재
- .jmod 확장자를 가진 파일 (java 11 – 72 modules -> java 17 – 71 modules) //$Java_HOME\jmods
- 모듈 파일은 ZIP 포맷으로 압축된 파일
 
모듈 파일에는 자바 API의 패키지와 클래스들이 들어 있음
jmod 명령을 이용하여 모듈 파일에 들어 있는 패키지를 풀어 낼 수 있음