크로스 플랫폼 소프트웨어

Cross-platform software

컴퓨팅에서 크로스 플랫폼소프트웨어(멀티 플랫폼소프트웨어, 플랫폼에 구애받지 않는 소프트웨어 또는 플랫폼에 구애받지 않는 소프트웨어라고도 함)는 여러 컴퓨팅 [1]플랫폼에서 동작하도록 설계된 컴퓨터 소프트웨어입니다.크로스 플랫폼 소프트웨어 중에는 플랫폼별로 별도의 빌드가 필요한 것도 있지만 특별한 준비 없이 직접 실행할 수 있는 것도 있습니다.또한 인터프리터 또는 런타임 패키지가 공통 또는 지원되는 [2]모든 플랫폼의 표준 컴포넌트인 휴대용 바이트 코드로 컴파일할 수도 있습니다.

예를 들어 마이크로소프트 윈도우즈, 리눅스macOS에서 크로스 플랫폼 응용 프로그램을 실행할 수 있습니다.크로스 플랫폼소프트웨어는 많은 플랫폼에서 실행할 수 있습니다.또는 2개까지 실행할 수 있습니다.크로스 플랫폼 개발을 위한 프레임워크로는 Codename One, Kivy, Qt, Flutter, NativeScript, Xamarin, Phonegap, IonicReact [3]Native가 있습니다.

플랫폼

플랫폼운영체제(OS) 또는 응용 프로그램이 실행되는 프로세서(CPU) 또는 기타 하드웨어 유형, OS 유형 또는 두 [4]가지 조합입니다.공통 플랫폼의 예로는 x86 아키텍처에서 실행되는 Microsoft Windows OS가 있습니다.다른 잘 알려진 데스크톱 플랫폼으로는 Linux/Unix와 macOS있습니다. 이 두 플랫폼은 모두 크로스 [4]플랫폼입니다.하지만 스마트폰과 같은 많은 기기들이 플랫폼이기도 하다.애플리케이션은 특정 플랫폼(하드웨어, OS 또는 가상 머신(VM))의 기능에 따라 작성될 수 있습니다.를 들어 Java 플랫폼은 많은 OS 및 하드웨어 [5]유형에서 실행되는 공통 VM 플랫폼입니다.

하드웨어

하드웨어 플랫폼은 명령 집합 아키텍처를 참조할 수 있습니다.예를 들어, x86 아키텍처와 IA-32x86-64와 같은 변형입니다.이러한 머신은 Linux, OpenBSD, NetBSD, macOS, FreeBSD 등의 다른 OS를 실행할 수 있지만 Microsoft Windows의 [6]한 버전을 실행하는 경우가 많습니다.

32비트 ARM 아키텍처(및 새로운 64비트 버전)는 Android, iOS 및 기타 모바일 운영 체제를 실행하는 스마트폰과 태블릿 컴퓨터에서 일반적입니다.

소프트웨어

소프트웨어 플랫폼은 OS 또는 프로그래밍 환경 중 하나이지만 일반적으로는 두 가지 환경을 조합한 것입니다.예외는 Java입니다.Java는 OS에 의존하지 않는 VM을 사용하여 Java는 예외입니다.소프트웨어 플랫폼의 예는 다음과 같습니다.

마이너/이력

자바

Java 언어는 일반적으로 Java 플랫폼의 일부인 VM에서 실행되도록 컴파일됩니다.Java VM(JVM)은 모든 Java 코드를 실행하는 소프트웨어로 구현된 CPU입니다.이를 통해 JVM을 구현하는 모든 시스템에서 동일한 코드를 실행할 수 있습니다.Java 소프트웨어는 하드웨어 기반의 Java 프로세서로 실행할 수 있습니다.이것은 주로 임베디드 시스템에서 사용됩니다.

JVM에서 실행되는 Java 코드는 적절한 권한이 부여된 경우 디스크 I/O 및 네트워크 액세스와 같은 OS 관련 서비스에 액세스할 수 있습니다.JVM은 Java 응용 프로그램을 대신하여 시스템 호출을 수행합니다.이를 통해 사용자는 ACL에 따라 적절한 보호 수준을 결정할 수 있습니다.예를 들어 디스크 및 네트워크 액세스는 일반적으로 데스크톱 응용 프로그램에서는 활성화되지만 브라우저 기반 애플릿에서는 활성화되지 않습니다.Java Native Interface(JNI; Java 네이티브인터페이스)를 사용하여 OS 고유의 기능에 액세스 할 수도 있어 휴대성이 저하됩니다.

현재 Java Standard Edition 소프트웨어는 Microsoft Windows, macOS, 여러 Unix 계열 OS 및 임베디드 기기용 여러 실시간 운영 체제에서 실행할 수 있습니다.모바일 애플리케이션의 경우 Windows 및 Mac 기반 장치에 브라우저 플러그인이 사용되며, Android는 Java를 기본적으로 지원합니다.Java Card나 Java Platform, Micro Edition과 같은 Java의 서브셋도 있으며 리소스가 제한된 장치를 위해 설계되었습니다.

실장

소프트웨어가 크로스 플랫폼으로 간주되려면 여러 컴퓨터 아키텍처 또는 OS에서 작동해야 합니다.OS마다 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)가 다르기 때문에 이러한 소프트웨어를 개발하는 데 시간이 많이 걸릴 수 있습니다.예를 들어 리눅스는 윈도우즈와 다른 API를 사용합니다.

1개의 OS용으로 작성된 소프트웨어는 OS가 지원하는 모든 아키텍처에서 자동으로 동작하지 않을 수 있습니다.예를 들어 OpenOffice.org은 2006년에는 x86-64 표준을 구현하는 AMD64 또는 인텔64 프로세서에서 기본적으로 실행되지 않았습니다.2012년에는 이러한 시스템에 「[9]포팅」되었습니다.소프트웨어가 C나 C++와 같은 일반적인 프로그래밍 언어로 작성되었다고 해서 해당 언어를 지원하는 모든 OS에서 실행되거나 같은 OS의 다른 버전에서 실행된다는 의미는 아닙니다.

웹 응용 프로그램

웹 애플리케이션은 일반적으로 크로스 플랫폼이라고 합니다.왜냐하면 브라우저가 플랫폼이기 때문에 어떤 웹 브라우저에서든 액세스할 수 있기 때문입니다.웹 애플리케이션은 일반적으로 클라이언트-서버 모델을 사용하지만 복잡성과 기능은 크게 다릅니다.기능에 대한 욕구와 호환성에 대한 요구를 조화시키는 것은 어려울 수 있습니다.

기본 웹 애플리케이션은 상태 비저장 서버에서 전체 또는 대부분의 처리를 수행하고 결과를 클라이언트 웹 브라우저에 전달합니다.애플리케이션과의 모든 사용자 상호 작용은 데이터 요청 및 서버 응답의 단순한 교환으로 구성됩니다.이러한 유형의 애플리케이션은 월드 와이드 웹 애플리케이션 개발 초기 단계에서 표준이었습니다.이러한 응용 프로그램은 정적 웹 페이지를 제공하는 것과 동일한 단순한 트랜잭션 모델을 따릅니다.오늘날 이러한 기능은 여전히 비교적 보편적이며, 특히 플랫폼 간 호환성과 단순성이 고급 기능보다 더 중요하다고 간주됩니다.

고급 웹 응용 프로그램의 대표적인 예로는 Gmail, A9.com, Google 지도 웹 사이트 및 Microsoft의 실시간 검색 서비스(현재의 Bing)가 있습니다.이러한 애플리케이션은 일반적으로 최신 버전의 인기 웹 브라우저에서만 볼 수 있는 추가 기능에 의존합니다.이러한 기능에는 Ajax, JavaScript, Dynamic HTML, SVG리치응용 프로그램의 기타 구성 요소가 포함됩니다.이전 버전에는 이러한 기능이 없는 경우가 많습니다.

디자인

호환성과 기능성에 대한 경쟁적인 이해관계로 인해 수많은 설계 전략이 등장했습니다.

많은 소프트웨어 시스템은 플랫폼 의존 코드가 최상위 계층과 최하위 계층으로 제한되는 계층 아키텍처를 사용합니다.

그레이스 풀 열화

그레이스 풀 열화는 모든 사용자 및 플랫폼에 동일하거나 유사한 기능을 제공하려고 하며, 그 기능은 보다 제한된 클라이언트브라우저에서는 최소 공통 요소로 감소시킵니다.예를 들어, 제한된 기능을 가진 브라우저를 사용하여 Gmail에 액세스하려는 사용자는 Gmail이 기능이 저하된 기본 모드로 전환되는 것을 알아차릴 수 있습니다.

다중 코드베이스

일부 소프트웨어는 서로 다른 (하드웨어 및 OS) 플랫폼용으로 다른 코드베이스로 유지 관리되며 동등한 기능을 갖추고 있습니다.이를 위해서는 코드를 유지하는 데 더 많은 노력이 필요하지만 플랫폼 고유의 코드 양이 많은 경우 도움이 될 수 있습니다.

단일 코드 베이스

이 전략은 하나의 코드베이스가 여러 플랫폼 고유의 형식으로 컴파일되는 것에 의존합니다.한 가지 기술은 조건부 컴파일입니다.이 기술을 사용하면 모든 플랫폼에 공통되는 코드가 반복되지 않습니다.특정 플랫폼에만 관련된 코드 블록은 조건부로 작성되므로 필요할 때만 해석 또는 컴파일됩니다.또 다른 방법은 기능을 분리하는 것입니다.이것은 브라우저나 OS에서 지원되지 않는 기능을 비활성화하면서 사용자에게 완전한 애플리케이션을 제공합니다.(「」도 참조해 주세요.문제의 분리)이 기술은 인터프리터 코드(스크립트 언어에서와 같이)가 실행 중인 플랫폼을 쿼리하여 다른 블록을 [10]조건부로 실행할 수 있는 웹 개발에 사용됩니다.

서드파티 라이브러리

서드파티 라이브러리는 단일 통합 API 뒤에 클라이언트 차별화의 복잡성을 숨기고 크로스 플랫폼 기능을 단순화하려고 시도하지만 벤더의 구속을 감수해야 합니다.

응답성이 뛰어난 웹 설계

Responsive Web Design(RWD; 응답형 웹 디자인)은 사이트의 시각적 레이아웃을 구축하여 크기 조정, 패닝 및 스크롤을 최소화하여 최적의 표시 환경을 제공하는 것을 목적으로 하는 웹 디자인 접근법입니다.이 기술에서는 플랫폼 고유의 코드가 거의 또는 전혀 사용되지 않습니다.

테스트

크로스 플랫폼 애플리케이션에는 훨씬 더 많은 통합 테스트가 필요합니다.일부 웹 브라우저에서는 동일한 시스템에 다른 버전을 설치할 수 없습니다.여러 플랫폼을 대상으로 하는 접근방식은 여러 가지가 있지만 모두 테스트와 [11]유지보수에 상당한 수작업이 필요한 소프트웨어가 됩니다.이 문제의 회피책으로 완전한 가상화 등의 기술이 사용될 수 있습니다.

페이지 개체 모델과 같은 도구를 사용하면 크로스 플랫폼 테스트를 스크립팅하여 하나의 테스트 케이스에서 여러 버전의 앱을 다룰 수 있습니다.다른 버전의 사용자 인터페이스가 유사한 경우 하나의 테스트 케이스로 모든 것을 테스트할 수 있습니다.

종래의 애플리케이션

웹 어플리케이션이 점점 인기를 얻고 있지만 많은 컴퓨터 사용자들은 여전히 클라이언트/웹 서버 아키텍처에 의존하지 않는 기존 어플리케이션 소프트웨어를 사용하고 있습니다.기존 애플리케이션과 웹 애플리케이션의 구분이 항상 명확하지는 않습니다.웹 어플리케이션과 기존 어플리케이션의 기능, 설치 방법 및 아키텍처가 중복되어 구별이 불분명합니다.그럼에도 불구하고, 이 단순화 구별은 일반적이고 유용한 일반화이다.

바이너리 소프트웨어

기존의 애플리케이션 소프트웨어는 바이너리 파일, 특히 실행 가능 파일로 배포되어 왔습니다.실행 파일은 자신이 구축한 플랫폼만을 지원합니다.즉, 단일 크로스 플랫폼 실행 파일이 특정 플랫폼에서 실행되지 않는 코드로 인해 매우 비대해질 수 있습니다.그 대신 일반적으로 하나의 플랫폼용으로 구축된 실행 파일을 선택할 수 있습니다.

C 또는 C++로 작성된 것과 같이 바이너리 실행 파일로 배포되는 소프트웨어의 경우 단일 코드 베이스를 여러 바이너리 실행 파일로 변환하는 도구 세트를 사용하여 플랫폼별로 소프트웨어 빌드가 있어야 합니다.예를 들어, 오픈 소스 웹 브라우저인 Firefox는 Windows, macOS(Apple Inc.Universal binary라고 부르는 을 통해 PowerPC와 x86 모두), Linux 및 BSD를 여러 컴퓨터 아키텍처에서 사용할 수 있습니다.4개의 플랫폼(이 경우 Windows, macOS, Linux 및 BSD)은 대부분 동일한 소스 코드에서 제공되지만 별도의 실행 가능한 배포입니다.드문 경우지만 여러 플랫폼용으로 작성된 실행 가능 코드가 바이너리라고 하는 단일 실행 가능 파일로 결합됩니다.

다른 툴셋을 사용하는 것으로는, 다른 플랫폼용으로 동작하는 실행 가능 파일을 구축하는 데 충분하지 않을 수 있습니다.이 경우 프로그래머는 소스 코드를 새로운 플랫폼에 포트해야 합니다.예를 들어, 이미 x86 패밀리의 Windows에서 실행되고 있는 Firefox 등의 애플리케이션은 x86(및 기타 아키텍처)의 Linux에서 실행되도록 수정 및 재구축할 수 있습니다.여러 버전의 코드는 별도의 코드베이스로 저장하거나 하나의 코드베이스로 병합할 수 있습니다.

포팅의 대안으로 크로스 플랫폼 가상화를 들 수 있습니다.이 가상화에서는 소스 코드나 바이너리를 변경하지 않고 다른 플랫폼에서 컴파일된 애플리케이션을 실행할 수 있습니다.예를 들어 인텔 기반 매킨토시 컴퓨터에 내장된 애플의 로제타는 PowerPC CPU를 사용한 이전 세대의 Mac용으로 컴파일된 애플리케이션을 실행합니다.또 다른 예로는 IBM PowerVM Lx86을 들 수 있습니다.이 예에서는 Linux/x86 애플리케이션을 Linux/Power OS에서 변경하지 않고 실행할 수 있습니다.

크로스 플랫폼 바이너리 소프트웨어의 예:

  • LibreOffice 오피스 스위트는 Microsoft Windows, macOS, 많은 Linux 디스트리뷰션, FreeBSD, NettBSD, OpenBSD, Android, iOS, iPadOS, Chrome OS, 웹 기반 Collabora Online 등을 위해 [12][13]구축되었습니다.이들 대부분은 IA-32, x86-64, ARM(ARMEL, ARMhf, ARM64), MIPSel, PowerPC, ppc64el, S390x[9][14] 등의 프로세서 아키텍처를 갖춘 여러 하드웨어 플랫폼에서 지원됩니다.

스크립트 및 인터프리터 언어

스크립트는 인터프리터를 여러 플랫폼에서 사용할 수 있고 스크립트가 언어에 내장된 기능만 사용하는 경우 크로스 플랫폼이라고 간주할 수 있습니다.예를 들어, 유닉스 계열 시스템용 Python으로 작성된 스크립트는 Windows에서 거의 또는 전혀 수정 없이 실행될 수 있습니다. Python은 Windows에서도 실행되기 때문입니다.실제로 많은 구현이 있습니다(예: IronPython for).NET Framework).많은 오픈 소스 스크립트 언어에서도 마찬가지입니다.

이진 실행 파일과 달리 스크립트를 해석하는 소프트웨어가 있는 모든 컴퓨터에서 동일한 스크립트를 사용할 수 있습니다.이는 스크립트가 보통 텍스트파일에 보통 텍스트로 저장되기 때문입니다. 바꿈 문자 표시와 같은 사소한 문제가 있을 수 있습니다.

일반적인 크로스 플랫폼스크립트 언어는 다음과 같습니다.

  • bashLinux 및 기타 최신 Unix 유사 시스템에서 실행되는 Unix 쉘 및 Cygwin POSIX 호환성 계층을 통해 Windows에서 실행됩니다.
  • Perl – 1987년에 처음 출시되었습니다.CGI 프로그래밍, 소규모 시스템 관리 태스크 등에 사용됩니다.
  • PHP – 주로 웹 응용 프로그램에 사용됩니다.
  • Python – 런타임 효율성 대신 신속한 애플리케이션 개발과 쓰기 용이성에 초점을 맞춘 언어입니다.
  • Ruby – 읽기 쉬운 오브젝트 지향 언어입니다.Ruby on Rails를 통해 웹에서도 사용할 수 있습니다.
  • Tcl – 웹 및 데스크톱 애플리케이션, 네트워킹, 관리, 테스트 등 다양한 용도에 적합한 동적 프로그래밍 언어입니다.

비디오 게임

크로스 플랫폼 또는 멀티 플랫폼은 다양한 비디오 게임 콘솔로 출시된 비디오 게임에도 적용할 수 있는 용어입니다.크로스 플랫폼 게임의 예로는 다음이 있습니다.광부 2049er, 툼 레이더: 레전드, 피파 시리즈, NHL 시리즈, 마인크래프트.

각각 Wii, PlayStation 3, Xbox 360, 개인용 컴퓨터 및 모바일 장치와 같은 다양한 게임 플랫폼을 통해 출시되었습니다.

일부 플랫폼은 다른 플랫폼보다 쓰기 어렵습니다.이를 상쇄하기 위해 비디오 게임을 몇 개의 플랫폼에서 먼저 출시하고 그 후에 다른 플랫폼에서 출시할 수 있습니다.비디오 게임 개발자는 하드웨어와 소프트웨어를 숙지해야 하기 때문에 일반적으로 새로운 게임 시스템이 출시될 때 이러한 현상이 발생합니다.

일부 게임은 개발자와 비디오 게임 콘솔 제조사 간의 라이센스 계약으로 인해 크로스 플랫폼이 적용되지 않을 수 있습니다.예를 들어, 디즈니최신 닌텐도와 소니 게임기에 출시할 의도로 게임을 만들 수 있다.만약 디즈니가 먼저 소니와의 게임을 허락한다면, 소니의 콘솔에서만 게임을 단기간 또는 무기한으로 출시해야 할 수도 있다.

크로스 플랫폼 플레이

여러 개발자들이 서로 다른 플랫폼을 사용하면서 온라인으로 게임을 즐길 수 있는 방법을 구현했습니다.싸이오닉스, 에픽게임즈, 마이크로소프트, 밸브는 모두 Xbox360과 플레이스테이션3 게이머들이 PC 게이머들과 게임을 할 수 있게 하는 기술을 가지고 있으며, 어떤 플랫폼을 사용할지는 소비자들에게 맡겨졌다.PC와 콘솔 게임 간의 이러한 수준의 상호작용을 가능하게 한 첫 번째 게임은 Quake [15]3이다.

크로스 플랫폼 온라인 플레이를 특징으로 하는 게임으로는 로켓 리그, 파이널 판타지 XIV, 스트리트 파이터 V, 킬러 인스팅트, 파라곤, 페이블 포춘, 그리고 윈도 10, VR 에디션, 포켓 에디션, Xbox One에서의 Better Together 업데이트가 있는 마인크래프트 등이 있다.

프로그래밍

크로스 플랫폼 프로그래밍은 여러 플랫폼에서 작동하도록 의도적으로 소프트웨어를 작성하는 방식입니다.

접근

크로스 플랫폼응용 프로그램을 작성하는 방법에는 여러 가지가 있습니다.한 가지 방법은 동일한 소프트웨어의 여러 버전을 서로 다른 소스 트리에 작성하는 것입니다. 즉, Microsoft Windows 버전의 응용 프로그램에는 소스 코드 파일 세트와 Macintosh 버전이 있고 FOSS *nix 시스템에는 세 번째 버전이 있을 수 있습니다.이것은 간단하지만, 하나의 플랫폼만을 위한 개발보다 더 많은 비용을 지불하거나 제품을 더 느리게 출시할 수 있습니다.또한 추적 및 수정해야 할 버그가 늘어날 수 있습니다.

또 다른 접근법은 플랫폼 간의 차이를 숨기는 소프트웨어를 사용하는 것입니다.이 추상화 레이어는 애플리케이션을 플랫폼으로부터 절연합니다.이러한 애플리케이션은 플랫폼에 의존하지 않습니다.JVM에서 실행되는 애플리케이션은 다음과 같이 구축됩니다.

일부 응용 프로그램은 최종 응용 프로그램을 만들기 위해 다양한 교차 플랫폼 프로그래밍 방법을 혼합합니다.예를 들어 Firefox 웹 브라우저는 추상화를 사용하여 하위 수준의 컴포넌트 중 일부를 구축하고 플랫폼 고유의 기능(GUI 등)을 구현하기 위한 별도의 소스 서브트리와 소프트웨어 이식성을 용이하게 하는 여러 스크립트 언어를 구현합니다.파이어폭스는 기존의 Netscape 스타일의 브라우저 플러그인과 더불어 브라우저 확장을 위한 XUL, CSS 및 JavaScript를 구현합니다.브라우저의 대부분은 XUL, CSS 및 JavaScript로 작성되어 있습니다.

툴킷 및 환경

크로스 플랫폼프로그래밍 프로세스에 도움이[16][17] 되는 툴은 다음과 같습니다.

  • 8번째: Juce를 GUI 레이어로 사용하는 개발 언어.현재 안드로이드, iOS, 윈도, 맥OS, 리눅스, 라즈베리 파이를 지원한다.
  • Anant 컴퓨팅:키보드를 포함한 모든 인도 언어로 작동하며 모든 OS에서 AppWallet 및 네이티브 성능을 지원하는 모바일 애플리케이션 플랫폼입니다.
  • ExposureIQ: 엔터프라이즈 환경에서 앱 개발 및 배포 워크플로우를 지원하는 프레임워크입니다.네이티브하게 개발된 컨테이너는 API to HTML5 코드를 통해 모바일 기기 또는 태블릿의 하드웨어 기능을 표시하므로 서로 다른 플랫폼에서 실행되는 모바일 앱 개발이 용이합니다.
  • Boden: C++로 작성된 UI 프레임워크입니다.
  • 카이로: 벡터 그래픽 기반의 디바이스 의존형 API를 제공하는 데 사용되는 무료 소프트웨어 라이브러리입니다.여러 백엔드에 걸쳐 2차원 도면을 위한 원본을 제공하도록 설계되었습니다.카이로어는 C로 쓰여져 있고 많은 프로그래밍 언어에 대한 바인딩이 있습니다.
  • Cocos2d: 2D 및 간단한 3D 크로스 플랫폼 게임 및 애플리케이션을 개발하기 위한 오픈 소스 툴킷 및 게임 엔진입니다.
  • 코드네임 원: Java 및 Kotlin 개발자를 위한 오픈 소스 WORA(Write Once Run Anywhere) 프레임워크.
  • 델파이: 개발에 파스칼 기반의 언어를 사용하는 IDE.Android, iOS, Windows, macOS, Linux를 지원합니다.
  • Ecere SDK: GUI 및 2D/3D 그래픽 툴킷과 IDE.eC로 작성되어 C 및 Python 등의 추가 언어를 지원합니다.Emscripten 또는 Binaryen(Web Assembly)을 통해 Linux, FreeBSD, Windows, Android, macOS 및 웹을 지원합니다.
  • Eclipse: 오픈 소스 개발 환경.소프트웨어 개발을 위한 많은 도구를 지원하는 구성 가능한 아키텍처를 통해 Java에서 구현됩니다.애드온은 Java 및 C++를 포함한 여러 언어로 사용할 수 있습니다.
  • FLTK: 오픈 소스 툴킷이지만 GUI에 한정되어 있기 때문에 가볍습니다.
  • 흔들림:Google이 개발한 Android 및 iOS용 크로스 플랫폼 UI 프레임워크입니다.
  • fpGUI: 오브젝트 파스칼에 완전히 구현된 오픈 소스 위젯 툴킷입니다.현재 Linux, Windows 및 Windows CE를 지원합니다.
  • GeneXus: 지식 표현 및 Android 및 BlackBerry 스마트 디바이스, Objective-C for Apple 모바일 디바이스, RPG, Ruby, Visual Basic 및 Visual FoxPro지원하는 C#, COBOL, Java기반으로 한 크로스 플랫폼 애플리케이션 생성 및 도입을 위한 Windows의 신속한 소프트웨어 개발 솔루션입니다.
  • GLBasic: C++ 코드를 생성하는 기본 방언 및 컴파일러입니다.많은 플랫폼용 크로스 컴파일러가 포함되어 있으며 다양한 플랫폼(Windows, Mac, Linux, Android, iOS 및 일부 이국적인 핸드헬드)을 지원합니다.
  • Godot : Godot Engine을 사용하는 SDK입니다.
  • GTK+: X11 및 Microsoft Windows를 탑재한 Unix급 시스템용 오픈 소스 위젯 툴킷.
  • Haxe: 오픈 소스 언어입니다.
  • Juce: C++로 작성된 애플리케이션 프레임워크로, 코드를 변경하지 않고 다수의 시스템(Microsoft Windows, POSIX, macOS)에서 네이티브 소프트웨어를 작성할 수 있습니다.
  • Kivy: Python으로 작성된 오픈 소스 크로스 플랫폼 UI 프레임워크.Android, iOS, Linux, OS X, WindowsRasberry Pi를 지원합니다.
  • 리드툴: 인식, 문서, 의료, 이미징 및 멀티미디어 기술을 Windows, iOS, MacOS, Android, Linux 및 웹 애플리케이션에 [18]통합하기 위한 크로스 플랫폼 SDK 라이브러리.
  • Live Code: HyperTalk에서 영감을 얻은 상용 크로스 플랫폼 고속 애플리케이션 개발 언어.
  • Lazarus: FreePascal 컴파일러용 프로그래밍 환경입니다.독립 그래픽 및 콘솔 애플리케이션 생성을 지원하며 Linux, MacOSX, iOS, Android, WinCE, Windows 및 WEB에서 실행됩니다.
  • Max/MSP: 플랫폼 고유의 런타임 환경을 가진 플랫폼 독립 코드를 macOS 및 Windows A 크로스 플랫폼 Android 런타임용 응용 프로그램에 캡슐화하는 비주얼 프로그래밍 언어입니다.수정되지 않은 Android 앱을 iOS 및 MacOS에서 기본적으로 실행할 수 있습니다.
  • Mendix: 클라우드 기반의 저코드 애플리케이션 개발 플랫폼.
  • MonoCross: 오픈 소스 모델 뷰 컨트롤러 설계 패턴.모델과 컨트롤러는 크로스 플랫폼이지만 뷰는 [19]플랫폼마다 다릅니다.
  • Mono: Microsoft의 오픈소스 크로스 플랫폼 버전.NET(어플리케이션 및 프로그래밍 언어용 프레임워크)
  • MoSync: C++ 패밀리의 모바일 플랫폼 앱 개발을 위한 오픈 소스 SDK.
  • Mozilla 애플리케이션 프레임워크: MacOS, Windows 및 Linux 애플리케이션을 구축하기 위한 오픈 소스 플랫폼.
  • Android 및 iOS 개발을 위한 크로스 플랫폼 JavaScript/TypeScript 프레임워크입니다.
  • OpenGL: 3D 그래픽 라이브러리.
  • Pixel Game Maker MV: Windows Nintendo Switch 게임을 개발하기 위한 Windows용 2D 게임 개발 소프트웨어입니다.
  • PureBasic: MacOS, Windows 및 Linux 애플리케이션을 구축하기 위한 독자적인 언어 및 IDE.
  • 네이티브:React Native를 사용하여 멀티 플랫폼 프로젝트를 구축하기 위한 범용 개발 SDK입니다.최신 iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG WebOS, macOS/OSX, Windows, KaiOS, Firefox OS 및 Firefox TV 플랫폼을 포함합니다.
  • Qt: X11, Microsoft Windows, macOS 및 기타 시스템을 탑재Unix급 시스템용 애플리케이션 프레임워크 및 위젯 툴킷으로, 독점 라이센스와 오픈 소스 라이센스로 모두 이용 가능합니다.
  • 심플하고 고속 멀티미디어 라이브러리: 그래픽, 입력, 오디오 등에 대한 로우 레벨 및 하이 레벨의 액세스를 제공하는 멀티미디어 C++ API.
  • Simple DirectMedia Layer: C로 작성된 오픈 소스 멀티미디어 라이브러리로 다양한 플랫폼의 그래픽, 사운드 및 입력 API에 대한 추상화를 작성합니다.Linux, Windows, MacOS 등의 OS에서 실행되며 게임 및 멀티미디어 애플리케이션을 대상으로 합니다.
  • Smartface: JavaScript 코드 에디터와 WYSIWYG 디자인 에디터를 사용하여 Android 및 iOS용 모바일 애플리케이션을 만드는 네이티브 앱 개발 도구.
  • Tcl/Tk
  • Ultimate++: 프로그래머의 생산성에 초점을 맞춘 C++ 고속 애플리케이션 개발 프레임워크.라이브러리 세트(GUI, SQL 등)와 통합 개발 환경이 포함됩니다.Windows 및 Unix와 유사한 OS를 지원합니다.
  • Unity: Unity Engine을 사용하는 다른 크로스 플랫폼 SDK.
  • Uno Platform: Windows, macOS, iOS, Android, Web Assembly 및 Linux에서 C# 사용.
  • Unreal : Unreal Engine을 사용하는 크로스 플랫폼 SDK입니다.
  • V-Play 엔진: V-Play는 널리 사용되는 Qt 프레임워크를 기반으로 하는 크로스 플랫폼 개발 SDK입니다.V-Play 앱과 게임은 Qt Creator 내에서 생성됩니다.
  • Wave Maker: 응답성이 뛰어난 웹 및 하이브리드 모바일(Android 및 iOS) 애플리케이션을 만드는 저코드 개발 도구입니다.
  • WinDev: Windows, Linux 용 통합 개발 환경.넷, 자바, 웹 브라우저.비즈니스 및 산업용 애플리케이션에 최적화되어 있습니다.
  • wxWidgets: 애플리케이션 [20]프레임워크이기도 한 오픈 소스 위젯 툴킷.X11, Microsoft Windows 및 macOS를 탑재한 Unix 계열 시스템에서 실행됩니다.
  • Xojo: 객체 지향 프로그래밍 언어를 사용하여 데스크톱, 웹 및 iOS 애플리케이션을 만드는 RAD IDE.Xojo는 MacOS, Windows, Linux 및 Rasberry Pi용 네이티브 컴파일된 데스크톱 애플리케이션을 만듭니다.독립 실행형 서버로 실행하거나 CGI를 통해 실행할 수 있는 컴파일된 웹 앱을 만듭니다.그리고 최근에는 네이티브 iOS 앱을 만들 수 있는 기능도 추가되었다.

과제

크로스 플랫폼 소프트웨어를 개발할 때는 많은 과제가 있습니다.

  • 플랫폼마다 동작이나 버그가 약간 다를 수 있기 때문에 크로스 플랫폼애플리케이션 테스트는 상당히 복잡할 수 있습니다.이 문제로 인해 일부 개발자들은 크로스 플랫폼 개발을 "write once, debug everywhere"라고 조롱하고 있습니다.이는 Sun Microsystems의 "write once, run anywhere" 마케팅 슬로건을 인용한 것입니다.
  • 개발자는 대부분의 경우 모든 플랫폼에서 사용할 수 있는 기능의 최소 공통분모 서브셋을 사용해야 합니다.이로 인해 애플리케이션 성능이 저하되거나 개발자가 각 플랫폼의 최신 기능을 사용할 수 없게 될 수 있습니다.
  • 플랫폼마다 사용자 인터페이스 규약이 다른 경우가 많은데 크로스 플랫폼애플리케이션이 항상 대응할 수 있는 것은 아닙니다.예를 들어, macOS와 GNOME용으로 개발된 응용 프로그램은 창이나 대화상자의 오른쪽에 가장 중요한 단추를 배치해야 하지만, Microsoft Windows와 KDE는 그 반대 규칙을 가지고 있습니다.이러한 차이는 미묘하지만, 이러한 규약에 준거하지 않는 크로스 플랫폼애플리케이션은, 유저에게는 투박하거나 낯설게 느껴질 가능성이 있습니다.빠르게 작업할 경우 변경 내용을 저장할지 또는 취소할지 확인하는 대화 상자 등 이러한 반대 규약에 의해 데이터가 손실될 수 있습니다.
  • 스크립트 언어 및 VM 바이트 코드는 사용할 때마다 네이티브 실행 가능 코드로 변환해야 하므로 성능 저하가 발생합니다.이 패널티는 저스트타임 컴파일 등의 기술을 사용하여 경감할 수 있지만 일부 계산 오버헤드는 피할 수 없는 경우가 있습니다.
  • 플랫폼에 따라 RPM MSI와 같은 네이티브 패키지 형식을 사용해야 합니다. InstallAnywhere와 같은 멀티 플랫폼 설치 프로그램은 이러한 요구사항을 해결합니다.
  • 크로스 플랫폼 실행 환경에서는 크로스 플랫폼 보안 결함이 발생하여 크로스 플랫폼 [21]멀웨어에 적합한 환경이 구축될 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Design Guidelines: Glossary". java.sun.com. Retrieved 2011-10-19.
  2. ^ "SDD Technology blog: Definition of cross platform". SDD Technology. Retrieved 2020-10-18.
  3. ^ Lee P Richardson (2016-02-16). "Xamarin vs Ionic: A Mobile, Cross Platform, Shootout".
  4. ^ a b "Platform Definition". The Linux Information Project. Retrieved 2014-03-27.
  5. ^ "Cross Platform Mobile App Development". Groovy Web. Retrieved 2020-03-27.
  6. ^ 2011년 3월 현재 시장점유율 약 89%인 넷마켓쉐어 웹사이트에서
  7. ^ "About Mono". mono-project.com. Retrieved 2015-12-17.
  8. ^ "Apple announces Mac transition to Apple silicon". Apple Newsroom. Retrieved 2020-12-08.
  9. ^ x86-64 (AMD64, EM64T)로의 이식Apache OpenOffice Wiki 。Wiki.services.openoffice.org (2012-06-22)2013-07-17에 회수.
  10. ^ Corti, Sascha P. (October 2011). "Browser and Feature Detection". MSDN Magazine. Retrieved 28 January 2014.
  11. ^ Choudhary, S.R. (2014). "Cross-platform testing and maintenance of web and mobile applications". Companion Proceedings of the 36th International Conference on Software Engineering - ICSE Companion 2014: 642–645. doi:10.1145/2591062.2591097. ISBN 9781450327688. S2CID 1903037.
  12. ^ Mehrotra, Pranob (2020-12-01). "Collabora Office suite gets a new layout for Android tablets and Chromebooks". XDA-Developers. Retrieved 2021-01-15. Collabora Office is a popular open-source alternative to the Microsoft Office suite. It’s based on LibreOffice, and it’s available on a variety of platforms, including Windows, Linux, iOS, and Android. This year in July, a major update for the office suite brought support for Chrome OS devices.{{cite news}}: CS1 maint :url-status (링크)
  13. ^ "Collabora Office on iOS and Android Just got Better!". Adfinis. 2020-12-15. Retrieved 2021-01-15. ...touch optimized interfaces: one for tablets and one for phone screens. ...(iOS, iPadOS, Chromebooks, Android).{{cite news}}: CS1 maint :url-status (링크)
  14. ^ "Nextcloud Ubuntu Appliance adds Collabora Online to Raspberry Pi image". MuyLinux. 2021-03-26. Retrieved 2021-03-30. the first viable self-hosted web office solution for the popular Raspberry Pi 4 platform{{cite news}}: CS1 maint :url-status (링크)
  15. ^ 크립바. 퀘이크 III 아레나, 자이언트 봄캐스트, 2013년 2월 15일.
  16. ^ GUI 툴킷, 프레임워크 페이지
  17. ^ "Platform Independent FAQ". Archived from the original on 2008-08-16. Retrieved 2009-04-25.
  18. ^ "Cross-Platform SDK Libraries for Recognition, Document, Medical, Imaging, and Multimedia". www.leadtools.com. Retrieved 2021-03-03.
  19. ^ "12 benefits of Xamarin Cross-platform app development". HeadWorks. 15 Mar 2019.
  20. ^ WxWidgets 설명
  21. ^ Warren, Tom (2020-01-14). "Microsoft bids farewell to Windows 7 and the millions of PCs that still run it". The Verge. Retrieved 2020-02-06.