1. 개요
소프트웨어가 둘 이상의 플랫폼을 지원하는것을 뜻하는 용어.크로스 플랫폼(Cross-Platform) 또는 멀티 플랫폼(Multi-Platform)으로 불린다.[1]
크로스 플랫폼을 지원하기 위해서는 다음과 같은 방법들이 사용된다.
- Java, .NET과 같은 런타임이 여러 플랫폼이 지원되는 실행환경에서 작동하도록 개발
- 타깃 플랫폼간의 차이점을 고려하여 컴파일이 가능하도록 소스코드 개발 후 플랫폼 별로 각각 컴파일
2. 예시
2.1. 언어
단, 소스코드가 특정 플랫폼에 의존하지 않거나, 플랫폼 별로 적절한 소스코드를 작성했을때를 전제로 한다.- 웹 사이트: 굉장히 넓은 플랫폼을 지원해주는 브라우저 덕분에 웹 표준만 잘 지킨다면 최신 브라우저에 한해 대부분의 플랫폼에서 일관성 있는 컨텐츠를 제공해줄수 있다.
- 어도비 플래시: 대부분의 브라우저나 OS에서 거의 동일하게 실행이 가능한 편이다. 오히려 HTML5보다도 규격화 되어 있다.[2]
- 대부분의 인터프리터/JIT 언어들: Ruby, Python, JavaScript 또는 기타 스크립트 언어 등등. 해당 플랫폼에 알맞는 런타임 환경이 구축되어 있기만 하면 실행 가능하기 때문이다.
- 대부분의 하이브리드 언어들: Java나 C#등의 언어. 인터프리터와 같은 이유로 가능하다. 하지만 중간 언어로 컴파일 하는 과정을 통해 인터프리터 보다 빠른 성능을 제공한다.[3]
- 특정 컴파일 언어들: C/C++ 같은 언어도 LLVM같은 컴파일러의 재량으로 크로스 플랫폼을 매우 넓게 지원할수 있다.
2.2. 프레임워크
- 일렉트론 : UI는 HTML, 프로그램은 JS로 구현한다.[4] Sublime Text, Atom(에디터), Visual Studio Code 등. 이 프로그램들은 일렉트론 프레임워크를 통해 개발되었다.
- Unity: 역시 크로스 플랫폼을 지원하는 게임 엔진이며 모바일 플랫폼 외에 다수 플랫폼 지원[5]
- Flutter, React Native, .NET MAUI 등의 모바일 크로스플랫폼 프레임워크
- Qt(프레임워크): 윈도우, 리눅스, 안드로이드, iOS 등의 대부분의 메이저 OS를 동일한 코드 (C++, QML)로 네이티브 기반의 개발이 가능하며 C++ 크로스 플랫폼의 최강자이다.
2.3. 소프트웨어
- 크로미움 기반 브라우저 및 파이어폭스: 윈도우, 맥, 리눅스, Android, iOS를 모두 지원한다.
- 안드로이드 스튜디오: 윈도우, 리눅스, 맥을 모두 지원한다.
- 어도비 에어: 플래시와 HTML5를 사용하는 앱 개발 도구. 안드로이드, iOS, PC 지원
- XAMPP: 윈도우, 리눅스, 맥에서 모두 실행할 수 있는 PHP 서버 툴이다.
- 오피스 스위트: 오픈오피스, 리브레오피스, WPS Office[6]
- 외부 연결 장치 드라이버: 프린터, 복합기, 외장형 블루레이 디스크 등. 이 제품들은 사용자가 윈도우즈에만 연결하리란 법이 없다. macOS나 리눅스에 연결할 수도 있다. 따라서 제조사들은 설치 디스켓에 윈도우즈용, 맥용, 리눅스용 드라이버을 같이 담아 제공하거나 회사 홈페이지에 각각의 운영체제용 드라이버들을 다 같이 다운받을 수 있게 한다.
- 그래픽 및 이미지 편집: 김프
- 미디어 플레이어: VLC, MPlayer
- 압축 프로그램: 7-Zip
- 기타 리눅스발 GNU 제품: 위의 김프, gcc, Vim, MPlayer 등은 원래 리눅스용으로 먼저 개발한 걸 기반으로 윈도우즈와 맥에서도 돌아갈 수 있도록 크로스 플랫폼으로 다시 만든 것들이다. 리눅스는 태생부터 GNU를 표방한 운영체제다. 따라서 리눅스에서 돌아가는 것들은 누구나 자유롭게 수정하고 배포할 수가 있다. 바로 이때문에 리눅스용으로 만든 제품을 윈도우즈나 맥에서도 돌아갈 수 있도록 마개조(!!!)하는 경우가 엄청 많은 것이다. 무료로 내려받아 사용할 수 있는 크로스 플랫폼 중 리눅스발 GNU 또는 오픈소스 제품이 압도적으로 많은 이유가 이 때문이다.