본문 바로가기

Java/개념정리

computing paradigm & JAVA 동작 원리

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

  • ee.jar
  • Web Container (ee.jarf를 구현한 tomcat...) 
  • 4계층 javaSE : JDK
    • JRE >

      JVM(자바 클래스를 가동)
      -Heap
      --instance(객체)  < 가비지 콜렉터의 대상 (작동하면 system pause)
      ---young
      ----eden(new 객체생성)
      ----servive
      ---old
      --m/a(구조)
      ---일반, static, final, string

      -Stack

      -program counter register

      -none heap(코드 캐시영역)

  • 3계층 any web server
    • 쓰레드 & CGI의 문제점(이식성X)을 해결한 Servlet등장
    • !=process(자원공유X) => 쓰레드 기반(자원공유O)
  • 2계층 any o/s
  • 1계층 any h/w

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