[용어] API와 SDK

SHY(code poet)·2024년 4월 12일
1

DI(Dependency Injdection, 의존성 주입)
외부에서 객체 간의 관계(의존성)를 결정해 주는 것. 즉, 객체를 직접 생성하는 것이 아니라 외부에서 생성 후 주입시켜 주는 방식

Plugin
프로그램이나 소프트웨어에 추가 기능을 제공하기 위해 확장 모듈로서 동작하는 소프트웨어 구성 요소. 쉽게말해, 내가 사용하고 있는 프로그램에 어떠한 기능을 더하는 것.

SDK(Software Development Kit) 👉 서버에서 미리 만들어 놓은 기능
소프트웨어 개발 키트. 쉽게말해, 개발하는 데 필요한 도구와 라이브러리의 집합이자 다른 앱의 기능이나 데이터를 가져다 쓸 수 있도록 API를 제공해주는 소프트웨어
(빌드도구,컴파일러,디버거,API,라이브러리[비슷한 특성을 가진 플러그인의 집합] 등을 포함)

API(Application Programming Interface) 👉 요청과 응답에 대한 약속
앱들 사이의 통신 수단이자 상호작용 방법. 즉, 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 상호작용 체계(프로토콜)
※프로토콜: 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계

  • 데이터 교환 형식: JSON(Key&Value)
  • 프로토콜 체계: RESTful(⊂ HTTP/API 아키텍처 스타일)
    (요청: CRUD를 하나의 주소로 관리 / 응답: HTTP 상태코드)
  • 주소: https:// 서버IP주소(은행)/API주소(창구)/가져가기로 한 데이터(잔고)
    with. 요청변수(Request Parameter)
  • EX) 은행과 미리 약속해둔 곳에(은행창구), 약속해둔 데이터를 들고가야(신분증)
    잔고를 알려준다.(응답) ⇒ 즉, 식당에서 메뉴판을 제공하듯, 리소스를 잘 활용할 수 있도록 API 제공

RESTful API
REST 자체는 HTTP 프로토콜의 아키텍처 스타일 중 하나이고, 이러한 REST의 원칙을 지킨 API를 RESTful API라고 한다.

CRUD(HTTP매서드)

  • Create(생성해줘): POST
  • Read(불러와줘): GET
  • Update(바꿔줘): PUT(전체)/PATCH(일부)
  • Delete(지워줘): DELETE

HTTP 상태코드
200번대 코드: 잘 됐어
400번대 코드: 잘 안 됐고, 클라이언트의 요청에서 문제가 있어
500번대 코드: 잘 안 됐고, 서버의 응답에서 문제가 있어

JSON

  • JavaScript Object Notation의 축약어
    -값(key-value)로 이루어진 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷(데이터 형식)이다.
    네트워크를 통해 데이터를 주고받는데 사용되는 경량의 데이터 교환 형식으로, JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법이다.

Java Converting 라이브러리

  • GSON: JSON으로 받은 포맷에서 데이터를 꺼내올 경우, parcer라는 프로그램을 이용하여, 데이터를 하나하나 분석하는 방식으로 이루어졌지만, Google에서 제공하는 GSON이라는 오픈소스 라이브러리를 사용하면, 이 JSON포맷의 데이터를 Java 혹은 Kotlin 프로그래밍 언어의 객채로 변환하거나, 이 객체를 다시 JSON형태로 변환하는 '직렬화/역직렬화'작업을 간단하게 처리할 수 있게된다.
    (단, 이때 받아오는 data 포맷구조와 동일하게, data class와 annotation을 만들어 주어야 GSON이 이에 맞추어 convert해준다.)
  • Moshi: Square 사에서 개발한 오픈 소스 JSON 직렬화 라이브러리로, 자바와 Kotlin에서 JSON 데이터를 처리하는 데 사용

SDK & API

  • SDK가 API보다 더 큰 개념
  • SDK는 컴포넌트 자체이고, API는 컴포넌트를 활용하기 위한 상호작용 수단
  • EX)내 소프트웨어에서 구글 지도 SDK 설치 -> 구글 지도 SDK에서 제공해주는 API 사용

🤔 안드로이드 버전 / API level
플랫폼 버전 및 API 수준

  • 안드로이드 플랫폼 버전
    : Android 1.0부터 시작하여 Android 15.0까지 나온 상태
    (24년 기준)

  • API level
    : 안드로이드 플랫폼 버전에서 제공하는 프레임워크 API 수정 버전을 고유하게 식별해주는 정수 값

  • minSDK
    ⇒ "앱이 실행될 수 있는 최소 API 레벨"
    (권장사항- 사용자층과 시장 점유율을 고려하여 설정할 것)
    : 애플리케이션이 실행하는 데 필요한 최소 api레벨지정.
    안드로이드 시스템은 시스템의 api레벨이 지정 값보다 낮은 경우 사용자가 앱을 설치하는 것을 방지한다.
    ※ 추천 api: 런타임 퍼미션을 사용하는 버전 23(마시멜로)
    -> 대략 95%의 기기 커버
    ※ 모든 기기가 전부 사용할 수 있도록 minSDK를 가장 낮은 버전으로 설정하는 것이 과연 가장 좋은 방법일까?
    -> 단점: 최신 api 기능 및 개발도구 사용 제한 / 버전에 따른 코드 분기처리로 인한 코드 복잡도 증가 / 오래된 버전의 경우 보안 취약 / 사용자 분포가 현저히 적기 때문에 비효율적
    (EX. CalendarProvider API는 플랫폼 버전4.0(API레벨 14)이 출시될 때 나온 API이다.이 기능이 포함된 앱이 만약 플랫폼 버전4.0이하 버전일 경우, 실행했을 때 4.0이전 버전에는 캘린터API가 존재하지 않음으로 앱이 정상 실행되지 않는다.)

  • targetSDK
    : "앱이 최적으로 실행되도록 설계되고 테스트 된 API 레벨"
    (권장사항- "최신 안드로이드 버전에 맞출 것")
    API = targetSDK
    -> targetSDK에서 제공하는 기능을 기기에서 모두 사용가능
    API < targetSDK
    -> 해당 기기의 OS 버전을 기반으로 동작함
    API > targetSDK
    -> targetSDK에 버전을 맞추어진다.
    (compatibility mode enable)
    그러나, 이렇게 사용하는 경우는 거의 없고, minSDK보다 targetSDK가 더 높도록 설정한다. 사용자에게 최신 수준의 개선 사항 혜택을 주기 위함.

  • compileSdkVersion
    : 컴파일 시 사용되는 Android API 레벨
    ※ 보통 targetSDK와 동일하며 둘 다 최신 SDK를 가리켜야 한다.

결론: targetSDK과 compileSdkVersion을 최신 안드로이드 버전에 맞추되, minSDK(점유율)를 고려하여 버전에 따른 코드 분기처리도 함께 해줄 것!

JDK: Java 프로그램을 개발하기 위해 필요한 도구 모음이다. JDK는 Java 컴파일러, 디버깅 도구, 자바 가상 머신 (JVM) 등을 포함하고있다.

📜Reference
안드로이드 버전/api 레벨/sdk 버전
의존성 주입
JDK

profile
진정한 개발자는 코드를 두려워하지 않는다. 오히려 코드가 그를 두려워한다.

0개의 댓글