2009-11-18 1 views
3

다음과 같은 상황에서 배포 할 상용 소스 소프트웨어를 작성했다고 가정 해 봅시다. Windows 데스크톱 앱 .Net, ActiveX 컨트롤, Windows Netscape 플러그인, Cocoa, Mac Netscape 플러그인을 기반으로하는 Mac 데스크탑 앱 , 브라우저에서 호스팅되는 Java 애플릿. 공유 루비 소스 파일에서 내 모델 및 컨트롤러 클래스를 작성하고 MacRuby, IronRuby 및 JRuby를 사용하여 다양한 런타임에 통합하려면 코드 공유 측면에서 실행 가능합니까? 내 뷰 클래스는 Windows에서 WPF, Mac에서 Cocoa 및 Java (SWT?)에서 적절한 모든 것을 사용하도록 작성 될 것입니다.네이티브 툴킷으로 크로스 플랫폼 개발을위한 Ruby의 생존 가능성?

내 관점에서 볼 때 가장 중요한 것은 코드베이스를 장기간 유지 관리하는 것입니다. 루비는 내가 타겟팅해야하는 세 가지 플랫폼에서 첫 번째 언어가되는 것처럼 보입니다. 닷넷, 코코아와 자바, 어떤 언어로. 나는 이것을 잘못하고 있나?

두 번째 중요성은 코드에 대한 바이러스 라이센스 요구 사항을 피하는 것입니다. JRuby가 다양한 라이센스하에 배포되는 곳을 볼 수 있습니다. 내가 바이너리를 배포 할 수 있다고 가정하는 것이 옳은가? 라이센스는 자신의 애플리케이션에 대해 (자신의 프레임 워크를 수정하는 것과는 대조적으로) 작성한 루비 파일에는 적용되지 않는다.

루비는 잘 알려진 데스크톱 애플리케이션에서 사용 되었는가? 이전에 해본 적이 있습니까?

답변

2

흠 ... 질문 : "루비를 사용하여 유지 보수 가능한 제품을 만들고이를 어떻게 웹, 데스크톱, 자바 기반 모바일에서 사용할 수 있습니까?"

내 생각에, 루비와 세 가지 맛 (jRuby, IronRuby 및 MacRuby)을 사용하면 유지 보수 문제가 더 많이 발생합니다. 세 가지 플랫폼 모두에서 숙련 된 개발자를 이해하거나 적어도 숙련 된 개발자가 있어야하며 데이터베이스 액세스를 위해서만 루비를 사용할 계획이 아니라면 정말 추상적 인 코드를 만드는 데 많은 시간을 소비해야합니다.

아마도 플랫폼 중 하나 (Java &은 jRuby가 가장 휴대용 옵션 일 것입니다)를 사용하고 다양한 패키징 옵션을 사용하여 제품을 배포하는 것이 좋습니다.

+0

제가 말하고자하는 것처럼, 세 권의 플랫폼을 동시에 지원하지 않는 것이 내 권위 또는 설득력이 아닙니다. 그것은 Java, C# 및 Objective-C (아마도 C# Mono)에서 3 개의 병렬 코드베이스를 작성하거나 공통 분모 언어를 찾으려고 시도합니다. 공통 분모 언어는 바닐라 루비였습니다. Ruby에 대한 경험이 전혀 없습니다 (이상적인 우주에서 저는 코코아에서 모든 것을하고 싶습니다), 루비 아가 될 수있는 것처럼 보였습니다. –

+0

또한 바닐라 루비는 Visual C++와 GCC 사이에서 C++보다 세 가지 맛에서 더 이상 차이가 있습니까? 저는 수만 줄의 바닐라 C++을 작성했습니다. 거의 모든 것들이 컴파일 오류로 끝나는 몇 가지 성가신 예외를 제외하고 Windows 및 OS X에서 동일한 동작으로 컴파일 할 수 있습니다. –

+0

Gotchya ... 음 ... IronRuby 구현이 불완전하다는 소식을 들었지만 .Net 플랫폼을 개발하여 작업을 완료하는 방법에 대해 충분히 알고 있다고 말할 수는 없습니다. 그러나 자바, 코코아 및 웹에서는 귀하의 아이디어가 그럴듯 해 보입니다. – btelles

2

당신이 개괄 한 접근법에 조금주의를 기울이지 만 가능합니다. IronRuby는 아직 1.0이 아닙니다.

UI 이외에도 많은 OS 관련 작업이 필요합니까? 그렇지 않다면 WxRuby을보고 시작해야합니다.이 플랫폼은 교차 플랫폼 WxWidgets 라이브러리의 (상당히 얇은) 래퍼입니다. Ruby 래퍼의 훌륭한 문서를 찾기 위해 너무 열심히 일하지 마십시오. btw - 고통스러운 경험은 실제로 포괄적 인 예제 코드를 살펴 보도록 가르쳐주었습니다.

다른 플랫폼 관련 항목은 일종의 래퍼/facade/api/proxy (패턴 선택) 뒤에 추상화/캡슐화되어야합니다.

"닫힌 소스"라고 말하면 루비 컨텍스트에서 전략을 사용 했습니까? 적어도 두 가지 도구 (ruby2exe 및 RubyScript2exe)가 있지만 실제로 Ruby 코드가 실제로 어떻게 숨겨 졌는지는 알 수 없습니다. 그것은 독립 실행 형, 배치 된 실행 파일 일 필요가 있습니까, 아니면 브라우저 기반 일 수 있습니까? 그렇게하면 모든 크로스 플랫폼 문제를 해결할 수 있습니다 (대신 브라우저 간 크로스 플랫폼 문제에 먼저 직면 할 수도 있음).

가 공유 루비 소스 파일 내 모델과 컨트롤러 클래스를 작성하는 코드 공유의 측면에서 가능한겠습니까 this SO question

+0

응답 해 주셔서 감사합니다. 다시 말하지만,이 소프트웨어는 여러 가지 형태로 제공 될 것입니다. 브라우저 기반의 브라우저와 다양한 플랫폼 기반의 축소 된 데스크탑이 있습니다. Ruby는 스크립팅 언어이므로 소스없이 쉽게 제공 할 수 없다는 말입니다. 나는 그것에 대해 생각하지 않았다. 좋은 지적. –

2

에서 (또 다른 대안 파이썬 등 포함) 좀 더 논의가있다 MacRuby, IronRuby 및 JRuby를 사용하여 다양한 런타임에 통합 하시겠습니까?

세 가지 구현간에 Ruby 코드를 공유 할 수 있습니다. 그들은 모두 매우 호환되는 Ruby 구현입니다. JRuby와 IronRuby는 Ruby 1.8.6 기능을, JRuby는 1.9 기능을 사용하기 시작했으며, MacRuby는 1.9 만 지원합니다. 루비 에 가까운 인 것처럼

는 JRuby를이 WPF에, SWT에 아이언 루비를 이야기 할 수 있기 때문에 당신은 세 가지 구현에 공유되지 않는 플랫폼 특정 부분을 필요할 것

보인다 계속 성장하는 커뮤니티에 의해 지원

세 루비 구현이 잘 확립되어 어떤 언어로, 닷넷, 코코아 및 Java 및 : 타겟팅해야하는 세 개의 플랫폼에서 최고 수준의 언어 인 잘 설립 된 compani에 의해 뒷받침 es. 루비가 어떤 플랫폼에서도 주요하게 사용되는 언어는 아니지만 루비를 사용하지 못하게하는 주요한 제한 사항은 없습니다. 그러나 C#/Java/Objective-C를 소량으로 사용해야 할 수도 있습니다 .

내가 바로 내가 바이너리를 배포 할 수 있습니다 가정 오전 라이센스 내가 내 자신의 응용 프로그램에 대한 쓰기 모든 루비 파일을 을 적용하지 않는다 (자신의 프레임 워크의 수정에 반대.)

글쎄, 그 결정을 내리려면 라이센스를 직접 읽거나 아는 변호사에게 문의해야합니다. 즉, GPL과 같은 라이선스가 "바이러스 성"이 아닌 한 Ruby 구현의 바이너리와 라이선스를 자유롭게 배포하고 응용 프로그램에서 사용할 라이선스를 자유롭게 결정해야합니다. 당신이 돈을 청구하는지 아닌지. 그러나 다시 한번, 합법성에 대해 우려한다면 변호사에게 물어보십시오.

Ruby는 잘 알려진 데스크톱 응용 프로그램에 사용 되었습니까? 이 전에 했습니까?

내가 루비를 사용하는 널리 사용되는 데스크톱 응용 프로그램의 모르겠지만, 나는 그런 BlazeResolver One 같은 Windows에 IronPython의를 사용하는 몇 가지 응용 프로그램의 알고; 그들의 배포 방법은 IronRuby에서도 동일합니다.