computing paradigm 의 변화 = 개발자 편의성의 변화
1 프로그래밍 기법 측면
- 50년대 절차중심적 기법(C, COBOL....)
- 6~70년대 정보공학기법
- 80년대 객체지향기법 (reuse)
- 추상적인 개념을 코드로 설계하기 위해
- 대상과 대상과의 관계 (사람 사고 중심)
- Java
- 2000년대 CBD기법
- 객체 하나 하나를 교체할 수는 있지만 불편함이 따를 수가 있다. 그래서 더 큰 단위의 컴포넌트를 교체한다.
- 컴포넌트는 기능적인 재사용 단위이다.
- 2005년 Framework기반 기법
- 기능 중심을 넘어 더 큰 재사용성을 위해 등장함
- 2010년대 functional기반 기법
- 메서드 자체가 클래스 안에서 실행하지 않아도 됨 (자바의 경우 메서드는 클래스가 필요함)
- 개발자 편의성과 시스템 성능은 반비례 관계
- JS, Python
2. 구조적 측면
- 메인프레임 구조
- Client-Server 구조
- http를 통한 송수신(text)
- 웹
- server(구조 및 자바)
web application
6계층 Html.... |
5계층 JavaEE
|
|
|
|
|
JVM 구동 예제
class Hello{
public static void main(STring []args){
System.out.println("hello");
}
}
Hello.javac-> hello.class
verifier가 검수를 마치고 machine code 제너레이터로 머신코드로 변경후 java virtual machine에게 load
- load -> main을 제외한 static 멤버 초기화 -> 상속관계 파악 -> 메인 수행(로드 여부를 물으면서 클래스 실행)시 메모리에 올린다.
Web Server Application의 서블렛에서는 메인이 없어 위와같은 작업을 하지 못한다. 즉 new 연산을 수행할수 없는데 이를 톰캣이 가능하게 만든다.(쓰레드작업도 수행한다.)
프레임워크에서는 서블릿을 이용해 jvm을 활용한다. 다만 컴파일과정에서 많은 코드가 생성되어 개발은 쉽지만 효율은 떨어진다.
'Java > 개념정리' 카테고리의 다른 글
자바 웹의 동작 구조(이미지) (0) | 2020.07.31 |
---|---|
oop의 3대 컨셉(캡슐화,상속,다형성) (2) | 2020.07.31 |
리눅스 서버관련 자료 (2) | 2020.07.16 |
리눅스 명령어 모음_(2) (2) | 2020.07.15 |
리눅스 명령어 모음_(1) (2) | 2020.07.15 |