크로스 플랫폼
1. 개요
둘 이상의 플랫폼에서 실행 가능한 소프트웨어라는 것을 뜻하는 용어. 예시로, 한 앱이 안드로이드와 아이폰에서 '''기능상, 외관상의 차이 없이 똑같게''' 실행된다면 그 앱은 크로스 플랫폼으로 개발된 것이라 볼 수 있다.
대부분의 멀티플랫폼 프로젝트와 플랫폼은 JAVA 기반이나 .NET 언어와 같은 바이트코드를 사용하는 언어로 개발되었다.
2. 예시
- 웹 사이트[1][2]
- Java 또는 .NET CORE로 개발한 앱들[3]
- LLVM/Clang: . 윈도우, 리눅스, 맥을 모두 지원한다.
- 일렉트론 : UI는 HTML, 프로그램은 JS로 구현한다. Sublime Text, Atom(에디터), 비주얼 스튜디오 코드 등. 이 프로그램들은 일렉트론 프레임워크를 통해 개발되었다.
- Ruby, Python, Node.js: 기타 스크립트 언어들로 작성한 프로그램들[4]
- Xamarin: 개요에서 설명한대로 안드로이드, 아이폰, 윈도우폰 앱 개발이 가능하다.
- 안드로이드 스튜디오: 윈도우, 리눅스, 맥을 모두 지원한다.
- Unity: 역시 크로스 플랫폼을 지원하는 게임 엔진이며 모바일 플랫폼 외에 다수 플랫폼 지원[5]
- Flutter, React Native: 크로스개발의 끝판왕 종착역이라 할 수 있다. 웹, 안드로이드, iOS에서 모두 동일한 코드로 가장 좋은 결과물을 보여준다.
- Qt(프레임워크): 윈도우, 리눅스, 안드로이드, iOS 등의 대부분의 메이저 OS를 동일한 코드 (C++, QML)로 네이티브 기반의 개발이 가능하며 C++ 크로스 플랫폼의 최강자이다.
- 어도비 에어: 플래시와 HTML5를 사용하는 앱 개발 도구. 안드로이드, iOS, PC 지원
- Mono(모노) : .NET Core가 출시되기 이전까지 많은 개발자들이 사용하던, .NET 언어를 멀티플랫폼으로 구동시켜주는 런타임이다. 현재도 GTK# 개발 시 많이 사용되고 있다.
- .NET Core: .NET Framework 을 크로스 플랫폼에서 사용할 수 있게 해준다. 모노의 사실상의 후속작이자 asp.net 웹서버를 윈도우 맥 리눅스에서 구동케해줄 뿐 아니라 3.0 에서는 wpf winforms 도 지원한다.
- XAMPP: 윈도우, 리눅스, 맥에서 모두 실행할 수 있는 PHP 서버 툴이다.
- 오피스 스위트: 오픈오피스, 리브레오피스, WPS Office[6]
- 외부 연결 장치 드라이버: 프린터, 복합기, 외장형 블루레이 디스크 등. 이 제품들은 사용자가 윈도우즈에만 연결하리란 법이 없다. macOS나 리눅스에 연결할 수도 있다. 따라서 제조사들은 설치 디스켓에 윈도우즈용, 맥용, 리눅스용 드라이버을 같이 담아 제공하거나 회사 홈페이지에 각각의 운영체제용 드라이버들을 다 같이 다운받을 수 있게 한다.
- 그래픽 및 이미지 편집: 김프
- 미디어 플레이어: VLC, MPlayer
- 압축 프로그램: 7-Zip
- 기타 리눅스발 GNU 제품: 위의 김프, 7-Zip, gcc, Vim, MPlayer 등은 원래 리눅스용으로 먼저 개발한 걸 기반으로 윈도우즈와 맥에서도 돌아갈 수 있도록 크로스 플랫폼으로 다시 만든 것들이다. 리눅스는 태생부터 GNU를 표방한 운영체제다. 따라서 리눅스에서 돌아가는 것들은 누구나 자유롭게 수정하고 배포할 수가 있다. 바로 이때문에 리눅스용으로 만든 제품을 윈도우즈나 맥에서도 돌아갈 수 있도록 마개조(!!!)하는 경우가 엄청 많은 것이다. 무료로 내려받아 사용할 수 있는 크로스 플랫폼 중 리눅스발 GNU 또는 오픈소스 제품이 압도적으로 많은 이유가 이 때문이다.
3. 적용 게임
온라인 게임에도 콘솔 게임기, 모바일, PC 사이에 크로스 플랫폼이 적용되는 사례가 늘고 있다. (리스트 - #1(위키) / #2)
3.1. 풀 크로스 플랫폼
※ 출시된 모든 플랫폼에서 풀 크로스 플레이가 지원되고, 최소 3개(2개 이상의 현세대 콘솔 플랫폼 포함) 이상의 플랫폼 지원
3.2. 부분 크로스 플랫폼
※ 출시된 플랫폼 중 일부만 크로스 플레이가 지원되고, 최소 2개 이상의 플랫폼 지원
3.3. Xbox Play Anywhere
※ Xbox One과 Windows 10 간 멀티플레이 및 게임 데이터(저장 내용, 업적) 공유 기능을 지원하며 해당 게임 구매 시, 두 가지 기종의 버전을 동시에 소유할 수 있다.
- 크랙다운 3
- 페이블 포춘
- 포르자 시리즈
- 포르자 호라이즌 3
- 포르자 호라이즌 4
- 포르자 모터스포츠 7
- 기어스 오브 워 시리즈
- Sea of Thieves
- 헤일로 워즈 2
- 스테이트 오브 디케이 2
- 킬러 인스팅트(2013)
[1] 심지어는 어도비 플래시같이 웹 표준이 아닌 플러그인들도 대부분의 브라우저나 OS에서 거의 동일하게 실행이 가능하다. 오히려 HTML5보다도 규격화 되어 있다. 이는 플러그인 제작사만이 관여하기 때문에 여러 규격이 난립할 가능성이 적기 때문이다.[2] 브라우저로만 한정하면 IE, 엣지, 사파리 등 특정 플랫폼용으로만 나온 것들도 있다. 그리고 웹 표준을 따르지 않는 브라우저(사파리 등)는 따로 거기에 맞춰 사이트를 만들어야 한다.[3] 자바는 JVM을, .NET CORE는 자체 런타임을 사용하기에, 이론적으로는 모든 기기에서 모든 기능이 완벽히 같게 작동한다. 예를 들어서, 자바는 이클립스, .NET CORE는 ASP.NET CORE가 있다.[4] 다만 특정 OS에만 있는 기능을 사용해서 이에 의존성이 생기는 경우도 있다.[5] 보통 UI를 손보긴 해야 한다.[6] 중국산 오피스 소프트웨어.[7] 2020년 9월부터 지원하며 멀티플레이 외에 하나의 플레이어 계정으로 여러 기종 이용이 가능해졌다.[예정1] 크로스플랫폼 기능 추가 예정[8] PC와 모바일 간의 계정 연동 가능[예정2] 해당 플랫폼 출시 예정[9] XBOX ONE과 PC, 스위치는 함께 되지만 PS4는 PC만 가능하다.[10] PS4-XBOX One 유저 간에는 양사의 정책문제로 인해 매칭 불가능. PS4-iOS라던가 XBOX One-안드로이드 등 타 플랫폼 간에는 매칭이 된다.[11] 스팀, GOG간 크로스 플랫폼 지원[12] PS4판만 혼자 크로스 플레이는 지원하지 않는다.