크로스플랫폼: 두 판 사이의 차이

내위키
편집 요약 없음
편집 요약 없음
(같은 사용자의 중간 판 2개는 보이지 않습니다)
1번째 줄: 1번째 줄:
Cross-platform.
Cross-platform.


멀티 플랫폼(multi-platform)이라고도 하다. 주로 소프트웨어에 쓰이는 개념으로, 같은 소프트웨어가 여러 플랫폼(하드웨어, 운영체제)에 걸쳐 구현되는 것을 뜻한다. 예를 들어 소프트웨어 개발자들이 애용하는 편집기인 [[비주얼 스튜디오 코드]]는 개발사인 마이크로소프트의 본진인 [[윈도우]]는 물론이고, 맥, [[리눅스]]에서도 잘 돌아간다. 각자 키보드가 디렉터리 구조 차이 같은 것들이 있긴 하지만 어떤 운영체제에서도 거의 비슷하게 사용할 수 있다. 이는 [[비주얼 스튜디오 코드]]가 크로스 플랫폼 프레임워크인 일렉트론을 기반으로 하고 있기 때문이다. 일렉트론은 [[HTML]]과 [[CSS]], [[자바스크립트]]를 기반으로 한 [[Node.js]]를 돌리는 식으로 동작한다.
멀티 플랫폼(multi-platform)이라고도 하다. 다만 멀티 플랫폼은 주로 사용자의 관점, 그러니까 똑같은 소프트웨어를 여러 운영체제에서 사용할 수 있는 경우를 주로 지창하는 반면 크로스 플랫폼은 개발자의 관점, 즉 똑같은 소스 코드를 여러 운영체제에서 사용할 수 있는 경우에 많이 쓰이는 용어다.


모바일 소프트웨어 업계에서도 최근에는 크로스 플랫폼 바람이 불고 있다. 안드로이드와 iOS가 각자 광범위한 세력을 가지고 있어서 많은 앱들이 양쪽 OS를 지원하고 있는데, 각자 네이티브로 개발하려면 안드로이드는 자바 또는 코틀린, iOS는 오브젝티브C 또는 스위프트 개발자가 필요하며, 각자 다른 언어로 개발되는 소스 코드를 관리하는 것도 점점 복잡해진다. 크로스 플랫폼 개발 환경을 사용하면 같은 언어로 양쪽 OS에 대응하는 앱을 만들 수 있기 때문에 필요한 개발자의 수도 줄어들고 소스 코드 관리도 편해지기 때문에 특히 개인 개발자나 소규모 스타트업들이 크로스 플랫폼에 더 많은 관심을 가지고 있다. 이러한 수요에 따라 다양한 크로스 플랫폼 개발 환경이 등장하고 있는데, [[HTML]][[자바스크립트]] 기반의 아파치 코르도바, 각 OS의 네이티브 인터페이스를 이용하는 페이스북의 리액트 네이티브와 [[마이크로소프트]]의 [[자마린]], 그리고 네이티브 UI를 일체 무시하고 자기가 UI를 싹 그려버리는<ref>하지만 [[구글]]의 머티리얼 UI와 애플의 쿠퍼티노 UI를 둘 다 지원하기 때문에 선택에 따라 [[안드로이드]]에서도 [[iOS]]와 거의 비슷한 인터페이스의 앱을 돌릴 수 있다.</ref> [[구글]][[플러터]]와 같은 도구들이 가장 널리 쓰이고 있다.
주로 소프트웨어에 쓰이는 개념으로, 같은 소프트웨어가 여러 플랫폼(하드웨어, 운영체제)에 걸쳐 구현되는 것을 뜻한다. 예를 들어 소프트웨어 개발자들이 애용하는 편집기인 [[비주얼 스튜디오 코드]]는 개발사인 마이크로소프트의 본진인 [[윈도우]]는 물론이고, 맥, [[리눅스]]에서도 잘 돌아간다. 각자 키보드가 디렉터리 구조 차이 같은 것들이 있긴 하지만 어떤 운영체제에서도 거의 비슷하게 사용할 수 있다. 이는 [[비주얼 스튜디오 코드]]가 크로스 플랫폼 프레임워크인 일렉트론을 기반으로 하고 있기 때문이다. 일렉트론은 [[HTML]][[CSS]], [[자바스크립트]]를 기반으로 한 [[Node.js]]를 돌리는 식으로 동작한다.


하나의 코드로 여러 플랫폼에서 구동할 수 있다는 것은 분명 매력 있고 효율도 좋아 보이지만 한계도 명확하다. 운영체제, 또는 하드웨어별로 차이가 있다 보니 정말로 크로스 플랫폼 기반으로 소프트웨어를 개발하려면 대상 운영체제들이 공통으로 지원하는 기능만을 써야 한다. 또한 대상 운영체제들이 공통으로 지원하더라도 구현 방법에 차이가 큰 경우에도 문제가 까다로워진다. 인기 많은 크로스 플랫폼 프레임워크라면  또한 운영체제에 따라 동작이 미묘하게 다른 부분이 적지 않다 보니 개발자를 골치아프게 만든다. 예를 들어 화면 구성이 안드로이드에서는 깔끔한데 iOS에서는 별로라든가, 그 반대의 경우도 있다. 이러다 보니 소프트웨어의 기능이 점점 많아지고 복잡해질수록 크로스 플랫폼의 한계가 점점 커지고, 결국은 각 운영체제별 네이티브 코드를 짜는 쪽으로 방향을 바꾸는 일도 많이 나타난다.  
모바일 소프트웨어 업계에서도 최근에는 크로스 플랫폼 바람이 불고 있다. 안드로이드와 iOS가 각자 광범위한 세력을 가지고 있어서 많은 앱들이 양쪽 OS를 지원하고 있는데, 각자 네이티브로 개발하려면 안드로이드는 자바 또는 코틀린, iOS는 오브젝티브C 또는 스위프트 개발자가 필요하며, 각자 다른 언어로 개발되는 소스 코드를 관리하는 것도 점점 복잡해진다. 크로스 플랫폼 개발 환경을 사용하면 같은 언어로 양쪽 OS에 대응하는 앱을 만들 수 있기 때문에 필요한 개발자의 수도 줄어들고 소스 코드 관리도 편해지기 때문에 특히 개인 개발자나 소규모 스타트업들이 크로스 플랫폼에 더 많은 관심을 가지고 있다. 이러한 수요에 따라 다양한 크로스 플랫폼 개발 환경이 등장하고 있는데, [[HTML]]과 [[자바스크립트]] 기반의 아파치 코르도바, 각 OS의 네이티브 인터페이스를 이용하는 페이스북의 리액트 네이티브와 [[마이크로소프트]]의 [[자마린]], 그리고 네이티브 UI를 일체 무시하고 자기가 UI를 싹 그려버리는<ref>하지만 [[구글]]의 머티리얼 UI와 애플의 쿠퍼티노 UI를 둘 다 지원하기 때문에 선택에 따라 [[안드로이드]]에서도 [[iOS]]와 거의 비슷한 인터페이스의 앱을 돌릴 수 있고 그 반대도 가능하다.</ref> [[구글]]의 [[플러터]]와 같은 도구들이 가장 널리 쓰이고 있다.
 
하나의 코드로 여러 플랫폼에서 구동할 수 있다는 것은 분명 매력 있고 효율도 좋아 보이지만 한계도 명확하다. 운영체제, 또는 하드웨어별로 차이가 있다 보니 정말로 크로스 플랫폼 기반으로 소프트웨어를 개발하려면 대상 운영체제들이 공통으로 지원하는 기능만을 써야 한다. 또한 대상 운영체제들이 공통으로 지원하더라도 구현 방법에 차이가 큰 경우에도 문제가 까다로워진다. 같은 기능을 가진 사용자 인터페이스가 모양이나 동작 방식은 영 다르거나, 겉보기에는 비슷해 보여도 동작이 미묘하게 다른 부분이 적지 않다 보니 개발자를 골치아프게 만든다. 예를 들어 화면 구성이 안드로이드에서는 깔끔한데 iOS에서는 별로라든가, 그 반대의 경우도 있다. 이러다 보니 소프트웨어의 기능이 점점 많아지고 복잡해질수록 크로스 플랫폼의 한계가 점점 커지고, 결국은 각 운영체제별 네이티브 코드를 짜는 쪽으로 방향을 바꾸는 일도 많이 나타난다.  


{{각주}}
{{각주}}


[[Category:소프트웨어]]
[[Category:소프트웨어]]

2020년 7월 28일 (화) 21:35 판

Cross-platform.

멀티 플랫폼(multi-platform)이라고도 하다. 다만 멀티 플랫폼은 주로 사용자의 관점, 그러니까 똑같은 소프트웨어를 여러 운영체제에서 사용할 수 있는 경우를 주로 지창하는 반면 크로스 플랫폼은 개발자의 관점, 즉 똑같은 소스 코드를 여러 운영체제에서 사용할 수 있는 경우에 많이 쓰이는 용어다.

주로 소프트웨어에 쓰이는 개념으로, 같은 소프트웨어가 여러 플랫폼(하드웨어, 운영체제)에 걸쳐 구현되는 것을 뜻한다. 예를 들어 소프트웨어 개발자들이 애용하는 편집기인 비주얼 스튜디오 코드는 개발사인 마이크로소프트의 본진인 윈도우는 물론이고, 맥, 리눅스에서도 잘 돌아간다. 각자 키보드가 디렉터리 구조 차이 같은 것들이 있긴 하지만 어떤 운영체제에서도 거의 비슷하게 사용할 수 있다. 이는 비주얼 스튜디오 코드가 크로스 플랫폼 프레임워크인 일렉트론을 기반으로 하고 있기 때문이다. 일렉트론은 HTMLCSS, 자바스크립트를 기반으로 한 Node.js를 돌리는 식으로 동작한다.

모바일 소프트웨어 업계에서도 최근에는 크로스 플랫폼 바람이 불고 있다. 안드로이드와 iOS가 각자 광범위한 세력을 가지고 있어서 많은 앱들이 양쪽 OS를 지원하고 있는데, 각자 네이티브로 개발하려면 안드로이드는 자바 또는 코틀린, iOS는 오브젝티브C 또는 스위프트 개발자가 필요하며, 각자 다른 언어로 개발되는 소스 코드를 관리하는 것도 점점 복잡해진다. 크로스 플랫폼 개발 환경을 사용하면 같은 언어로 양쪽 OS에 대응하는 앱을 만들 수 있기 때문에 필요한 개발자의 수도 줄어들고 소스 코드 관리도 편해지기 때문에 특히 개인 개발자나 소규모 스타트업들이 크로스 플랫폼에 더 많은 관심을 가지고 있다. 이러한 수요에 따라 다양한 크로스 플랫폼 개발 환경이 등장하고 있는데, HTML자바스크립트 기반의 아파치 코르도바, 각 OS의 네이티브 인터페이스를 이용하는 페이스북의 리액트 네이티브와 마이크로소프트자마린, 그리고 네이티브 UI를 일체 무시하고 자기가 UI를 싹 그려버리는[1] 구글플러터와 같은 도구들이 가장 널리 쓰이고 있다.

하나의 코드로 여러 플랫폼에서 구동할 수 있다는 것은 분명 매력 있고 효율도 좋아 보이지만 한계도 명확하다. 운영체제, 또는 하드웨어별로 차이가 있다 보니 정말로 크로스 플랫폼 기반으로 소프트웨어를 개발하려면 대상 운영체제들이 공통으로 지원하는 기능만을 써야 한다. 또한 대상 운영체제들이 공통으로 지원하더라도 구현 방법에 차이가 큰 경우에도 문제가 까다로워진다. 같은 기능을 가진 사용자 인터페이스가 모양이나 동작 방식은 영 다르거나, 겉보기에는 비슷해 보여도 동작이 미묘하게 다른 부분이 적지 않다 보니 개발자를 골치아프게 만든다. 예를 들어 화면 구성이 안드로이드에서는 깔끔한데 iOS에서는 별로라든가, 그 반대의 경우도 있다. 이러다 보니 소프트웨어의 기능이 점점 많아지고 복잡해질수록 크로스 플랫폼의 한계가 점점 커지고, 결국은 각 운영체제별 네이티브 코드를 짜는 쪽으로 방향을 바꾸는 일도 많이 나타난다.

각주

  1. 하지만 구글의 머티리얼 UI와 애플의 쿠퍼티노 UI를 둘 다 지원하기 때문에 선택에 따라 안드로이드에서도 iOS와 거의 비슷한 인터페이스의 앱을 돌릴 수 있고 그 반대도 가능하다.