2008-09-26 13 views
13

Pozdrowienia,Jak napisać program międzyplatformowy?

Chcę napisać mały, wieloplatformowy program narzędziowy z graficznym interfejsem użytkownika. W jakim języku/bibliotece GUI powinienem się trzymać? Czy to możliwe?

To będzie mały program, więc nie chcę, aby ludzie ściągali JVM lub .NET Framework. Czy można go rozwijać natywnie?

Aktualizacja 1.

Przez "natywnie" To znaczy, że wynik końcowy będzie kod natywny bez warstw pośrednich, takich jak Java Virtual Machine lub .NET Common Language Runtime

Aktualizacja 2.

A DARMOWE rozwiązanie jest lepsze;)

Odpowiedz

5

Chcesz stworzyć program międzyplatformowy natywnie? Uh ... Nie sądzę, że to zadziała, głównie dlatego, że to zdanie jest paradoksem. Jeśli napiszesz natywny kod, to z natury będzie on działał tylko na platformie, na której go zaprogramowałeś. ;-) O to właśnie chodzi w Ramach.

Zamiast tego należy użyć bardzo cienkiego szkieletu, jeśli program będzie tak mały. idea itmata Qt jest możliwa.

3

Jak o Python przy użyciu Qt lub Wx, a następnie za pomocą PythonToExe tworząc „podziałowi”

Myśl będzie musiał dając do rozwoju w celu zapewnienia, że ​​nie rodzimy funkcjonalność jest używana (tj rejestru itd.), Jak również rzeczy podziały wierszy w plikach tekstowych będą miały różne znaki ewakuacyjne tak będą musiały być obsługiwane

15

Jeśli wiesz, C lub C++ pierwszym wieloplatformowym GUI ramy mogę myśleć to:

  • QT (C++, opatentowane ale za darmo z licencjonowania LGPL)
  • wxWidgets (C++, najbardziej kompletny i stabilny, ale również ogromny)
  • FLTK (C++)
  • FOX (C++)
  • IUP (C, prostsze i czystsze niż te powyżej)

Jeśli znasz Pascal, możesz spróbować freepascal + Lazarus. Ale nigdy tego nie używałem.

+0

Doskonała odpowiedź Remo.D –

+0

Qt jest dostępna tylko dla projektów GPL. Projekty z innymi licencjami niekomercyjnymi - w tym popularne oprogramowanie typu open source, takie jak BSD lub MIT/X11 - muszą być opłacane. FWIW, Qt to mój wybór dzięki jego kompletności i dobrze zaprojektowanemu API. – skymt

+5

Qt ma teraz (darmowe) licencje LGPL, więc powyższy komentarz skymt nie jest już poprawny. – KeyserSoze

4

WxWindows? Teraz nazywa się WxWidget: http://www.wxwidgets.org/

+0

Nie ma problemu. Właściwie wygląda teraz na naprawdę dopracowaną, może kiedyś trzeba będzie zagrać :) – JeeBee

4

wxWidgets ma powiązania z różnymi rodzajami języków - python na przykład, jeśli twoja aplikacja jest wystarczająco mała.

6

Problem: jeśli nie chcesz mieć graficznego interfejsu użytkownika, ale nie chcesz prosić użytkownika o pobranie wiecznego interfejsu API, architektury lub maszyny wirtualnej, aby go uruchomić, czy to TCL/TK, Java czy QT itd. wtedy szybko się zgubisz.

Powód: Konieczne będzie przebudowanie wszystkich funkcji (GUI), które API, frameworki i maszyny wirtualne zapewniają niezależność od platformy. A to dużo pracy do wykonania ....

Po drugiej stronie: wirtualna maszyna Java jest instalowana od prawie każdego systemu operacyjnego od zera, czemu by nie dać tego ujęcia?

+5

Możesz statycznie połączyć Tk, wxWidgets, Qt, SDL, itp. –

1

Jeśli "ma" być używane na pulpicie Qt. Nic teraz nie przebije.

Osobiście zrezygnowałem z pracy na komputerze, a każdy projekt oparty na interfejsie użytkownika, który wykonuję, jest zwykle oparty na przeglądarce/serwerze. Możesz łatwo napisać trochę niestandardowego serwera, który nasłuchuje na jakimś porcie, aby program mógł działać lokalnie, bez potrzeby instalowania przez użytkowników Apache lub dostępu do sieci. Mam mały framework Lua, Python i C++, który zrobiłem w tym celu (Chcę dodać JavaScript do zaplecza z V8 :)

3

Jakie systemy operacyjne masz na myśli, gdy mówisz o platformie?

Jak słusznie zauważa Epaga, natywna i wieloplatformowa wzajemnie się wykluczają. Możesz napisać wiele wersji, które działają natywnie na wielu platformach lub musisz użyć platformy wieloplatformowej.

W przypadku podejścia opartego na platformach wieloplatformowych zawsze będą wymagane dodatkowe instalacje. Na przykład wielu sugeruje użycie Pythona i jednego z jego frameworków. Wymagałoby to poinstruowania ludzi, aby najpierw zainstalowali pythona - i potencjalnie framework -.

Jeśli celujesz w Windows i OS X (i jesteś przygotowany na eksperymentowanie z wersją alfa dla Linuksa, jeśli wymagana jest obsługa tego systemu operacyjnego), zdecydowanie polecam spojrzenie na Adobe AIR for cross -platformowe aplikacje GUI.

1

Jeśli masz zamiar spojrzeć na Qt i WxWidgets, nie zapomnij także sprawdzić GTK+!

2

Flash? Jest zainstalowany prawie wszędzie.

3

Zgadzam się z Georgi, Java jest drogą do zrobienia. Przy odrobinie pracy możesz sprawić, by twoja aplikacja działała jak aplet Javy (aby użytkownicy nie musieli aktywnie pobierać czegokolwiek). Zobacz http://www.geogebra.org jako przykład aplikacji, która działa płynnie jako wieloplatformowa aplikacja Java ORAZ ma prosty port do apletu sieci.

Dwie inne korzyści przy użyciu języka Java są:

  1. Mają rozległe bibliotek do budowania interfejsu użytkownika, w tym konstruktorów komponentów UI.
  2. Środowisko wykonawcze Java jest na ogół aktualizowane automatycznie dla użytkownika.

Jedna wada:

  1. Wersja Java zainstalowana na komputerze użytkownicy końcowi nie mogą być całkowicie kompatybilne z aplikacją, wymagające do kodować do najniższego prawdopodobnego mianownika.
3

Wypróbuj RealBasic. Składnia podobna do Visual Basic, przeznaczona dla systemów Win32, OS X i Linux. Nie znam żadnych szczegółów dotyczących celowania w Linuksa, ale dla jakiegokolwiek międzyplatformowego rozwoju, jaki zrobiłem między Win32 a OS X, było to marzeniem.

http://www.realbasic.com

Edit: Generuje rodzimych plików wykonywalnych. Koszt jest niewielki - 100 USD.

4

Łazarz jest świetny. GTK2 na Linux, win32/64 na Windows, WINCE na euh, Wince. Wykorzystuje nawet Carbon na Macu (działa na COCOA). Również łatwo sprzedać do swojego szefa (kod Delphi jest kompatybilny)

1

Zgadzam się z Davidem Wees Georgi,

Java jest cross-platformness par excellence. Dosłownie piszesz raz i biegasz wszędzie. Bez potrzeby kompilowania kodu dla każdego docelowego systemu operacyjnego lub bitness, bez obaw o łączenie z niczym itp.

Jedno jest, jak Pan zauważył, że JRE musi być zainstalowany, ale jest to szybkie i proste do zrobienia nawet dla początkujących użytkowników końcowych (to kwestia kliknięcia "Dalej>" kilka razy w instalatorze).

Z wdrożeniem Java Web Start jest jeszcze łatwiej: użytkownik po prostu klika przycisk uruchamiania na stronie internetowej i uruchamia aplikację (jeśli właściwa maszyna JVM jest zainstalowana zgodnie z tym, co określono w deskryptorze JNLP) lub użytkownik zostanie przekierowany na strona pobierania Java (jeśli nie znaleziono odpowiedniej maszyny JVM).

Powiązane problemy