애플리케이션이란?
End User(최종소비자)가 직접 사용하는 프로그램
컴퓨터에서, 모바일에서 모두 애플리케이션이라고 불림
놓치기 쉬운 애플리케이션 : 에어컨, 선풍기, 세탁기, 키오스크 등등에 사용되는 단순한 프로그램도 애플리케이션이라고 한다.
애플리케이션을 만들려면?
코드를 짜서 이 코드를 실제 실행 가능하도록 해주는 소프트웨어에 넣는다(?)
소프트웨어는 크게 두종류로 나뉘는데, 컴파일러와 인터프리터이다.
컴파일러 :
고수준의 프로그래밍 언어로 만든 코드를 머신코드로 바꾸어주는 것 : 프로그래밍 언어의 번역기
수정할때마다 번역기를 돌려줘야해서 개발 속도를 저해한다.
인터프리터 :
컴파일러의 단점을 극복하기 위해 만들어짐.
코드를 한 줄 씩 즉흥적으로 실행해주는 프로그램. 번역기라기보다는 실행기라고 할 수 있다.
사용자 컴퓨터의 사양이 낮을 것이기때문에 앱 실행속도가 낮을 가능성이 높다. 코드가 유출될 가능성도 높다.
프로그램 용량은 인터프리터 측이 더 작다. 고수준 언어가 저수준 언어에 비해 길이가 짧기 때문이다.
--> 주로 고수준 언어가 인터프리터, 저수준 언어가 컴파일 방식을 사용한다.
플랫폼의 파편화
플랫폼이란? : 프로그램이 실행되는 하드웨어, 소프트웨어 환경
애플리케션의 플랫폼은 운영체제이다.
운영체제의 플랫폼은 하드웨어다.
문제는 플랫폼 의존성 platform dependency
각 플랫폼에 맞게 프로그램을 만들어야 한다. 예를들어 하나의 OS를 위한 프로그램은 다른 OS에서 구동 안된다.
CPU종류가 안 맞으면 실행이 안되기도 하며, 모바일/랩탑 등 단말기 종류도 영향을 미친다.
그래서 플랫폼의 개수에 맞추어 프로그램을 많이 만들어야함
애플리케이션을 만들 때 운영체제와 하드웨어들 둘 다 고려해야해서 매우 힘들다. 모든 기기를 다 가지고 테스트 해봐야 한다...
그래서 어떤 어플은 일부 플랫폼만 지원하기도 한다. ->플랫폼의 파편화
플랫폼 파편화의 극복 1 : 해결책은 표준
휴대폰과 이어폰을 연결할 때, 연결 단자의 표준을 만들어 제조업체끼리 표준에 맞추어 기기를 만들기로 한다면 모든 이어폰과 휴대폰이 일일히 테스트 해 볼 필요 없이 서로 믿고 표준에 따라 각 기기를 제조하면 됨
플랫폼 파편화의 극복 2 : 크로스 플랫폼 : 여러 OS나 CPU등에서 동일하게 실행할 수 있는 환경
크로스 플랫폼의 원리는 가상의 플랫폼을 만들어 다양한 컴퓨터 위에 가상의 컴퓨터를 덧입힌 뒤, 그 가상의 컴퓨터에 맞는 프로그램 하나만 개발한다. 어댑터를 만들었다고 보면 된다!!!
이것을 시도한 언어가 JAVA, 자바로 만든 가상의 컴퓨터가 JVM이다. (이래서 JAVA가 많이 쓰이는구나..?) 다른 언어는 자바와 같이 가상 머신이 없는 경우가 대부분이라 환경에 따라 다른 코드 방식을 작성해야 한다고 함.
웹WEB도 같은 기능이 있다. (표준을 만들어 활용)
여기에서 브라우저는 크로이나 인터넷 익스플로러이다. 웹 브라우저가 어떤 하드웨어이던지 실행하도록 이미 설계되어있기 때문에, 웹의 규격에 맞추어 하나의 프로그램만 만들면 인터넷이 연결되는 모든 기기에서 바로 실행 가능하다.
반응형 웹디자인 : 기기가 바뀌면 바뀐 환경에 맞추어 자동으로 디자인이 바뀌는 것. 웹은 아주 간편하게 크로스 플랫폼을 구현할 수 있다.
웹 표준은 ISO(국제 표준화 기구)에 등록 되었으며, 웹의 활용 범위가 점점 넓어져, 모든 걸 웹 기술로 만들자는 추세도 생겨남 그러면 JAVAscript나 HTML을 배워야겠구먼? 자바스크립트는 웹 언어중 1등
웹을 넘어 다른 프로그래밍에도 자바스크립트를 쓴다.(예를 들면 앱개발. 그런데 아직 네이티브 앱으로 만드는 것과 동일한 퍼포먼스를 가지는 앱을 만들기에는 부족하다고 함)
웹의 단점은? 브라우저 호환성 문제
웹사이트는 브라우저에 따라 실행 여부가 달라짐
웹표준을 잘 준수한 브라우저를 사용해야한다. 너무 예전 버전/낮은 버전의 브라우저에서는 프로그램이 잘 작동되지 않는 경우가 많다.
'코린이의 코딩배우기' 카테고리의 다른 글
[17]Web App과 Native App (0) | 2022.01.01 |
---|---|
[16] OS : 애플리케이션을 도와주는 프로그램 (0) | 2021.12.26 |
[14]컴퓨터 사이언스의 기본기-(2) (0) | 2021.12.26 |
[13]컴퓨터 사이언스의 기본기-(1) (0) | 2021.12.25 |
[12]남의 코드에서 배우기 (0) | 2021.12.25 |
댓글