자바 웹 개발환경의 개요
자바의 특징
- 간결하면서 강력한 객체지향 프로그래밍 언어
- 플랫폼에 독립적 -> 여러 운영체제나 하드웨어에서도 동일하게 실행 가능
- 많은 오픈소스 라이브러리가 존재 -> 생산성 향상, 유지보수 비용 절감
- GUI 기반의 응용프로그램 개발에는 적합 X
- 하드웨어를 정밀하게 제어해야하는 프로그램 개발 적합 X
- 최신 모던 프로그래밍 언어에 비해 간결함이 떨어지고, 코드가 복잡
- 그럼에도 언어 인기도에서 상위권에 있는 것을 확인할 수 있음
자바 가상머신 (JVM)
- 자바의 가장 큰 특징으로 Virtual Machine이라는 개념
- 가상머신은 말 그대로 물리적인 기계 장치가 아닌 가상의 기계를 의미
- 소프트웨어로 구현된 하드웨어를 말함
- JVM으로 인해 하드웨어나 운영체제의 영향을 받지 않고 동일한 프로그램 개발이 가능
- JVM은 개발과 실행이 가능한 기술
- 자바 소스는 컴파일 후 바이트코드가 생성되며, JVM은 바이트코드를 해석하여 운영체제에서 실행할 수 있도록 번역하는 역할을 담당.
자바 플랫폼
- API와 JVM으로 구성되며 특정 자바프로그램이 실행되는 환경을 의미
- 자바 플랫폼에넌 Java SE, Java EE, Java Card, Java TV 등이 있음
- 실행 환경에 따라 API 구성이 달라짐
- 일반적인 목적 : Java SE를 설치
- 대규모 개발 목적 : Java EE를 추가 설치
- TIP : 자바의 버전은 매년 나오지만 안전성과 호환성을 위해 LTS 버전을 설치하는 것이 좋음
자바 웹 개발을 위한 기본적인 도구
- 자바 개발도구 (JDK), 통합개발환경 (IDE), 서블릿 컨테이너, 데이터베이스
자바 개발도구 (JDK)
- 자바 개발도구는 자바 실행을 위한 JRE와 컴파일러 등을 포함하며, 보통 JDK (Java Development Kit)로 불림
- 통합개발환경 (IDE)을 비롯해 아파치 톰캣과 같이 자바로 만들어진 서버 실행을 위해서도 JDK는 필요함
- JDK 패키지는 상용 제품인 Oracle JDK와 공개버전인 Open JDK로 나뉘어 배포됨
- 몇몇 구성요소와 설치 방법 등의 차이를 제외하면 기본적인 기능과 성능은 동일
- 특별히 오라클에 종속되거나 반드시 라이선스를 지불해야만 하는 환경이 아니라면 Open JDK의 사용이 권장됨
통합개발환경 (Integrated Development Environment, IDE)
- 이클립스, IntelliJ, VS code 등이 있음
서블릿 컨테이너

클라우드 개발환경과 배포 프로세스
클라우드 개발환경
- 최근 클라우드 인프라와 협업을 위한 기본적인 배경지식과 경험이 요구되고 있음
- 개발환경이 점점 복잡해짐과 더불어 개발 결과물을 실제 서버로 배포하는 과정과 절차도 점점 복잡해지고 있음
배포
- 배치라고도 하며, 개발된 결과물을 실제 사용자에게 전달하는 작업을 의미함
- 웹의 경우
- 운영 서버로 소스코드를 복사하고 WAS에 등록하는 과정을 의미
- 모바일 앱의 경우
- 앱 스토에 앱을 업로드하는 절차 등을 의미
- 그 외의 경우
- FTP 서버, 홈페이지 또는 깃허브 등을 통해 버전을 릴리즈(Release) 하는 작업 등
웹 애플리케이션 배포
- IDE에서 JSP 또는 서블릿을 실행하면 현재 프로젝트 구조를 WAR 또는 JAR 형태로 패키징 한 후 아파치 톰캣에 전달해 실행할 수 있음
- JAR (Java ARchive) 파일
- 장점
- 독립적인 Java 애플리케이션을 패키징할 수 있고, 실행가능한 JAR 파일로 만들어서 개발자가 쉽게 애플리케이션을 실행할 수 있음
- 압축된 형식으로 클래스, 리소스, 라이브러리 등을 포함하므로 배포와 전달이 용이함
- Java 애플리케이션의 진입점인 main 메서드를 포함하고 있어 JVM에서 직접 실행하기 때문에 별도의 웹 컨테이너나 서버가 필요하지 않음
- 단점
- 웹 애플리케이션을 개발할 때 WAR 파일에 비해 제약사항이 있음
- 예를 들어, JSP나 서블릿 컨테이너에 대한 표준 기능을 활용하기 어렵다
- 웹 애플리케이션에서 동적인 웹 컨텐츠 생성 및 관리가 제한적
- 장점
- WAR (Web ARchive) 파일
- 장점
- Java 웹 애플리케이션을 패키징하는데 최적화되어있고, 웹 구성요소인 JSP, 서블릿, 필터, 리스너 등과 웹 애플리케이션을 실행하기 위한 서블릿 컨테이너(웹 컨테이너)에서 필요한 설정파일, 라이브러리, 리소스 등을 포함하여 한 번에 배포 및 실행가능
- 웹 컨테이너를 통해 애플리케이션을 실행하므로 다양한 웹 기능과 서버 환경을 활용할 수 있음
- 단점
- 웹 컨테이너나 서버에 종속적이기 때문에 특정한 웹 컨테이너 환경이 필요
- 배포 및 전달에 있어서 JAR 파일에 비해 크기가 크고 번거로울 수 있음
- 장점
- JAR (Java ARchive) 파일
데브옵스 (DevOps)
- 개발과 운영의 합성어
- 규모가 큰 소프트웨어의 신속한 개발과 지속적 유지보수, 배포 등의 운영을 병행하기 위한 노력을 통칭함
- 수시로 서비스를 배포하는 형태, 웹 기반의 서비스가 형태가 필수요소로 자리잡음
- 이러한 새로운 전략을 위해 개발 팀과 운영 팀이 병합되어 개발, 테스트, 배포, 운영에 이르는 애플리케이션 생명주기를 개발
- 장점
- 빠른 속도 : 계획부터 배포까지 작업속도를 빠르고 효율적으로 제공하기 때문이 시장 변화에 빠르게 대처하고 비즈니스 성과를 창출할 수 있음
- 빠른 배포 : 새로운 기능의 릴리즈와 오류 수정 속도가 빨라져 고객의 요구에 빠르게 대응할 수 있음
- 안정성 : 지속적 통합, 지속적 전달, 모니터링, 로깅을 통해 안정적인 서비스 품질을 고객에게 제공할 수 있음
- 확장 가능성 : 복잡하거나 변화하는 시스템을 효율적으로 관리할 수 있음
- 협업 강화 : 개발 팀과 운영 팀이 긴밀하기 협력할 수 있기 때문에 책임을 공유할 수 있기 때문에 비효율을 줄이고 시간을 절약할 수 있음
- 장점
'JSP와 스프링' 카테고리의 다른 글
| 자바 웹 개발 개요 (1) | 2024.12.10 |
|---|---|
| 웹 프로그래밍의 이해 (2) | 2024.10.31 |