- 하드웨어 측면에서, web server는 website의 컴포넌트 파일들을 저장하는 컴퓨터입니다. (컴포넌트 파일에는 HTML 문서, images, CSS stylesheets, 그리고 JavaScript files가 있습니다.) 그리고 이 파일들을 최종 소비자의 디바이스에 전달합니다. web server는 인터넷에 연결되어 있고, mozilla.org와 같은 domain name을 통해 접속될 수 있습니다.
- 소프트웨어 측면에서, web server는 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리합니다. 이 문서에서 web server는 HTTP서버로 국한합니다. HTTP 서버는 URL(Web addresses)과 HTTP(당신의 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어 일부입니다.
전체 글
- HTTP와 웹서버 그리고 브라우저의 관계 2020.05.13
- 자바 의존성 관련 - 의조넝과 라이브러리,그리고 jar 2020.05.13
- 자바관련상식 - CGI와 서블릿 그리고 톰캣(+JSP) 2020.05.13
- 자바관련상식 - JVM과 바이트코드 2020.05.13
- 자바 관련 상식 - J2EE , JDK, JRE, J2SE 차이 2020.05.13
- 스트래티지 패턴이란 2020.05.13
HTTP와 웹서버 그리고 브라우저의 관계
자바 의존성 관련 - 의조넝과 라이브러리,그리고 jar
의존성
의존 관계임을 알아볼 수 있는 가장 쉬운 방법:new
class Weapon{
Sword sword = new Sword();
}
class Sword extends Weapon{
}
위의 코드에서 'Weapon은 Sword에 의존한다'고 표현한다.
한 클래스가 다른 클래스의 객체를 사용할 때 두 클래스 간의 관계를 의존이라고 한다.
라이브러리
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
(ex. 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양 등)
java에서는 미리 자주 사용되고 유용한 기능을 하는 class들을 만들어 놓고 제공한다.
이때 이 클래스들을 관련된 기능별로 분류하여 패키지 단위로 묶어서 관리하는데, 이 패키지 파일을 라이브러리라고 하고, 이러한 클래스들의 코드를 문서로 제공하는 것이 API다
Jar (Java Archive)
여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷.
jar 파일은 여러개의 파일을 하나의 파일로 묶은 압축 파일로, 여러 클래스 파일 또는 패키지 파일이 있을 때 그 클래스들의 참조 및 다운로드 등의 활동을 편리하게 해준다.
자바관련상식 - CGI와 서블릿 그리고 톰캣(+JSP)
CGl (common gateway interface)
서버와 응용프로그램 사이에 데이터를 주고 받기 위한 표준화된 방법
요청이있을 때마다 새로운 프로세스가 생성되어 응답
톰캣 (Tomcat)
Java 기반의 서블릿 컨테이너(혹은 웹 컨테이너)만 있는 웹 애플리케이션 서버
웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여, JSP와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다.
관리툴을 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수 있다. 그리고, HTTP 서버도 자체 내 장하기도 한다.
서블릿 (Servlet)
서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바(Java)로 작성된 서버측 프로그램
JavaEE 스펙 중 일부 기능.
외부 요청마다 프로세스보다 가벼운 스레드로써. 응답 (CGI보다 가볍다)
자바 코드 안에 HTML을 포함하고 있다.
EX.쇼핑몰, 온라인 뱅킹 등
JSP (JavaSever Pages)
HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어 JavaEE 스펙중 일부기능. 클라이언트에서 서비스 요청 -> JSP의 실행을 요구 -> (웹 애플리케이션 서버의 서블릿 컨테이너에서) JSP는 서블릿 원시코드로 변환 -> 서블릿 원시코드는 바로 컴파일된 후 실행 -> HTML 형태의 결과를 클라이언트에 전송.
자바관련상식 - JVM과 바이트코드
JVM (Java Virtual Machine)
코드 최적화와 백엔드를 담당.
https://cyj42.tistory.com/entry/JVM?category=756317
JVM
JVM (=Java Virtual Machine. 자바 가상 머신) Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트 코드를 실행시키기 위한 가상머신. 컴파일러보다 느림.(자바 명령을 한 번에 읽고 실행시키기 때��
cyj42.tistory.com
바이트코드 (Bytecode)
고급 언어로 작성된 소스 코드를 가상머신이 이해할 수 있는 중간 코드. (C, C++에서 어셈블리어처럼)
VM은 이 바이트코드를 각각의 하드웨어 아키텍처에 맞는 기계어로 다시 컴파일.
이진 표현법.
인터프리터(코드를 한 줄씩 읽어 내려가며 실행하는 프로그램. 속도가 느리지만 프로그램 수정이 간단) 방식으로 해석.
바이트코드로 소스 코드를 역으로 추출하는 프로그램(역컴파일러, 디컴파일러)에 취약한 편.
JDK 개발 툴 중 javac(자바 컴파일러)가 자바 소스 파일을 바이트코드로 변환.
자바 관련 상식 - J2EE , JDK, JRE, J2SE 차이
J2EE
자바를 이용한 서버측 개발을 위한 플랫폼.
버전 5.0 이후로 Java EE로 개칭
매우 방대한 범위를 다루는 스펙 집합으로 Servlet, JSP 등이 이에 포함됨.
WAS (웹 애플리케이션 서버) : Java EE 스펙에 따라 제품으로 구현함
JDK (Java Development Kit) - 썬 마이크로시스템즈
자바 환경에서 돌아가는 프로그램을 개발하는 데 필요한 툴들을 모아놓은 소프트웨어 개발을 위한 패키지.
JRE,JVM, 컴파일러, 디버거 등 자바 애플릿 및 응용프로그램 개발을 위한 도구들이 포함된다.
+자바 애플릿 : 자바 바이트코드 형태로 배포되는 애플릿으로, Java 기반의 웹 브라우저 플러그인 기술.
+애플릿 : 플러그인의 하나로서, 전용 위젯 엔진이나 더 큰 프로그램 범위 내에서 실행되는 특정한 작업ㅇ르 수행 하는 조그마한 응용 프로그램. 독립적으로 실행될 수없다.
JRE (Java Runtime Environment)
자바 언어로 개발된 소프트웨어를 실행하기 위해 필요한 플랫폼.
자바를 이용해 개발된 소프트웨어는 플랫폼과 무관하게 독립적인 형식(자바 바이트 코드)으로 배포되는데, 이것을 실행하려면 그 플랫폼을 해석할 수 있는 형식(native code : 기계어)으로 변환해야 한다.
즉, 이 변환과 실행을 행하는 자바 가상 머신과 그 주변의 소프트웨어.
자동 메모리 관리(Automatic memory management)는 프로그래머가 메모리 할당과 재할당을 수동으로 조작할 필요가 없게 해주는 JRE의 가장 중요한 서비스 중 하나다.
J2SE (Java SE / Java Standard Edition)
Java의 핵심 API와 기능들을 제공.
대부분의 사람들이 가장 많이 접하는 표준 에디션.
데스크톱 및 서버, 최근의 고사양 임베디드 시스템을 위한 표준 자바 플랫폼으로 표준적인 컴퓨팅 환경을 지원하기 위한 자바 가상 머신 규격 및 API 집합을 포함.
스트래티지 패턴이란
행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀수 있게 해주는 패턴
◎ 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화 되어 있고 이들이 필요할때 교체할수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수있게 디자인 패턴
즉 전략을 쉽게 바꿀수 있도록 해주는 디자인 패턴임
* 전략이란
어떤 목적을 달성하기 위해일을 수행하는 방식, 비지니스 규칙, 문제를 해결하는 알고리즘등
특히 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라공격이나 행동하는 방식을 바꾸고 싶을때 스트래티지 패턴은 매우유용함