Web/별별 개발 이야기

[별별 개발 용어] 크로스 플랫폼(Cross Platform)이란?

JuniorEinstein 2018. 3. 9. 18:08
728x90

크로스 플랫폼(Cross Platform 또는 Multi Platform)은 아주 오래 전부터 있던 개념입니다.


크로스 플랫폼(Cross Platform)이란?

크로스 플랫폼(Cross Platform)"교차"를 뜻하는 "Cross"와 Platform의 합성어로, "다양한 플랫폼에서 사용할 수 있는"이라는 뜻을 가지고 있습니다.


크로스 플랫폼을 지원하는 대표적인 언어로는 Java가 있습니다.


크로스 플랫폼을 제일 쉽게 이해하는 방법은 C언어와 Java의 소스코드 컴파일(Compile)방식을 비교해 보면 됩니다.


C언어

<C언어 컴파일 과정>


C언어는 제작한 소스코드를 각각 운영체제에 맞는 컴파일러로 컴파일해서 실행시키게 됩니다. 그렇게 되면 C언어로 프로그램을 짜고 윈도우 버전, 맥 버전, 리눅스 버전을 만들기 위해서 각각의 컴파일러로 3번 컴파일을 해줘야 합니다.


"아 까이껏 뭐 세번 컴파일 하지!"라고 생각하실 수 있겠지만, 프로그램 규모가 커지고! 컴파일 시간이 길어지면 많은 부담이 될겁니다. 게다가 수정을 하고 나면 또 다시 세번의 컴파일을 해야 되기 때문에 여간 불편한게 아니죠!


Java

Java는 크로스 플랫폼을 지원하는 언어입니다. 그것은 자바 프로그램이 컴퓨터 안에서 바로 실행되지 않고, JVM(Java Virtual Machine)이라는 가상의 공간에서 실행되기 때문에 가능한 일입니다.


<Java 컴파일 과정>


Java 컴파일러는 소스코드를 컴파일해서 "바이트 코드(Byte Code)"를 생성합니다. 그리고 사람들은 그 바이트 코드를 자신의 운영체제에 맞게 설치된 JVM 위에서 실행시키기만 하면 됩니다.


이렇게 되면 Java 소스코드를 한번만 컴파일 해도 되기 때문에 C언어 컴파일 방식 보다 유지 보수 면에서, 그리고 다양한 운영체제를 지원하는데 있어서 훨씬 편리하게 됩니다.


크로스 플랫폼 : 게임

그러면 이제 본격적으로 크로스 플랫폼에 대해서 이야기 해보도록 하겠습니다!


우리 주변에서 사용하고 있는 프로그램들 중에서는 크로스 플랫폼으로 개발된 것이 굉장히 많습니다! 자바로 개발된 것 이외에도 말이죠. 요즘은 유지 보수와 관리의 목적의 편의성을 목적으로 앱을 설계할 때부터 크로스 플랫폼으로 제작하는 경우가 많습니다.


대표적인 것이 바로 '게임'입니다!


안드로이드 버전과 아이폰 버전의 출시일이 다른 게임들도 있지만, 그런 경우가 아니고서는 보통 크로스 플랫폼으로 개발되어 아이폰과 안드로이드용 버전을 동시에 출시하는 경우도 늘고 있습니다.


대표적인 게임으로는 "하스스톤(HearthStone)"이 있습니다.


<대표적인 크로스 플랫폼 게임인 "하스스톤">


하스스톤은 멀티 플랫폼 게임 개발 툴인 "유니티(Unity)"로 제작되어, 피씨, 안드로이드, 아이폰에서 동시에 즐길 수 있는 게임입니다.


그 외에도 "코코스2D(Cocos-2D)"로 개발된 "쿠키런", "언리얼엔진(UnrealEngine)"으로 개발된 "오버히트" 등이 대표적이라고 할 수 있습니다.


위의 예시들에서 볼 수 있듯이, 요즘 사용하는 게임 개발 툴들은 대부분 크로스 플랫폼을 지원합니다.


크로스 플랫폼을 지원하는 게임 개발툴

  • 유니티(Unity3D)
  • 언리얼 엔진(Unreal Engine)
  • 게임메이커 스튜디오(Gamemaker Studio)
  • 코코스2D(Cocos-2dx)
게다가 요즘은 이런 툴들을 무료로 사용할 수 있도록 풀어주고 있어서, 사용해보시면 좋을것 같습니다.


게임 개발에서는 하나의 프로젝트로 개발해서 '각자 다른 운영체제로 "포팅"한다'는 표현을 사용하더군요.


크로스 플랫폼을 사용하는건 게임 분야 뿐만이 아닙니다.


크로스 플랫폼 : 웹/모바일 어플리케이션

요즘 들어 크로스 플랫폼이 가장 활발하게 적용되고 있는 곳이 "웹/모바일 어플리케이션 분야"가 아닌가 싶습니다.


마이크로소프트 소속의 소프트웨어 회사 "자마린(Xamarin)"은 2011년 C#을 기반으로 한 크로스 플랫폼 개발 도구인 "자마린"을 만들었습니다.


자마린은 2012년 'Xamarin.Mac'을 출시하고, 그 뒤로도 다양한 플랫폼으로 포팅할 수 있는 SDK(Software Development Kit)를 만들었습니다.


그리고 지금 자마린은 IOS, OSX, Android, Windows 등의 플랫폼으로 포팅 가능한 크로스 플랫폼 개발 도구가 되었습니다.


자마린은 2016년에 자신들이 개발한 SDK를 오픈 소스(Open Source)로 풀어버리면서 더 많은 사람들이 활발하게 자마린을 사용하고 있습니다.


<강력한 크로스 플랫폼 개발 도구인 "Xamarin">


자마린 공식 사이트 : https://www.xamarin.com/


그리고 자마린과 양대 산맥을 이루고 있는 크로스 플랫폼 개발 도구가 있습니다.


바로 "리액트 네이티브(React Native)" 입니다.


리액트(React)는 페이스북에 의해 만들어진 '자바스크립트 라이브러리'입니다.


React.js는 웹 프런트 엔드 프레임워크이고, React Native는 자마린과 비슷한 기능을 수행하는 크로스 플랫폼 개발 도구입니다.


React Native는 자마린보다는 조금 늦은 2015년에 발표되었습니다.


React Native는 자바스크립트를 기반으로 해서 안드로이드, IOS, UWP(Universal Windows Platform)의 프로그램들을 개발할 수 있습니다.


<페이스북에서 개발한 "React Native">


리액트 네이티브 공식 사이트 : http://facebook.github.io/react-native/


그 외에도 자주 사용되는 크로스 플랫폼 개발 도구는 "Electron"이 있습니다.


우리 주변에서 사용하는 정말 많은 프로그램들이 Electorn으로 제작되었습니다.

  • 디스코드(Discord)
  • 아톰(Atom)
  • Visual Studio Code
  • WordPress.com
  • Slack
  • GitHub Desktop
  • Docker Kinematic
Electron은 조만간 시간 되면! 강좌도 올려 보도록 하겠습니다.

Electron 공식 사이트 : https://electronjs.org/

마무리

오늘은 크로스 플랫폼(Cross Platform)에 대해서 알아봤습니다. 어떠셨나요??

앞으로 더 유익한 내용들도 찾아 뵙겠습니다!

질문은 환영입니다!


728x90