java ME (Micro Edtion) : Embedded
IoT (Embedded)
아트메가 128
아두이노 - 이탈리아
라즈베리파이 - 영국, 기능이 많고, 리눅스 설치java SE (Standard Edtion) : Java Application (PC, Android)
java EE (Enterprise Edtion) : Web Server Application
1. 스프링의 개요
큰 프로젝트를 할 때 좀더 빠르고 쉽게 만들수 있는 프레임워크다 .
대규모 프로젝트 : 역량 차이가 가장 큰 문제
- PM, 고급, 중급, 초급
검증된 아키텍쳐의 재사용과 일관성 유지 - 이미 검증된거를 가져가서 써라 ( 프레임워크를 사용하는 이유 )
IoC - 제어의 역전 (Inversion of Control)
- 객체지향언어 : class(개발자) 생성 해서 instance(Spring이 생성과 관리) 를 사용
- 대다수의 프레임워크 : 프레임워크가 class(프레임워크 제조사)를 제공 -> 개발자(인스턴스를 생성) 디자인패턴, 상속을 받고 인스턴스생성
DI - 의존성주입(Dependency Injection)
- view <-> Controller(model) <-> servce <-> repository
- 직접 개발자가 넣지말고 Spring이 처리 한다.
AOP - 관점지향 프로그래밍(Aspect Oriented Programming)
- 논리적인 업무 분리 -> 순서짜맞추기
- 1.개발자가 해야 할일 -> 수집, 전처리
- 2.Domain 지식을 가지고 해야 할일 -> 분석, 시각화
- 개발자가 수집, 전처리한 데이터를 분석, 시각화 로 단계별로 넣어줭
- 스프링은 설정 코드를 안붙이고, 설정에서 수집, 전처리, 분석, 시각화 코드를 끼워넣을 수 있다(눈에는 안보임)
- 기존에는 A 가 끝나야 B 진행가능하고 순서대로 작성했다 (A가 끝나야 B가 시작 할수있다)
- 객체 생성 할 기회가 낮고, 엄무의 이해도가 있으면 개발진행이 가능하다
- 동시에 개발이 가능하다
POJO - 순수한 자바 객체(Plain Old Java Object)
- 프레임워크를 사용할 때 의 유의해야 할점
- 프레임워크에서 제공한 클래스를 상속받아서 인스턴스를 사용하고 있는데 프레임워크나 클래스가 변경된다면?
스프링에 종속을 받지 않고도 만들수있다.
- 머신런닝 -> 알고리즘 구현 (예전에는 어렵더라) -> scikit-learn(현재) -> tensorflow -> pytoch
- tensorflow가 버전 업이 되면서 변경되면서 개발자는 계속 공부해야한다.
- 기본 알고리즘은 바뀌지 않는다
- 누군가에 종속되지 않으려면 가장 기본적인 부분을 공부해야 하지 않겠나
트랜잭션 처리를 위한 일관된 방법을 제공
- 트랜잭션을 몰라도 작업을 묶을 정도만 알면 스프링이 처리
영속성 - Mybatis(공공기관), Hivernate(카카오, 배민), JPA 등과 같은 프레임워크와 연동을 지원
편리한 MVC 구조를 가지고 WAS에 종속되지 않는 개발 환경
스프링 프로젝트 종류
Spring Boot(Spring Starter Project) : 간단하게 실행하고 배포가 가능한 수준의 애플리케이션을 만들 때 사용하는데 WAS 설정없이 실행이 가능하기 때문에 테스트 하기에 편리하지만 기존의 웹 프로젝트 설정과 다른 방법으로 사용해야 하고 JSP 설정은 별도로 수행
Spring Template Project(Spring Legacy Project): WAS를 사용하거나 이전에 Spring Project를 만들어 본 경우 사용하는 방식인데 WAS로 인한 리소스 소모가 심하다는 단점이 있지만 기존 프로젝트들이 이 방식으로 많이 만들어져 있음
java 버전 1.6 , 1.8 과의 고민
1) try~resource (1.7부터~)
2) 람다 스트림API(빅데이터) 함수형 프로그래밍 (1.8부터~)상속의 단점
프레임워크 사용의 단점 <--> 알고리즘 공부이유