gpffh1011

[자바의 의존성] 의존성과 라이브러리, 그리고 jar 본문

자바/관련상식

[자바의 의존성] 의존성과 라이브러리, 그리고 jar

gpffh1011 2020. 5. 14. 00:14
의존성(Dependency)

 

의존성이란 사전적으로 다른 것에 의지하여 생활하거나 존재하는 성질 이라는 의미를 가지고 있습니다. 자바에서의 의존성은 무엇일까요?

 

의사 코드

운전자가 자동차를 생산한다.
자동차는 내부적으로 타이어를 생산한다.

Java 로 표현

Car car = new Car();
Car() {
Tire tire = new Tire(); //Car 객체 생성자에서 타이어 생성
}

그리고 단순 무식하게 의존성이란?

의존성은 new 이다.
new 를 실행하는 Car 와 Tire 사이에서 Car 가 Tire 에 의존한다고 합니다.

결론적으로 전체가 부분에 의존한다고 표현할 수 있습니다. 더 깊이 들어가면 의존하는 객체(전체)와 의존되는 객체(부분) 사이에 집합 관계(Aggregation)와 구성 관계(Composition)로 구분할 수도 있지만 지금은 그저 전체와 부분이라고 받아들이시면 되고 전체가 부분에 의존한다고 기억해 주세요.

"프로그래밍에서 의존 관계는 new 로 표현된다!" 기억해 주세요.

 

1. 프로그래밍에서 의존 관계는 어떤 클래스에서 다른 클래스가 new를 통해서 인스턴스되느냐에 따라 결정된다.

2. 어떤 클래스의 기능이 다른 클래스의 기능에 의존하는 것이다.



출처: https://expert0226.tistory.com/189 [여름나라겨울이야기]

 

먼저 의존성이란 무엇일까요?

간단히 생성자 호출 즉 new 연산자 입니다

Spring.class

public Spring(){
new Java();
}

위의 코드는 Spring이라는 클래스 내에서 Java클래스를 호출합니다. 즉 Spring 클래스가 Java클래스를 의존한다고 말을하는 것 입니다

Java java = new Java();
Spring spring = new Spring(java);

간단한 위의 코드를 예시로 들어보면 java클래스를 생성하고 Spring 클래스를 생성할때 매개변수로 java를 넣어줍니다

이때 Spring 클래스에서 java클래스를 주입한다고 말을하는 것이며 이런식으로 주입을 하게된다면 어떤 점이 좋아질까요?

 

바로 코드의 단순화와 종속적이던 코드의 수를 줄일수가 있습니다


라이브러리(Library)


자바에서 라이브러리란?

 

- 자바에서 자주 사용되는 부분(함수)을 패키지로 모아 배포의 용이성을 위해 압축한 형태를 말한다.

- 언제든지 자유롭게 이용할 수 있도록 라이브러리를 압축해 놓은 파일 이름이 .jar 이다.

ex) 모르는 단어나 내용을 구글, 네이버에 검색하듯이 자바에서 모르는 class 내용이 나오면 라이브러리를 검색한다.

- 프로그램에서도 필요한 것만 가져다 쓸 수 있도록 라이브러리화 해두면 시간+수정이 아끼고 쉽기 때문이다.

 

 

자바 라이브러리 개요는?

 

- 프로그램 개발시 혼자가 아닌 여러사람이 개발하는 경우가 있다.

- 여러 사람이 공동으로 사용하게 되는 경우, 그 기능을 가각 소스 프로그램에 함수로 넣어 사용하는 것보다 라이브러리를 만들어 함께 사용할 수 있다.

 


자(JAR)

 


 

JAR(Java Archive, 자바 아카이브)는 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다.


JAR 파일은 ZIP 파일 압축 알고리즘 기반으로 만들어진 파일로서, 파일 확장자는 .jar이다.

 

컴퓨터 사용자들은 JDK에 포함된 jar 명령어를 이용하여 JAR 파일을 만들거나 압축을 풀 수 있다. JAR 안에서 파일 이름들은 유니코드 텍스트로 되어 있다.