크로스 플랫폼 라이브러리를 만들려면 어떤 언어를 사용해야합니까? [닫은]


10

호스트의 응용 프로그램에서 제공 한 정보를 기반으로 라이브러리의 메소드에 의해 제공되는 정보를 기반으로 메시지를 작성할 수 있어야 하는 SyncML 구문 분석 라이브러리 ( UI 없음 )를 빌드하려고합니다. 또한 라이브러리는 호스트 응용 프로그램의 메소드에 대한 콜백을 수행 할 수 있어야합니다.

나는 이것을 컴파일하고 가능한 많은 플랫폼에서 사용할 수 있기를 원합니다 : Windows, Windows Phone 7 OS, OSX, iOS, Linux, Android, BlackBerry. 기본적으로 가능한 많은 플랫폼.

우선은 모바일 장치에서이 기능을 사용하는 것입니다.

질문 :

  1. 어떤 설정을 사용해야합니까? (프로그래밍 언어, 컴파일러, IDE 등)
  2. 이 플랫폼에 맞게이 라이브러리를 어떻게 컴파일하고 어떻게 연결합니까?
  3. 다른 정보가 있습니까? 예 : 크로스 플랫폼 개발 주제를 다루는 기사?

이전에는 이런 종류의 크로스 플랫폼 프로젝트를 수행하지 않았으므로 올바른 방향으로 안내 할 수있는 모든 정보를 환영합니다.

나 자신은 C # /. NET 및 Objective-C에 대한 배경 지식이 있습니다.

답변:


8

Java 플랫폼 / JVM을 사용하는 것이 명백한 선택입니다. 모든 언어에 대해 가장 광범위한 크로스 플랫폼 적용 범위를 가지고 있으며 C # /. Net 배경 지식이 있으면 개념이 매우 익숙합니다.

이 점에 유의 자바 언어를 사용하지 않아도 자바 플랫폼의 혜택을 얻을 수 - 처음부터 프로젝트를 시작 아마 다음 중 하나 recomemnd 원하는 경우, 현재 사실을 :

  • 스칼라 -JVM에서 뛰어난 성능을 가진 강력하고 정적으로 유형이 지정된 다중 패러다임 언어를 원할 경우. C # 배경이있는 경우 적합 할 수 있습니다.
  • Clojure- 동적 언어와 같은 기능적 프로그래밍을 선호하고 최첨단 생활을 즐기십시오. Clojure는 진정으로 뛰어난 동시성 기능갖추고 있어 매력적일 수 있습니다. 링크 된 비디오는 깊이있는 통찰력을 볼 가치가 있습니다.
  • Groovy -C # / Java 개발자들에게 매우 친숙한 단순하지만 효과적인 동적 객체 지향 스크립팅 언어를 원할 경우.

이 모든 언어는 JVM (환상적인 JIT 컴파일러, 매우 효과적인 가비지 콜렉션, 거대한 라이브러리 세트)에 있다는 이점을 갖지만 훨씬 생산적인 언어로 작업 할 수 있습니다.

그런데 Java에서 Funambol이라는 오픈 소스 SyncML 라이브러리 가 이미 있습니다 . 이것이 당신에게 직접적으로 유용한 정도는 확실하지 않지만 일반적으로 거의 모든 것에 대한 오픈 소스 Java 라이브러리가 있다는 사실의 예입니다 .......

다른 옵션에 대한 생각 :

  • C / C ++는 확실히 크로스 플랫폼에서 작동 할 수 있지만 각 플랫폼의 고유 코드로 재 컴파일 (및 후속 테스트)해야합니다. 컴파일 된 바이트 코드 자체가 이식성이기 때문에 필요하지 않은 JVM 언어를 사용합니다. 성능이나 원시 하드웨어 기능에 액세스하기 위해 C / C ++가 절대적으로 필요하지 않으면 피해야 할 문제라고 생각합니다.
  • Mono 형식의 C #은 작동 할 수 있지만 (예 : 크로스 플랫폼 라이브러리로서 Unity 의 성공을 목격 ) 성숙도, 라이브러리 가용성 또는 원시 성능 측면에서 JVM 에코 시스템은 어디에도 없습니다. 또한 .Net에는 이식성이 악의적 인 Windows 관련 기능이 있기 때문에 Microsoft .Net과 100 % 호환되지 않습니다. 여전히 C #을 고수하기로 결정했다면 고려해 볼 가치가 있습니다.
  • 클라이언트와 서버 측에서 라이브러리를 사용하려는 경우 Javascript가 외부 옵션 일 수 있습니다.

1
큰 답변 주셔서 감사합니다. 라이브러리 나 프레임 워크 형태로 Java를 iPhone에 얼마나 잘 이식 할 수 있는지 알고 있습니까? 또한 Funambol을 사용할 수 없습니다. 요점은 내 자신의 라이브러리를 만드는 것입니다.
Andrei

2
나는 애플이 현재 아이폰의 자바에 대해 상당히 제한적이라는 것을 알고있다. 시장 압력으로 인해 앞으로 더 많은 일이 일어날 것으로 예상됩니다.이 기사 는 iPod touch에서 Java 기반 응용 프로그램을 시연하는 Oracle에 대한 대화와 같은 서버 사이드 .
mikera

Java 자체를 사용할 필요가 없음을 알려주는 +1이지만 Scala, Clojure, Groovy를 사용할 수 있습니다. 매혹적인 답변.
Anthony

3

Java-Java Runtime Environment (가상 머신)는 크로스 플랫폼이고 Java는 Android (또는 Java ME)가있는 모바일 장치에서 사용될 수 있으며 .NET은 매우 유사합니다.


3

이것은 하나의 선택이 아니라 많은 것입니다. 어느 곳에서나가는 것을 찾는 유혹을 느끼고 있지만 항상 최선의 방법은 아닙니다.

  1. 예를 들어, Windows 모바일 플랫폼에서 C ++ 코드를 짜는 것이 가능할 수는 있지만, 지원 관점에서 .NET은 그 반대 부분보다 항상 더 쉽습니다.

  2. 마찬가지로, 네이티브 또는 런타임 중 원하는 것을 선택하고 웹 중심 또는보다 일반적인 강력한 것으로 제한합니까? 예를 들어, Adobe 런타임은 더 포괄적이지만 핵심 프로그래밍 언어와 비교하여 수행 할 수있는 작업으로 제한됩니다.

  3. 내가 생각하는 가장 중요한 것은 빌드하려는 GUI의 유형과 레벨입니다.

이제 가장 유망한 선택을하게되었습니다.

ㅏ. Symbian, Blackberry, Android, BREW 및 Bada (삼성) Java / J2ME는 가장 일반적인 방법입니다. 그러나 일부 플랫폼의 기본 핵심 기능에 대해서는 많은 경우 C / C ++를 사용하는 것이 좋습니다.

비. 지원되는 언어가있는 Windows .NET의 경우 좋을 것입니다.

씨. iOS 용 -이 선택의 여지가 없지만 목적 C.이다 NOT 내가 목표로 계산하지 않도록 매우 C + +를

다음은 모든 옵션과 적용 위치를 보여주는 모든 플랫폼 세트를 보여주는 위키 참조 입니다.

귀하의 질문에 따라 위의 위키 링크에서 위의 문제를 해결하려고하는 SDK가 있음을 알게되었습니다. 가장 가까운 두 가지는 다음과 같습니다.

  1. 마멀레이드 : http://www.madewithmarmalade.com/marmalade/supported-platforms 이것은 거의 모든 플랫폼을 흥미롭게 지원 합니다. Windows는 완벽한 원을 만들기 위해 추가되었습니다.

  2. 입자 코드 : http://www.particlecode.com/

나는 그것들을 아직 사용하지 않았지만 흥미로운 작업으로 들린다.


안드로이드는 Bada를 제공하고 iOS는 C ++을 허용합니다.
Klaim

3

.NET은 많은 플랫폼에서 거의 사용 가능하지 않으며 Objective-C는 더 나쁘고 .NET은 약간 느리고 ObjC는 기본적으로 Apple 외부에서 지원하지 않습니다. 언어로서의 C는 기본적으로 외부 요인으로 사용하지 않는 한 고려할 가치가 없습니다.

유일하게 가능한 언어는 C ++입니다.


2
Mono 프로젝트를 C #과 함께 사용하는 이점에 대해 알고 있습니까? C는 왜 고려할 가치가 없습니까?
Andrei

2
@Andrei : 내가 아는 한, Mono는 목록에있는 모든 플랫폼에서 사용 가능한 사진이 아닙니다. 그리고 C는 C ++과 같기 때문에 고려할 가치가 없지만 모든 좋은 기능을 잘라서 C ++을 사용할 수 있다면 어리석은 일입니다.
DeadMG

4
@DeadMG : 나는 당신이 리누스 토발즈 (Linus Torvalds)와 그 시점을 토론보고 싶어요 : thread.gmane.org/gmane.comp.version-control.git/57643/... - 그는 바로, 내가 좋겠 100 %해야한다는 말을하지 불꽃 전을보고 싶어합니다.
Michael Borgwardt

2
@DeadMG C는 좋은 기능을 가진 C ++이 아닙니다. C ++는 끔찍한 기능이 추가 된 C입니다. C에는 아무 문제가 없습니다.
rightfold

2
@ WTP : 그는 내 인생 이야기가 아니라 추천을 요청했습니다. 간단한 사실은 C ++의 추가 기능에 대해 생각할 때마다 기능이 존재하고 C ++ 전용 코드에 액세스 할 수있게한다는 것입니다. 이는 보너스이며 C는 C ++이 아닙니다. C ++ 대신 C ++를 사용하는 경우 선택 사항 만 추가 하십시오. 따라서 정의에 따르면 C ++은 우수한 언어이므로 항상 C ++ 기능을 사용하지 않도록 선택할 수 있습니다. 어느 것이 광기이지만, 가능합니다.
DeadMG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.