크로스 플랫폼(Cross Platform)
크로스 플랫폼(Cross Platform 또는 Multi Platform)은 아주 오래 전부터 있던 개념이다.
크로스 플랫폼은 "교차"를 뜻하는 "Cross"와 Platform의 합성어로, "다양한 플랫폼에서 사용할 수 있는"이라는 뜻을 가지고 있다. 크로스 플랫폼을 지원하는 대표적인 언어로는 Java가 있다.
크로스 플랫폼을 제일 쉽게 이해하는 방법은 C언어와 Java의 소스코드 컴파일(Compile)방식을 비교해 보면 된다.
C언어는 제작한 소스코드를 각각 운영체제에 맞는 컴파일러로 컴파일해서 실행시키게 된다. 그렇게 되면 C언어로 프로그램을 짜고 윈도우 버전, 맥 버전, 리눅스 버전을 만들기 위해서 각각의 컴파일러로 3번 컴파일을 해줘야 한다.
"뭐 세번 컴파일 하지"라고 생각할 수 있겠지만, 프로그램 규모가 커지고 컴파일 시간이 길어지면 많은 부담이 될 것이다. 게다가 수정을 하고 나면 또 다시 세번의 컴파일을 해야 되기 때문에 여간 불편한게 아니다.
Java
Java는 크로스 플랫폼을 지원하는 언어이다. 그것은 자바 프로그램이 컴퓨터 안에서 바로 실행되지 않고, JVM(Java Virtual Machine)이라는 가상의 공간에서 실행되기 때문에 가능한 일이다.
Java 컴파일러는 소스코드를 컴파일해서 "바이트 코드(Byte Code)"를 생성한다. 그리고 사람들은 그 바이트 코드를 자신의 운영체제에 맞게 설치된 JVM 위에서 실행시키기만 하면 된다.
이렇게 되면 Java 소스코드를 한번만 컴파일 해도 되기 때문에 C언어 컴파일 방식보다 유지 보수 면에서, 그리고 다양한 운영체제를 지원하는데 있어서 훨씬 편리하게 된다.
크로스 플랫폼 : 게임
우리 주변에서 사용하고 있는 프로그램들 중에서는 크로스 플랫폼으로 개발된 것이 굉장히 많다. 자바로 개발된 것 외에도 말이다. 요즘은 유지보수와 관리의 목적의 편의성을 목적으로 앱을 설계할 때부터 크로스 플랫폼으로 제작하는 경우가 많다. 대표적인 것이 바로 게임이다.
안드로이드 버전과 이이폰 버전의 출시일이 다른 게임들도 있지만, 그런 경우가 아니고서는 보통 크로스 플랫폼으로 개발되어 아이폰과 안드로이드용 버전을 동시에 출시하는 경우도 늘고 있다.
대표적인 게임으로는 "하드스톤(HearthStone)"이 있다.
하드스톤은 멀티 플랫폼 게임 개발 툴인 "유니티(Unity)"로 제작되어 피씨, 안드로이드, 아이폰에서 동시에 즐길 수 있는 게임이다. 그 외에도"코코스2D(Cocos-2D)"로 개발된 "쿠키런", "언리얼엔진(UnrealEngine)"으로 개발된 "오버히트" 등이 대표적이라고 할 수 있다.
위의 예시들에서 볼 수 있듯이, 요즘 사용하는 게임 개발 툴들은 대부분 크로스 플랫폼을 지원한다.
크로스 플랫폼을 지원하는 게임 개발툴
- 유니티(Unity3D)
- 언리얼 엔진(UnrealEngine)
- 게임메이커 스튜디오(Gamemaker Studio)
- 코코스2D(Cocos-2Dx)
게다가 요즘은 이런 툴들을 무료로 사용할 수 있도록 풀어주고 있어서, 사용해보면 좋을것이다.
게임 개발에서는 하나의 프로젝트로 개발해서 '각자 다른 운영체제로 "포팅"한다'는 표현을 사용한다.
크로스 플랫폼을 사용하는건 게임 분야 뿐만이 아니다.
크로스 플랫폼 : 웹/모바일 어플리케이션
크로스 플랫폼이 가장 활발하게 적용되고 있는 곳이"웹/모바일 어플리케이션 분야"가 아닌가 싶다.
마이크로소프트 소속의 소프트웨어 회사 "자마린(Xamarin)"은 2011년 C#을 기반으로 한 크로스 플랫폼 개발 도구인 "자마린"을 만들었다.
자마린은 2012년 'Xamarin.Mac'을 출시하고, 그 뒤로도 다양한 플랫폼으로 포팅할 수 있는 SDK(Software Development Kit)를 만들었다.
그리고 지금 자마린은 IOS, OSX, Android, Windows 등의 플랫폼으로 포팅 가능한 크로스 개발 도구가 되었다.
자마린은 2016년에 자신들이 개발한 SDK를 오픈 소스(Open Source)로 풀어버리면서 더 많은 사람들이 활발하게 자마린을 사용하고 있다.
자마린 공식 사이트 : https://www.xamarin.com/
Xamarin | Open-source mobile app platform for .NET
Xamarin is a free and open source mobile app platform for building native and high-performance iOS, Android, tvOS, watchOS, macOS, and Windows apps in C# with .NET.
dotnet.microsoft.com
그리고 자마린과 양대 산맥을 이루고 있는 크로스 플랫폼 개발 도구가 있다.
바로 "리액트 네이티브(React Native)"이다.
리액트(React)는 페이스북에 의해 만들어진 '자바스크립트 라이브러리'이다.
React.js는 웹 프론트 엔드 라이브러리이고, React Native는 자마린과 비슷한 기능을 수행하는 크로스 플랫폼 개발 도구다.
React Native는 자마린보다는 조금 늦은 2015년에 발표되었다.
React Native는 자바스크립트를 기반으로 해서 안드로이드, IOS, UWP(Universal Windows Platform)의 프로그램들을 개발할 수 있다.
리액트 네이티브 공식 사이트 : http://facebook.github.io/react-native/
React Native · Learn once, write anywhere
A framework for building native apps using React
reactnative.dev
그 외에도 자주 사용되는 크로스 플랫폼 개발 도구는 "Electron"이 있다.
우리 주변에서 사용하는 정말 많은 프로그램들이 Electron으로 제작되었다.
- 디스코드(Discord)
- 아톰(Atom)
- Visual Studio Code
- WordPress.com
- Slack
- GitHub Desktop
- Docker Kinematic
Electron 공식 사이트 : https://electronjs.org/
Electron | Build cross-platform desktop apps with JavaScript, HTML, and CSS.
Build cross-platform desktop apps with JavaScript, HTML, and CSS.
www.electronjs.org
'Programming > Programming' 카테고리의 다른 글
[JSP] JSP(Java Server Pages) (0) | 2022.07.24 |
---|---|
반응형 웹 (0) | 2022.07.24 |
참조자(Reference) (0) | 2022.07.24 |
동기 통신과 비동기 통신 (0) | 2022.07.18 |
리눅스 vi 명령어 정리 (2) | 2022.06.09 |