포스트

3. 웹 어플리케이션에 대하여

웹 어플리케이션에 대하여

3. 웹 어플리케이션에 대하여

web Application과 기술

web server ⇒(실행)⇒ web application ⇒(데이터 저장)⇒ DBMS

web server

  • Tomcat 등 제품을 사용함

web App

  • Java App : Java + servlet/JSP+Spring Framework
    - Spring Framework + Tomcat 서버 == Spring Boot (제품)
    → 즉, SpringF/W와 SpringBoot는 서버가 추가되어있냐 안 되어있냐의 차이이다.
    Spring Boot를 해봤으면서 SpringF/W를 안해봤다는건 어불성설
  • HTML, CSS, JavaScript → jQuery + Bootstrap + React
  • SQL
  • XML
  • Properties file
  • …등

DBMS

  • 데이터를 저장하고 조회하는 일을 함
  • Mysql 등 제품을 설치하여 사용

개발 보조도구

  • Gradle : 빌드 도구
  • Docker, Git, Jenkins : Ops도구(운영(배포)를 도와주는 도구)

Application 개발 및 실행 절차

  1. 명령문 (컴퓨터가 해야 할 일(계획, 절차)을 명시 = Computer Program)(자연어) → VSCode로 작성(File ex. .java, .C …등)
    • S/W와 Computer Program의 차이?
      S/W : Program 및 이를 실행 할 수 있는 모든 프로그램을 다 갖춘 것을 SoftWare라고 함 Program : 컴퓨터가 해야할 일을 명시해둔 파일 그렇기에 엄밀히 따지자면 S/W의 범주 안에 Program이 담겨있는 형태이다
    • ex.
      소프트웨어: 도서관 - 여러 책(프로그램)과 그에 필요한 인프라(데이터 및 문서)를 포함.
      프로그램: 단일 책 - 특정 주제를 다루는 한 권의 책.
  2. ⇒ 변환(compile < compiler) ⇒
  3. 실행할 수 있는 코드(cpu가 이해하는 명령어 =. 기계어) ⇒(실행)⇒ OS(Window, Linux, macOS)

CPU, 기계어, OS의 상관 관계

왜 OS가 다르면 인식하지 못하나?

ex. hello.c ⇒(컴파일)⇒ 기계어(=CPU에서 인식하는 명령코드) ⇒ Windows OS / Linux OS / mac OS ⇒ Intel CPU

  • OS마다 실행 파일 양식이 다르기 때문에. (ex. 공통된 이력서로 삼성, LG, SK에 넣으면 양식이 달라 거부됨)
  • Windows : PE, Linux : ELF, macOS : mach-O 의 실행 파일 형식을 가지고있다.

같은 OS에 CPU가 다른 경우는?

ex. hello.c ⇒(컴파일)⇒ 기계어 ⇒ Windows OS ⇒ IntelCPU / ARMCPU 라면

  • 기계어 == CPU에서 인식하는 명령코드이다.
  • 이때 CPU가 마다 기계어 자체가 다르게 컴파일 되기 때문에 동일한 OS를 가지더라도 파일 실행이 불가능하다.
짤지식
  • 리버스 엔지니어링 : 컴파일한 (인간의 언어 > 기계언어) 것을 다시 인간의 언어로 최적화하여 번역
  • unix의 경우 컴파일러를 내장하고 있음

Application 개발 방식

  1. 컴파일 방식

    [.C(source)] ⇒(compile)⇒ [기계어] ⇒(실행)⇒ [OS]

  2. 인터프리트 방식

    [.js(source)] ⇒(load)⇒ [JavaScript Interpreter(= node)] ⇒(실행)⇒ [OS]

    JavaScript Interpreter = engine, runtime, virtual, player, viewer로 불린다.

    • JavaScript 엔진에 대해 짧게

      Chrom ← V8 JavaScript 엔진, Blink(HTML, CSS 렌더링)엔진

      • Blink는 WebKit(HTML, CSS 렌더링)엔진을 가져와 개선해서 만든 오픈 소스 엔진이다 WebKit 엔진은 Safari에 있던 엔진이다.

      V8 JavaScript 엔진 + alpha = node.js → —.js 실행

  3. 하이브리드 방식 = 컴파일 + 인터프리트

    [.java] ⇒(compile)⇒ [.class] ⇒(load)⇒ [Bytecode Interpreter] ⇒(실행)⇒ [OS]

    .class = 가상의 기계어 = 기계어와 유사 = 중간언어 → Bytecode = P-code

    Bytecode Interpreter = Java Virtual Machine(JVM)

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.