결론
이클립스, sts는 개발도구
이클립스 = 기본 상태의 개발도구 = 순정
이클립스에서 마켓들어가서 메이븐, spring 이것저것 다운받아서 튜닝가능
STS = 이미 튜닝 되있는 이클립스
통합 개발 환경 (IDE : Integrated Development Environment) 중의 하나로 IDE는 에디터, 컴파일러, 디버그 등 프로그래밍에 필요한 툴이 하나의 인터페이스로 통합되어 사용 가능한 개발 환경을 말한다.
이클립스, 비주얼 스튜디오 등이 있다.
이클립스
이클립스는 JAVA를 기반으로 만들어졌다. 원래는 IBM의 IBM VisualAge용 소프트웨어 개발 툴로서 만들어졌으나, 제작 도중 방향이 바뀌어서 관련 소스 등을 모조리 공개하는 자유 소프트웨어가 되었다.
운영체제의 제한 없이 어디서든 사용이 가능하다
sts
Spring Framwork를 이용한 프로젝트를 진행하다 보면 이클립스와 STS(Spring Tool Suite )를 많이 사용하게 된다.
STS(Spring Tool Suite )는 스프링 개발에 최적화된 이클립스라고 생각하면 된다.
이클립스 베이스에 Spring Framwork plugin이 자동으로 추가된 버전?이다.
(Maven과 이클립스의 Maven 플러그인인 m2Eclipse가 포함된 통합 개발환경)
기존 이클립스 - STS plug-in 별도 추가 설치
STS(Spring Tool Suite) 바로 개발 가능
장점으로는 이클립스는 톰캣을 직접 설치하고 따로 실행해줘야 하는데
STS는 개발자용 톰캣서버도 같이 설치&실행해주는 편리함이 있다.
스프링부트
=> 스프링에서 설정을 더 편하게 해주는 프레임워크
스프링 프레임워크는 기능이 많은 만큼 환경설정이 복잡한 편이다.
그래서 환경설정을 편하게 만들어서 나온게 스프링부트이다.
스프링부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화 하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 돕는다.
스프링 부트 starter 디펜던시만 추가해주면 바로 API를 정의하고, 내장된 탐캣이나 제티로 웹 애플리케이션 서버를 실행할 수 있다.
심지어 스프링 홈페이지의 이니셜라이저를 사용하면 바로 실행 가능한 코드를 만들어준다.
실행환경이나 의존성 관리 등의 인프라 관련 등은 신경쓸 필요 없이 바로 코딩을 시작하면 된다.
그리고 바로 그것이 스프링의 키 포인트이다.
스프링 프레임워크(Spring Framwork)
프레임 워크중 가장 많이 사용되고 있고 자바 웹 애플리케이션 개발을 위한 오픈소스 프레임 워크로 기존 프레임 워크보다 가벼운 경량 프레임 워크 이다.
또한 스프링은 경량 컨테이너라고 부른다. '컨테이너'라고 하면 대표적인 것으로 톰켓을 들 수 있다. 톰캣은 서블릿 컨테이너라고 부르는데, 그 이유는 톰 캣을 실핸ㅇ하면 톰캣은 서블릿의 생성 ,초기화, 서비스실행, 소멸에 관한 모든 권한을 가지고 서블릿을 관리하기 때문이다.
그리고 애플리 케이션에서 사용되는 여러 가지 빈(클래스 객체)을 개발자가 아닌 스프링이 권한을 가지고 직접 관리한다.
스프링은 java기술을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크이다.
그래서 sts가 아니라 이클립스에서 스프링을 적용해서 개발할 수도 있고 (sts보다 설정을 더 직접 잡아야 한다)
아니면 스프링으로 개발하는 것에 특화된 STS로 개발할 수 도 있다.
스프링의 주요 특징으로 4가지가 있는데 한번 훑어본다.
1. IoC(Inversion of Control, 제어 반전)
- 개발자는 JAVA 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성하고 소멸시킨다.
- IoC란 인스턴스 (객체)의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 하는게 아닌 스피링(컨테이너)가 대신 해주는 것을 말한다.
- 프로젝트의 규모가 커질수록 객체와 자원을 이용하는 방법이 더 복잡해지고 어디서 코드가 꼬일지 모르는 것을 Spring의 IoC는 자동으로 관리해준다.
- 즉, 제어권이 개발자가 아닌 IoC에게 있으며 IoC가 개발자의 코드를 호출하여 그 코드로 생명주기를 제어하는 것이다.
2. DI(Dependency Injection, 의존성 주입)
- 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식이다.
- 코드 재사용을 높여 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있다.
- 쉽게 말하자면 게임 캐릭터라는 하나의 객체가 존재하는데, 그 객체를 더 잘 이용하기 위해서 무기, 방패 등 아이템을 가져와 결합시키는 것이다. 이 객체는 무기와 방패를 뺐다 꼈다 자유자재로 할 수 있으며 아이템을 갈아끼우는데 어떤 상황에 구애받지도 않는다.
- JAVA에서 데이터를 저장하고 가져오는 기능을 외부의 Oracle Database를 사용할 수도 있고, JDBC, iBatis, JPA 등 다른 프레임 워크를 이용해 짤 수도 있다. 이때 Spring을 이용하면 그때마다 필요한 부분을 뺐다 꼈다 하면서 적절한 상황에 필요한 기능을 해낼 수 있다.
3. AOP(Aspect Object Programming, 관점 지향 프로그래밍)
- 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리 할 수 있다.
- 각각의 클래스가 있다고 가정하자. 각 클래스들은 서로 코드와 기능들이 중복되는 부분이 많다. 코드가 중복될 경우 실용성과 가독성 및 개발 속도에 좋지 않다. 중복된 코드를 최대한 배제하는 방법은 중복되는 기능들을 전부 빼놓은 뒤 그 기능이 필요할때만 호출하여 쓰면 훨씬 효율성이 좋다.
- 즉, AOP는 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
4. POJO(Plain Old Java Object) 방식
- POJO는 Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어이다.
- 별도의 프레임 워크 없이 Java EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍다.
- 즉, getter/setter를 가진 단순한 자바 오브젝트를 말한다.
참고: jerryjerryjerry.tistory.com/62
'개념정리' 카테고리의 다른 글
(미완성)인터프리터 방식 (0) | 2021.02.23 |
---|---|
Java EE 와 Java SE의 차이점 (0) | 2021.02.22 |
스프링(Spring) (0) | 2021.02.19 |
메이븐 (Maven) (0) | 2021.02.19 |
JAVA 자바 (0) | 2021.02.16 |