API 란? (정리전)

jungnoeun·2022년 7월 12일
1

jsp

목록 보기
2/14

기본 패키지와 사용자 정의 로직

아래 코드를 보자.

System.out.println(1);

지금까지 무수히 많은 예제에서 사용했던 코드다. 이것이 화면에 어떤 내용을 출력하는 것이라는 건 이미 알고 있다. 하지만 도대체 우리가 정의한 적이 없는 이 명령은 무엇일까?를 생각해볼 때가 왔다. 문법적으로 봤을 때 println은 메소드가 틀림없다. 그런데 메소드 앞에 Sytem.out이 있다. System은 클래스이고 out은 그 클래스의 필드(변수)이다. 이 필드가 메소드를 가지고 있는 것은 이 필드 역시 객체라는 것을 알 수 있다. 그리고 System을 인스턴스화한적이 없음에도 불구하고 필드 out에 접근할 수 있는 것은 out이 static이라는 것을 암시한다.

그럼 System 클래스는 어디서 나타난 것일까? 아래의 코드를 보자.

package org.opentutorials.javatutorials.library;
public class LibraryDemo1 {
    public static void main(String[] args) {
        System.out.println(1);
    }
}

아래의 코드는 위의 코드와 같다.

package org.opentutorials.javatutorials.library;
import java.lang.*;
public class LibraryDemo1 {
    public static void main(String[] args) {
        System.out.println(1);
    }
}

2행의 import java.lang.*;이 보이는가? 패키지 java.lang은 자바 프로그래밍을 하기 위해서 필수적인 클래스들을 모아둔 패키지다. 따라서 사용자의 편의를 위해서 자동으로 로딩을 하고 있는 것이다.

클래스 System은 바로 이 java.lang의 소속이다.

자바 에플리케이션을 만든다는 것은 결과적으로 자바에서 제공하는 패키지들을 부품으로 조립해서 사용자 정의 로직을 만드는 과정이라고 할 수 있다.

API

API란 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미한다. Java SE(JDK)를 설치하면 자바 시스템을 제어하기 위한 API를 제공한다. 자바 개발자들은 자바에서 제공한 API를 이용해서 자바 애플리케이션을 만들게 된다. 패키지 java.lang.*의 클래스들도 자바에서 제공하는 API 중의 하나라고 할 수 있다.

자바 플랫폼 위에서 동작하는 자바 애플리케이션을 개발하는 개발자들은 자바 API를 사용하게 된다. 그런데 자바에서 제공하는 API는 방대하기 때문에 이것을 이용하기 위해서는 API의 목록과 사용법이 체계적으로 정리된 문서를 이용할 수 있어야 한다.

아래 페이지는 Java의 각종 문서들을 모아둔 웹페이지다.

http://docs.oracle.com/javase/

이중에서 API Documentation을 클릭한다. 아래와 같은 웹사이트가 보일 것이다.

각 구획 별 의미는 아래와 같다.

  1. 자바에서 기본적으로 제공하는 API 패키지의 리스트
  2. 1번에서 선택한 패키지들만 보여주는 클래스 리스트
  3. 2번에서 선택한 클래스의 맴버들을 보여주는 리스트

자바를 통해서 어떤 문제를 해결하기 위해서는 우선 자신이 필요한 로직이 담겨있을 것으로 기대되는 패키지의 후보군을 선정해야 한다. 자바에서 제공하는 기본 패키지들은 아래와 같은 기능을 담고 있다.

  • java.lang
    자바 프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하고 있다.
  • java.util
    프로그램을 제어하기 위한 클래스와 데이터를 효율적으로 저장하기 위한 클래스들을 담고 있다.
  • java.io
    키보드, 모니터, 프린터, 파일등을 제어할 수 있는 클래스들의 모음
  • java.net
    통신을 위한 기능들을 담고 있다.

실습을 해보자. 자바 API 문서에서 System.out.println 메소드를 직접 찾아보자.






왜 API 문서를 써야 하나?

API는 Application Program Interface의 약자입니다. 아마 Interface라는 용어도 자주 들으셨을텐데요. Interface는 그것을 사용하는 사람과 직접대면하는 부분을 의미합니다. 웹 프로그래밍에서는 API를 나누는 기준이 하나의 요청을 통해서 동작하는 응답까지를 포함하는 부분이 됩니다.

자판기에 비교를 하자면 Application Program은 자판기의 기능이고 API는 그 기능을 사용할 수 있는 버튼을 의미한다고 할 수 있습니다. 그 버튼이 어디에 붙어 있는지는 중요하지 않습니다. 하지만 그 버튼을 누르면 우리는 그것을 통해 어떤 음료수를 마실 수 있는지 알 수가 있습니다.

API 역시 비슷한 역할을 합니다. 해당 기능이 어떤 결과를 가져다주고 또 그 기능을 어떻게 쓸 수 있는지를 알 수 있는 부분이 API입니다. API 문서는 이러한 사용법을 그 기능을 활용하려고 하는 개발자들에게 알려주는 역할을 합니다. 그러니 자신이 만든 기능이 잘 활용되게 하고 싶다면 API를 잘 정의하는 것이 중요합니다.




API는 어떻게 정의해야 하나?

API를 정말 가장 간단하게 정의를 한다면 다음과 같을 것입니다.

/**
	 * CompanyInfo.admin 은 
	 * ~을 처리한다
	 * @param request 무엇을한다
	 * @param session 뭘한다
	 * @return 회사목록
	 */
	@RequestMapping("/CompanyInfo.admin")
	public ModelAndView companyList(HttpServletRequest request, HttpSession session){}

이건 .자동 기능을 통해서 생성된 문장들인데요. 여기에 맞는 내용을 채워 넣으면 API 문서의 가장 기본적인 형태가 될 것입니다. 여기서 더 세밀한 API문서를 보고 싶다면 java 등 다양한 언어의 기능이 정의된 API 문서들을 참고해주세요. API의 기능뿐 아니라 세부적인 생성자나 필드 메소드의 기능들까지 상세하게 정의하고 있는 것을 볼 수 있습니다.
프로그래밍 언어의 API는 어떻게 정의되어 있는가?
여기서는 Java의 API 문서를 예로 들겠습니다. Java의 문자열 객체인 String Class의 API는 어떻게 정의되어 있을까요? (Java API 문서)

세부적인 내용을 다 가지고 오기는 어려우니 간략하게 목차로 소개를 하도록 하겠습니다.

Class String

  • 클래스 소개

  • Fields Summary(필드 요약)

  • Constructor Summary(생성자 요약)

  • Method Summary(메소드 요약)

  • Field Detail(필드 상세정보)

  • Constructor Detail(생성자 상세정보)

  • Method Detail(메소드 상세정보)

프로그래밍 언어의 API 문서라고 해서 특별할 것은 없습니다. 그 기능을 어떻게 사용할 수 있는지에 대한 내용들이니까요. 사실 대부분의 API는 영문이라서 저처럼 영어에 익숙하지 않은 사람은 처음에는 기죽기 쉽습니다. 내용을 파악하는데 오래 걸리기도 하고요. 하지만 익숙해지면 조금씩 속도가 빨라지니 겁먹지 말고 도전하시길 추천드립니다.




API 문서가 왜 중요할까?

API가 중요한 이유 중 하나는 처음에 언급한 것처럼 내가 정의한 기능을 다른 개발자가 쉽게 쓰고 응용할 수 있게 하기 위해서입니다. 개인적으로 무엇이든 공유할 수 없다면 가치는 절반 이하로 떨어진다고 생각합니다. 다른 사람은 물론 자신도 기억하기 쉽지 않은 코드는 중요한 내용을 날려써 알아보기 어려운 메모장 같은 게 아닐까요?

API가 중요한 또 하나의 이유는 이미 개발되어 있는 다양한 기능이나 라이브러리를 잘 활용할 수 있기 위해서 입니다. 전 처음에 훌륭한 개발자란 하나부터 열까지 멋진 로직으로 모든 것을 만들어 갈 수 있어야 한다고 생각했지만 지금은 좀 생각이 바뀌었습니다. 이미 셀 수도 없이 다양한 언어와 라이브러리들이 나와 있고 각 언어와 라이브러리에는 유용한 기능들이 가득합니다. 물론 기능을 직접 구현할 수도 있겠지만 이미 좋은 기능이 만들어져 있다면 그것을 활용하는 것이 훨씬 효율적이겠죠. 그러니 이미 완성된 기능을 잘 활용할 수 있는 것 또한 훌륭한 개발자의 요건이라고 생각합니다.

흔히 개발 3년차 정도까지는 인터넷 검색을 통해서 필요한 기능을 찾을 수 있지만 3년차 이상이 되면서 정말 중요한 기능들을 구현하려고 한다면 점점 더 API문서들을 많이 봐야 한다고 합니다. 그러니 계속해서 API 문서에 익숙해질 필요가 있겠죠.

어떤 언어나 라이브러리의 모든 기능들을 세세하게 설명해주고 있는 곳은 각 언어와 라이브러리의 API문서 뿐입니다. 만약 어떤 기능을 구현해야 한다면 가장 먼저 해야 할 일은 그 기능이 이미 구현되어 있지 않은지 검색해보고 만약 이미 존재한다면 해당 기능의 API를 꼼꼼히 읽어보는 것입니다.

API를 깔끔하게 정리하고 또 API를 잘 찾고 활용할 수 있는 개발자가 되었으면 좋겠네요 :)

출처
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=magnking&logNo=220963852841
https://opentutorials.org/course/1223/6222

profile
개발자

0개의 댓글