JAVA는 객체 지향 프로그래밍 언어로, 플랫폼에 독립적인 언어라는 특징이 있다.

 

자바 컴파일러는 CLASS파일을 생성하고 이 파일의 바이트코드를 읽은 뒤 자바 가상머신에서 기계어로 바꾸어 실행하기 때문에 윈도우, 리눅스, 맥OS등 OS에 구분없이 잘 작동합니다.

 

요즘 개발언어로 각광받고 있는 Python, Ruby를 순수 객체지향이라 부르는데, JAVA는 모든 것을 객체로 보는 언어는 아니다. *원시타입(Primitive)은 객체로 보지 않음

 

객체 지향 프로그래밍을 잠깐 설명하자면, 작은 문제들을 해결할 수 있는 객체들을 만든 후 객체들을 조합해서 큰 문제를 해결하는 상향식 해결법을 도입해서 만든 것으로 이런 객체들은 만들어 놓기만 하면 재사용이 가능하다는 장점이 있다.

 

객체 지향 프로그래밍 언어는 요소로는 캡슐화 (변수와 함수를 하나의 단위로 묶는 것), 상속(자식 클래스는 부모 클래스의 특성 & 기능을 물려받아서 사용한다는 것, 캡슐화를 유지하면서 클래스 재사용이 용이하게 해준다.), 다형성(서브타입, 매개변수, 임시, 강제)등이 있다.

  • 다형성 부분은 서적을 통해서 읽어보시면 개발하실 때 반드시 도움이 되실 것입니다.

 

웹 애플리케이션 제작을 위해서 사용하는 규격은 JAVA 서블릿과 JSP(Java 서버 페이지)가 있다.  닷넷으로 치면 서블릿이 .cs(로직), jsp가 .aspx페이지(화면)

 

JDK(Java Development Kit)로 설치를 하면 javac라는 컴파일러를 제공하지만 따로 개발환경을 해주지 않기 때문에! 

 

이클립스, Intellij와 같은 프로그램을 설치해서 사용해야 한다.

 

프로젝트에 필요한 라이브러리나 빌드 관리 도구는 maven, gradle이 많이 채용된다.

 

오라클에서 제공하는 버전은 요즘 유료화 되어, 기업에서 사용 시 OpenJDK를 사용하는 것이 일반적인 추세이다.

 

JAVA에서 사용하는 웹 프레임워크는 대표적으로 스트럿츠(STRUTS), 스프링(Spring)가 있다.

 

JAVA로 웹 서버를 개발하면 대부분 Spring에서 만든다고 생각하시면 되는데, 구조는 아래와 같습니다. 

 

 

Spirng의 특징은 아래와 같습니다.

  • Spring은 자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS 가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있습니다.
  • Spring은 경량 컨테이너로 자바 객체를 직접 Spring 안에서 관리합니다. 객체의 생성 및 소멸과 같은 생명 주기(Life cycle)을 관리하며, Spring 컨테이너에서 필요한 객체를 가져와 사용합니다.
  • 제어의 역전(IOC , Inversion Of Control) : 클래스 내부의 객체 생성 -> 의존성 객체의 메소드 호출이 아닌, 스프링에게 제어를 위임하여 스프링이 만든 객체를 주입 -> 의존성 객체의 메소드 호출 구조입니다. 스프링에서는 모든 의존성 객체를 스프링이 실행될때 만들어주고 필요한 곳에 주입해줍니다.
  • 의존성 주입(DI, Dependency Injection) : 어떤 객체(B)를 사용하는 주체(A)가 객체(B)를 직접 생성하는게 아니라 객체를 외부(Spring)에서 생성해서 사용하려는 주체 객체(A)에 주입시켜주는 방식입니다. 사용하는 주체(A)가 사용하려는 객체(B)를 직접 생성하는 경우 의존성(변경사항이 있는 경우 서로에게 영향을 많이 준다)이 높아집니다. 하지만, 외부(Spring)에서 직접 생성하여 관리하는 경우에는 A와 B의 의존성이 줄어듭니다.
  • AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 지원 
  • POJO(Plain Old Java Object)방식으로 자바객체는 특정한 인터페이스를 구현하고 클라스 상속이 필요치 않습니다. (참조 사이트 : https://velog.io/@galaxy/Spring%EC%9D%98-%EA%B8%B0%EB%B3%B8-%ED%8A%B9%EC%A7%95-POJO)
  • 트랜젝션 처리를 위한 일관된 방법을 제공합니다.
  • 영속성 관련 다양한 API를 지원합니다.
  • API연동을 지원합니다.

 

스프링 개념 

(참조 사이트 : https://life-with-coding.tistory.com/412)

 

Spring Boot는 Spring Framework 기반 프로젝트를 쉽고 빠르게 만들어주는 라이브러리라고 생각하시면 편합니다. (스프링 프레임워크를 보다 쉽게 셋팅할 수 있게 해줌)

 

Spring Framework로 셋팅할려면 기존에는 개발자가 모든 것을 셋팅해야 했는데, (ibatis, mybatis, dbcp, logback, log4j, maven, gradle, mvc servlet, mvc interceptor, spring security등등)

 

이런 복잡한 설정을 대부분 미리 셋팅해 놓아 바로 웹 개발에 들어갈 수 있도록 했다.

 

SPRING BOOT가 나오기 전에는 프로젝트를 진행할 때 기존 프로젝트 사용설정을 복붙하고 필요한 것은 다시 셋팅해주는 번거로움이 있었는데 이를 대체한 것이다.

 

Spring Boot는 이외에도 많은 장점이 있는데, Spring 라이브러리와 third party 라이브러리 버전을 자동으로 관리해주는 기능이라던지, tomcat을 내장하고 있으며, war가 아닌 jar로 패키징이 가능하고, starter 라이브러리를 등록하여 의존성을 간단히 관리할 수 있다.

+ Recent posts