JAVA
- 네트워크 상에서 사용할 수 있도록 선 마이크로 시스템즈가 개발한 객체지향 프로그래밍 언어
- JVM(자바가상머신)만 설치하면 OS 상관없이 작동한다. (운영체제에 독립적)
- 기본 자료형을 제외한 모든 요소들이 객체로 표현
- 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어
- Garbage Collector로 자동으로 메모리 관리 가능
- 멀티 쓰레드 지원
객체 지향 프로그래밍 : OOP
- Object Oriented Programming
- 데이터를 객체로 취급하여 프로그램에 반영한 것, 순차적으로 프로그램이 동작하는 기존의 것들(절차지향)과는 다르게 객체와 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다.
OOP의 특징
- 코드의 재사용성이 높다
- 코드의 변경이 용이하다
- 직관적인 코드 분석
- 개발속도 향상
- 상속을 통한 장점 극대화
캡슐화
- Encapsulation
- 연관있는 변수와 함수를 클래스로 묶고, 실제 구현 내용을 외부에 감추는 것(은닉성)
- OOP언어에서의 접근지정자 : public, protected, private
- javascript에서는 기본 public
private, protected에 _붙여 선언하여 외부에서 언더바를 붙힌 프로퍼티나 메서드에 접근하여 사용하지 말라는 암묵적인 약속
상속
- Inheritance
- 자식이 부모를 선택해서 물려받는다.
하위 클래스가 상위 클래스의 필드/메소드를 물려받는 것
- 부모 클래스를 재사용으로 중복코드 줄여주고, 유지보수의 편리성 제공
- 객체의 다형성 구현 가능
다형성
- Polymorphism
- 하나의 객체를 여러 가지 타입을 가질 수 있는 것
- 자바에서는 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 구현
- 인터페이스와 상속은 다형성이라는 OOP특징을 구현하는 방식
- 부모 타입에는 모든 자식 객체가 대입, 인터페이스 타입에는 모든 구현 객체가 대입 가능
객체 : Object
- 속성(멤버변수, 특성, 필드, 상태)와 기능(메서드, 행위, 함수)로 구성됨
- 클래스에 정의한 대로 객체가 생성된다.
Class
- 클래스 내에 멤버를 정의
- 객체를 생성하는데 사용된다.
Interface
- 메소드 선언만 가능. 내용 구현이 불가능
- 자신을 구현하는 클래스들의 규격처럼 쓰임
Abstract Class
- 미완성된 클래스
- 메소드내용 구현 가능
- 객체의 추상적인 상위 개념으로 공통된 개념을 표현할 때 사용
- 추상 클래스 하위에 추상 메소드를 구현하여 하위 개념의 객체에 상속시켜 구현
오버로딩 : Overloading
- 같은 이름의 메소드를 여러개 정의
- 매개변수의 타입이 다르거나, 개수가 달라야한다.
- return type과 접근제어자는 영향을 주지않는다.
오버라이딩 : Overriding
- 상속에서 나온 개념
- 부모클래스의 메소드를 자식클래스에서 재정의
GC
- Garbage Collector
- Jvm의 백그라운드에서 데몬 스레드로 실행되며 접근 불가능한 상태가 된 객체들의 메모리를 해제시킨다
Thread
- 프로세스 내에서 실행되는 흐름의 단위
- 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.(멀티스레드)
Servlet
- Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것
JSP
- Java Server Page
- html 기반에 Java코드를 블록화하여 삽입한 것
JDBC
- Java Data Base Connection
- Java언어를 통해 데이터 베이스에 접근할 수 있는 프로그래밍
API
- Application Programming Interface
- 애플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트
- 정보 제공자와 정보 사용자 간의 계약으로 지칭되며, 소비자에게 필요한 콘텐츠(호출)와
생상자에게 필요한 콘텐츠(응답)을 구성한다.
RESTful API
Get 방식
- 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 key, value 값이 결합된 스트링 형태로 전달
- 주소창에 쿼리 스트링이 그대로 보이기때문에 보안성이 떨어진다.
- 길이에 제한이 있다. 전송 데이터의 한계가 있다.
- post방식보다 속도가 빠른다.
- 웹 브라우저가 웹 서버에 데이터를 요청할 때 주로 사용
Post 방식
- 일정 크기 이상의 데이터를 보내야할 때 사용
- 주소창에 데이터 정보가 노출되지않아 보안성이 높다
- get방식보다 속도가 느리다
- 쿼리스트링 데이터 뿐만 아니라 라디오버튼, 텍스트박스 같은 객체들의 값도 전송 가능
- 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용
Session
- 특정 웹 사이트에서 사용자가 머무르는 기간
- 또는 1명의 사용자의 1번의 방문을 의미
- 세션 관련 데이터는 서버에 저장
- 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다
- Cookie에 비해 보안성이 높다
- 모든 정보를 Session에 저장할 경우, Server의 메모리를 과도하게 사용하게 되어 서버에 무리가 간다.
Cookie
- 사용자 정보를 유지할 수 없다는 Http의 한계를 극복할 수 있는 방법
- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹사이트 사이를 매개해 주는 정보
- Client PC에 저장되는 정보
- 다른 사용자에 의해 임의로 변경 가능. 정보 유출의 위험
참고
https://itprogramming119.tistory.com/entry/%EB%A9%B4%EC%A0%91-01-JAVA-JSP-%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%98%88%EC%83%81-%EC%A7%88%EB%AC%B8
https://webclub.tistory.com/156
https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)