안드로이드
- MVVM 디자인 패턴
- Databinding
- RxJava
관찰 가능한(Observable) 스트림을 사용하는 RxJava
(동시성 문제, 다중 이벤트 처리, 백그라운드 처리)
등의 문제를 아름답게 해결해준다
- 라이브러리
- Koin
- AppAuth
- STOMP API
- FCM : firebase-messaging
- Retrofit2
🖐DI(Dependency Injection; 의존성 주입)
- 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉
- 클래스 내부에서 객체를 생성하지 않고 외부에서 객체를 생성해 주입 받는 방식
- 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라 특정 객체에 필요한 객체를 외부에서 결정해서 연결시키는 것
👉DI로 얻을 수 있는 장점
- 클래스에 변화가 생기면 해당 의존성을 갖는 모든 클래스가 변경해야하는 문제를 해결해준다
- 객체 간의 의존(종속) 관계를 직접 설정할 수 있다
- 객체 간의 결합도를 낮출 수 있다
- OAuth(Open Authorization)
- 인증을 위한 오픈 표준 프로토콜이다
- 제 3의 앱이 자원의 소유자인 서비스 이용자를 대신하여 서비스를 요청할 수 있도록 자원 접근 권한을 위임하는 방법
- 쉽게 말하면, 구글, 페이스북, 카카오톡으로 로그인이 가능하도록 하는 API이다
- OpenID Connect가 OAuth 2.0을 기반으로 상위계층에서 좀 더 간편하게 인증을 처리할 수 있도록 고안되었다
- 신원확인 서비스(IDP)를 통해 보다 안전한 방식으로 사용자 정보를 제공한다
🖐SDK
- Software Development Kit 의 약자이며, 프로그래머들을 위해서 제공하는 개발 도구들이다.
- SDK 안에는 IDE(통합개발환경) 을 포함하는데, 이에는 여러 API, 디버깅, 문서 등 여러 도구가 들어가있다
- SDK 의 종류
안드로이드 SDK
: 안드로이드용 앱개발을 위한 도구JDK
: 자바 개발자를 대상으로 오라클에서 제공하는 도구
(Simple (or Streaming) Text Oriented Message Protocol)
는 텍스트 기반의 메세징 프로토콜이다SEND → request → response → Message
과정으로 메시지가 전송된다/app
, /topic
을 보낸다/app
으로 channel broker을 등록한다/topic
을 통해 통신한다(iOS, Android, Web 등)
앱으로 알림을 보낼 수 있다.Spring Boot Application
- Spring Boot
🖐디자인 패턴
- 객체를 어떻게 설정하고 객체 간 관계를 어떻게 정할 지 중요해짐
- 설계 개념을 설명하기 위해서 기존 개발 건 중에 설계가 잘 된 케이스들을 뽑아서 이름을 붙이고 목적과 용도, 그리고 구현 방법을 잘 정리해놓은 것이 바로 디자인 패턴이다
🖐라이브러리
- 어떠한 기능을 다른 사람들도 사용할 수 있도록 만들어 놓은 것
🖐프레임워크
- 애플리케이션을 개발할 때 사용하는 일종의 틀이다
- 프레임워크를 사용하면 여러가지 유용한 기능을 통해 개발자는 구현해야 하는 핵심 로직에 집중할 수가 있다
- IoC (Invertion of Control: 제어 역행)
- 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것
- 개발자는 프레임워크에 필요한 부품을 개발하고 조립하는 방식의 개발을 하게 된다.
- 조립된 코드의 최종 호출은 개발자에 의해서 제어되는 것이 아니라 프레임워크의 내부에서 결정된 대로 이뤄진다.
- DI (Dependency Injection; 의존성 주입)
- 제어의 역행이 일어날 때 스프링이 내부에 있는 객체들간의 관계를 관리할 때 사용하기위해 사용
- AOP (Aspect-Oriented Programming; 관점 지향 프로그래밍)
- 스프링 MVC 웹 애플리케이션과 RESTful 웹 서비스 프레임워크
- JDBC, JPA, JMS 지원
👉 스프링은 여러가지 모듈로 이뤄져 있어서 내가 필요한 모듈만 뽑아서 사용할 수가 있다
- 스프링의 여러가지 프로젝트 중 하나이다. (스프링 부트는 스프링 프레임워크라는 큰 틀에 속하는 도구)
- 설정할 내용도 굉장히 많은 스프링의 단점을 보완하여 자동화시켜 간단히 실행할 수 있는 것이 스프링 부트이다.
- 설정할 것도 거의 없고 그냥 실행 만 시키면 내장 서버에 배포된다.
- 내장 서버
- WAR 파일을 배포할 필요 없이 내장된 Tomcat, Jetty, Unertow 를 이용해 실행할 수 있다
- starter
(특정 목적을 달성하기 위한 의존성 그룹)
을 통한 dependency 자동화
- 라이브러리 관리가 간단해졌다
- 많이 사용하는 라이브러리를 모아놓은 스타터 (Starter) POM 파일로 메이븐 설정이 쉬워졌다
- jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다
- 라이브러리
- Websocket
- Lombok
- JPA (spring-boot-starter-data-jpa)
- Jsoup
- jbcrypt
- spring-boot-starter-mail
- firebase-admin
@Data
어노테이션@Builder
어노테이션✋ORM
- ORM(Object-Relational Mapping)은 객체와 관계형 DB를 매핑한다는 뜻이다
- 객체를 마치 자바 컬렉션에 저장하듯 저장할 수 있고, 이에 대해 ORM 프레임워크가 적절한 SQL을 생성해서 DB에 객체를 저장해준다.
✋Hibernate
- 자바 진영의 다양한 ORM 프레임워크 중 가장 많이 사용되는 성숙한 프레임워크
- ✋Bcrypt
- 단방향 암호화를 위해 만들어진 salting과 키 스트레칭을 구현한 해시 함수 중 대표적인 함수