Java Platform이란.

자바 프로그램이 실행되기 위해 제공되는 ‘하드웨어적 프로그램’으로, 자바 API와 JVM으로 구성되어 있다.

자바 API(Java Application Programming Interface) – 유용한 기능을 제공하는 많은 클래스와 인터페이스들의 묶움으로 패키지로 제공된다.

자바가상머신(JVM, Java Virtual Machine) – 물리적인 실제의 기계 장치가 아닌 추상적인 장치로 명령어와 레지스터의 집합, 스택, 힙, 메서드 영역 등으로 구성되어 있다.

자바 플랫폼의 종류

JavaSE
J2SE라고도 불리며, 자바의 표준이 되는 플랫폼이다.
일반적인 컴퓨터 환경의 응용 프로그램들을 개발하기 위해 제공되는 환경이다.
(J2EE나 웹서비스 등에도 제공할 수 있는 환경)

JavaEE
J2SE를 바탕으로 자바의 가장 많은 특징을 이용하는 환경이라 할 수 있다.
추가적인 툴이나 개발에 필요한 API들이 추가적으로 제공되고 있다.
(Servelet/JSP, XML 기술 등)

JavaME
가장 작은 환경이므로 주로 소형제품을 위한 플랫폼이다.
메모리 관리에는 최적화되어 있고 전원 처리, 내부 장치간의 입출력 기능 등 일정한 범위를 두고 제공된다.

JAVA의 특징

1. 배우기 쉽다.
자바와 같은 객체지향 언어의 특징은 복잡하고 다루기 힘든 부분은 모두 제거하고 꼭 필요한 부분들만 적용시켜 프로그래밍을 간편하게 작성하는데 있다.(ex. 포인터)

2. 플랫폼 독립성
운영체제 별로 환경이 다르므로 해당 운영체제에서 돌아갈수 있는 적합한 환경이 필요한데, 자바는 이에 영향을 받지 않는다.

여기서 나오는 자바구현 정신!! Write Once, Use Anywhere !!

Java Virtual Machine(자바가상머신) 이라는 것이 어떠한 운영체제에서도 프로그램이 수행가능하도록 각각의 운영체제에 맞는 작업기준을 조성해준다.

3. 객체지향 프로그래밍
서로 다른 일을 부여받은 하나이상의 “객체”중에서 요청된 일을 처리하기 위해 실천가능한 “객체”를 호출하여 처리하게 하는 것을 말한다.
그리고 이 객체들을 다른 곳에서도 사용할 수 있도록 하는 것(재사용성), 기능을 좀 더 추가하여 “객체”를 확장하는 것을 “객체지향”이라 하며, 프로그래밍에 적용한 것을 객체지향 프로그래밍이라고 부른다.

4.가비지 컬렉션
메모리 영역 중 더이상 사용될 수 없거나 참조되지 않는 영역을 모아 프로그램이 다시 사용할 수 있게 해준다.
즉, 프로그래머 대신 언어 차원에서 메모리에 생성된 무엇인가를 자동으로 소멸시켜주는 것!!

5. 멀티스레드
Thread란 프로그램의 수행단위이다.
즉, Multi Thread는 말 그대로 한 프로그램을 수행하는 단위가 한 개가 아닌 여러 개 있다는 뜻!!

Http 응답 상태 코드 간략 정리

오늘은 HTTP통신 시, 서버에서 보내주는 응답 코드에 대해 간단히 정리해 보려고 해요!

사실 저는 200, 404, 500 이외의 것은 크게 신경쓰지않아서 잘 몰랐었는데, 이번 기회를 통해 확실히 알고가려구요!

상태 코드는 코드의 첫번째 숫자에 의해 크게 다섯 가지로 구분합니다!

1xx : Informational (정보)
요청(request)을 받고, 처리 중에 있음.

2xx : Success (성공)
요청(request)이 정상적으로 처리함.

3xx : Redirection (리디렉션)
요청(request) 완료를 위해 추가 동작이 필요함.

4xx : Client Error (클라이언트 오류)
클라이언트 요청을 처리할 수 없어 오류 발생.

5xx : Server Error (서버 오류)
서버에서 처리를 하지 못하여 오류 발생.

4번과 5번은 에러이기는 한데, 간단히 차이점을 설명하자면 4xx 에러는 클라이언트의 잘못된 요청으로 서버에서 처리하지 못한 것이고, 5xx 에러는 클라이언트의 요청은 문제가 없으나, 서버에서 처리중에 서버 문제로 인해 오류가 발생한 것이라고 생각하시면 될 것 같아요.

아래에는 주요 상태코드입니다!

100 Continue
클라이언트가 서버에게 메시지 바디를 포함한 요청을 보냈을 때 받는 응답 코드다. 서버의 응답에는 클라이어트가 요청한 헤더를 전송 받았고, 클라이언트는 계속해서 서버에게 바디를 보낼 수 있다고 나타낸다. 서버는 클라이언트의 요청이 완료되면 두 번째 응답을 보낸다.

200 OK
클라이언트의 요청이 성공했다는 것을 나타낸다. 서버의 응답 메시지 바디에 클라이언트가 요청한 내용에 대한 결과를 포함한다.

201 Created
클라이언트의 PUT 요청이 성공적이라는 것을 나타낸다.

301 Moved Permanently
브라우저의 요청을 다른 URL로 항시 전달한다는 것을 의미한다. 다른 URL에 대한 정보는 Location 헤더에 나타난다. 따라서 클라이언트는 예전 URL 대신에 새로 바뀐 URL 을 통해 자원을 찾는다.

302 Found
브라우저의 요청을 임시 URL로 바꾸고 Location 헤더에 임시로 변경한 URL에 대한 정보를 적는다. 클라이언트가 다음에 같은 요청을 하면 기존의 URL로 돌아간다.

304 Not Modified
브라우저가 서버에게 요청한 자료에 대해 서버는 클라이언트 내에 복사된 캐시를 사용하게 한다. 서버는 If-Modified-Since 와 If-None-Match 요청 헤더를 사용해 클라이언트가 가장 최근의 자료를 가지고 있는지 여부를 확인한다.

400 Bad Request
클라이언트가 서버에게 잘못된 HTTP 요청을 했다는 것을 나타낸다. 예를 들어 클라이언트가 URL 주소의 중간에 빈 공간을 넣는 등 부적절한 방법으로 서버에게 요청을 한 경우 400 Bad Request 응답코드를 받는다.

401 Unauthorized
서버가 클라이언트의 요청에 대해 HTTP 인증 확인을 요구하는 것을 의미한다. www-authenticate 헤더는 인증과 관련된 내용을 지원하는 다양한 타입에 대한 정보를 담고 있다.

403 Forbidden
클라이언트의 요청에 대해 접근을 차단한다는 것을 나타낸다.

404 Not Found
클라이언트가 서버에게 요청한 자료가 존재하지 않는다는 것을 나타낸다.

405 Method Not Allowed
클라이언트가 요청에 이용한 메소드가 해당 URL에 지원이 불가능하다는 것을 나타낸다. 예를 들어 PUT 방식을 지원하지 않는 곳에서 클라이언트가 PUT 메소드를 통해 서버에게 자원을 요청했다면 405 상태 코드를 보게 된다.

413 Request Entity Too Large
클라이언트가 요청한 바디를 서버에서 처리하기에는 너무 크다는 것을 나타낸다. 예를 들어 버퍼 오버플로우의 취약점을 찾고자 긴 문자열 데이터를 서버에 전송하면 413 상태 코드를 보게 된다.

414 Request URI Too Long
413응답과 비슷하지만 414 메시지는 요청에 사용된 URL이 서버가 감당할 수 없을 만큼 너무 크다는 것을 나타낸다.

500 Internal Server Error
서버가 클라이언트의 요청을 실행할 수 없을 때 500 상태 코드가 발생한다. 보통 서버가 예상하지 못한 요청을 보냈을 때 애플리케이션이 적절히 처리하지 못할 경우 500 상태 코드를 볼 수 있다. 어디서 문제가 생겼는지 알아보려면 서버의 응답 내용을 상세히 살펴봐야 한다.

503 Service Unavailable
웹서버는 클라이언트의 요청에 대해 정상적으로 응답할 수 있으나 서버에서 구동 중인 애플리케이션이 응답을 하지 못할 때 나타난다. 503 상태 코드의 경우 클라이언트가 요청을 잘못해서 발생했는지 아니면 서버에 있는 애플리케이션이 문제가 있는지 잘 확인해야 한다.

참고사이트
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes