소프트웨어

Jnnsu·2023년 11월 19일
1

컴파일러 & 인터프리터

컴파일러

장점

  • 코드를 머신코드로 변환한 후에 사용자 컴퓨터로 보내고, 이를 실행.
  • 컴파일하는 과정은 사용자 컴퓨터에서 생략되기 때문에 속도가 빠름.

단점

  • 작성한 코드 전체를 컴파일한 후에 실행할 수 있기 때문에 편의성이 떨어짐(일부 수정해도 전체를 컴파일 해야함).
  • 머신코드로 전환한 뒤에 보내기 때문에 용량이 크다.(머신코드가 코드보다 길고 복잡하기 때문).

인터프리터

장점

  • 코드를 한줄씩 실행시키고 확인할 수 있기때문에 편의성이 좋다.
  • 코드 자체를 사용자 컴퓨터에 보내기 때문에 용량이 작다.

단점

  • 소스코드가 사용가 컴퓨터로 보내지기 때문에 보안에 취약하다.
  • 컴파일 되지 않은 상태에서 보내져 사용자 컴퓨터에서 컴파일을 해야해서 컴파일러보다 속도가 느리다.

운영체제

운영체제의 역할

  1. 입력과 출력 관리 : 입출력 장치와 애플리케이션 간 연결해주는 다리 역할을 한다.
  2. 저장과 불러오기 : 휘발성(RAM - 읽고 쓰는 속도 빠름), 비휘발성(HDD, SSD - 읽고 쓰는 속도 느림) 정보를 판단해서 각 저장장치에 전달. 각 상황마다 빠른 저장장치를 쓸지 느린 저장장치를 쓸지 판단한다. 수정 가능, 불가(ROM = 컴퓨터 기본 세팅 등이 저장됨) 정보도 판단한다.
  3. 멀티태스킹 : 각 장치들이 효율적으로 일할 수 있도록 역할분담을 해준다.

운영체제의 종류

  • 데스크탑
  • 모바일
  • 서버
  • 임베디드

애플리케이션

플랫폼 의존성

애플리케이션 개발자는 각각의 플랫폼에 맞춰 각각 개발을 해야한다.

플랫폼 파편화

애플리케이션 개발은 플랫폼 의존성이 높다보니 개발비용, 유지보수, 인적자원 등이 많이 들기 때문에 일부 회사에서는 일부 플랫폼은 지원하지 않는 경우가 있다. 이것을 플랫폼 파편화라고 한다. 이것을 해결하기 위해 "표준"을 정했다.

표준

이어폰 연결단자, 블루투스, USB, HDMI 규격 통일처럼 애플리케이션 개발도 마찬가지이다.

크로스 플랫폼

가상의 플랫폼을 만들어 기존 플랫폼 위에서 실행하면 마치 동일한 플랫폼에서 실행하는 것처럼 작동하는 방식이다.
이것을 시도한 것은 Java이고 가상의 플팻폼은 JVM(Java Virtual Machine)이고 이식성과 범용성이 높다.
다른 또하나는 WEB이다. 여기서 Java와 역할이 같은 것은 HTML, CSS, Javascript이고 JVM 처럼 가상의 플랫폼은 브라우저이다. 접근성이 높고 간편하다.
웹은 더 간편하게 크로스 플랫폼을 만들 수 있고, 각 플랫폼에 맞게 디자인을 해줄 수 있다. 이것을 "반응형 웹 디자인" 이라고 한다.
웹은 Java에 국한된 것이 아니고 ISO(국제 표준화 기구)에 웹 표준이 명시되어 있다.
웹의 단점은 브라우저 호환성 문제이다. 어떤 브라우저를 쓰느냐, 버전이 몇이냐에 따라 동작의 차이가 발생할 수 있고, 아예 실행이 안될 수도 있다.

Native 애플리케이션 & 웹 애플리케이션

네이티브 애플리케이션

  • OS 위에서 바로 동작하기 때문에 더 많은 기능들의 사용이 가능하다
  • 설치, 배포 과정을 반드시 거쳐야 하고 수정되면 사용자가 업데이트를 해줘야 한다.
  • 마켓에 등록하려면 일정 규정을 지켜야 한다
  • 인터넷 없이 사용할 수 있다.

웹 애플리케이션

  • OS 위의 브라우저 위에서 동작한다
  • 설치, 배포 등의 과정이 필요없고 주소만 입력하면 바로 접속이 가능하다. 수정사항이 실시간으로 반영된다.
  • 적은 투자와 노력으로 서비스를 런칭하고 싶은 회사들의 대안이 되고 있다.

웹을 활용하는 여러가지 방법

  1. Single-Page Application : 하나의 페이지에 버튼을 눌러도 내용만 갈아끼우게 된다. ( 페이스북, gmail, google맵 등)
  2. Hybrid Web Application : 일반적인 네이티브 애플리케이션의 일부를 웹으로 대체하는 것이다. (앱 내 광고를 위한 자리에 웹 자리를 비워두는 것)
  3. Progressive Web Application(PWA) : 웹, 네이티브의 장점만 합치려는 시도이다. 정확히 말하자면 네이티브의 장점을 많이 가져온 웹 애플리케이션이다.

0개의 댓글