środa, 20 sierpnia 2008

Qt

Najlepsze narzędzie w kategorii: Międzyplatformowe aplikacje okienkowe

Do tej pory w cyklu artykułów 'Najlepsze w swojej klasie' starałem się wskazać narzędzia, które mają kontakt przede wszystkim z danymi (obrazy, obiekty trójwymiarowe, video). Nadeszła pora, aby wskazać technologie i gotowe programy, które umożliwiają interakcję z użytkownikiem. Zaczniemy dzisiaj od bibliotek służących do tworzenia międzyplatformowych interfejsów użytkownika.

Zdecydowanym liderem w tej kategorii jest Qt - narzędzie rozwijane przez firmę Trolltech, przejętą w ostatnim czasie przez Nokię. Qt pomimo tego, że ma już swoje lata, jest bardzo nowoczesną technologią i znajduje zastosowanie nie tylko w aplikacjach okienkowych dla komputerów osobistych, ale również w urządzeniach multimedialnych - telefonach i palmtopach. Co ważne, Qt nie służy tylko do tworzenia okienek, ale również posiada wbudowaną obsługę multimediów, protokołów sieciowych, xmla, dostępu do baz danych i wielu innych.

Zalety:
  • Bardzo dobre wsparcie dla różnych systemów operacyjnych i różnych kompilatorów
  • W Windows bardzo dobrze dopracowana współpraca z Visual Studio
  • Często stosowana w projektach Open Source; jest podstawą środowiska graficznego KDE, które od wersji 4.0 dostępne jest nie tylko dla Linuksa, ale również Windowsa, Mac OSa i Solarisa
  • Natywne wsparcie dla wielu technologii, takich jak: xml, multimedia, bazy danych, protokoły sieciowe (wiecej informacji)
  • Wygodny zestaw narzędzi wspierających:
    • qmake - przygotowywanie plików makefile, lub plików projektowych dla Visual Studio
    • Qt Designer - graficzne narzędzie do projektowania interfejsów
    • Qt Linguist - przygotowywanie różnych wersji językowych
    • Qt Assistant - system pomocy dla programistów
  • Szeroko wykorzystywana w różnych projektach Open Source związanych z przetwarzaniem obrazów, m.in.: ParaView, VTK Designer, MeVisLab, Pandore (aplikacja pvisu), MITK
  • Wykorzystywana w wielu komercyjnych aplikacjach (Skype, Google Earth, Gadu-gadu, inne)
  • Wsparcie dla technologii mobilnych (więcej informacji)
  • Bardzo dobrze opracowana dokumentacja; wiele przykładów
  • Posiada zaawansowane kontrolki graficzne (więcej informacji)
  • Programowanie kontrolek danych według modelu MVC
  • Pluginy pozwalające na rozszerzanie możliwości programów bez ich rekompilacji
  • Dostępny język skryptowy (QtScript)
Wady:
  • Droga licencja do zastosowań komercyjnych. Możemy oczywiście wybrać licencję GPL i również sprzedawać napisane przez siebie programy, ale pod warunkiem przekazania użytkownikowi pełnego kodu źródłowego (łącznie z kodem bibliotek dołączanych dynamicznie)
  • Mała ilość zaawansowanych kontrolek
Materiały:
Konkurencja:

GTK+
  • Duże wsparcie społeczności, widoczne przede wszystkim w środowisku graficznym dla Linuksa: GNOME oraz miedzyplatformowym edytorze grafiki: GIMP
  • Biblioteka wykorzystywana w aplikacjach mobilnych (więcej informacji)
  • Przygotowanie wersji pod Windowsa wymaga znacznie więcej wysiłku aniżeli w przypadku Qt
  • Niepełna obiektowość; piszemy głównie w C
  • Rzadko wybierana przez użytkowników zajmujących się analizą obrazu
  • Przykłady wykorzystania: MedicalStudio
  • Licencja LGPL
  • Strona WWW
WxWidget
  • Dobrze pracuje pod Windows
  • Bogaty zestaw kontrolek
  • Chętnie wybierana jako interfejs w aplikacjach komercyjnych (więcej informacji)
  • Mniejsza popularność w środowisku Open Source w porównaniu z Qt i GTK
  • Przykładowe aplikacje: DeVIDE
  • Licencja LGPL
  • Strona WWW
FLTK
  • Bardzo mała i szybka biblioteka
  • Prostota programowania i kompilacji
  • Dostępne wygodne narzędzie do projektowania interfejsu
  • Bardzo dobrze współpracuje z VTK i ITK
  • Powolny rozwój; niewielka społeczność i małe zainteresowanie firm komercyjnych
  • Przykłady zastosowań: kilka aplikacji z pakietu ITK Applications, ITK-Snap, IGSTK
  • Licencja LGPL
  • Strona WWW
Pozostali:
Patrząc jeszcze raz na przedstawione w porównaniu biblioteki, można zauważyć, że lider tej kategorii - Qt, oferuje znacznie większe możliwości i wygodę pracy, aniżeli konkurenci, ale w odróżnieniu od nich, wprowadza większe ograniczenia licencyjne. Podwójna licencja z jaką mamy tutaj do czynienia nie musi być kłopotliwa, ponieważ dla firm tworzących zamknięte oprogramowanie koszt zakupu licencji nie jest wysoki w porównaniu do innych kosztów operacyjnych. Natomiast twórcy projektów Open Source dostają dobrze zaprojektowaną i przetestowaną bibliotekę bez ponoszenia jakichkolwiek kosztów.

Niezależnie od tego, która biblioteka swoimi funkcjami najbardziej przekona nas do siebie, sam fakt tworzenia aplikacji niezależnych od platformy, czyni ją bardziej dostępną dla potencjalnych użytkowników, którzy sami mogą zdecydować, czy będą z niej korzystać na pececie, komórce, czy też superkomputerze.

5 komentarze:

Mateusz Siewniak pisze...

Ostatnio coraz popularniejsza staje się technologia proponowana przez firmę Adobe, a mianowicie Adobe Air. Jest to cross-platformowe środowisko wykonawcze dla aplikacji RIA (Rich Internet Application), które mogą być pisane za pomocą Flexa/Flasha lub HTML/Ajax. Oczywiście można korzystać z darmowych narzędzi np. Aptana Studio z wtyczką Adobe Air.

Technologia naprawdę godna uwagi.

Rafał Petryniak pisze...

Tam gdzie potrzebujemy wyświetlić pewne informacje i przy okazji umożliwić prostą interakcję z użytkownikiem AIR może być naprawdę godne polecenia. Ale w zastosowaniach obliczeniowych/naukowych nie za bardzo wyobrażam sobie korzystanie z HTMLa i Ajaxa.
Innym problemem w przypadku obecnych na rynku technologii RIA jest wybór i przywiązanie się do jednej firmy - czy to będzie Silverlight, czy JavaFX, czy też właśnie AIR jesteśmy uziemieni. Dla mnie najlepiej by było jakby się pojawiło otwarte rozwiązanie wspierane przez wszystkich. Ale na to chyba nie ma co liczyć.

Anonimowy pisze...

Bardzo ciekawie napisane. Jestem pod wielkim wrażaniem.

Wojciech Roszkowski pisze...

Bardzo fajnie napisane. Jestem pod wrażeniem i pozdrawiam.

Rafał Petryniak pisze...

Dziękuję :D

Prześlij komentarz