Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: programowanie cross-platformowe

Od kilku lat nie śledziłem na bieżąco co się dzieje w świecie narzędzi dla programistów, dlatego stawiam pytanie do tych co są na bieżąco, na jakich narzędziach (język + środowisko IDE) oprzeć się aby szybko i bezboleśnie stworzyć aplikację która:

* działa na platformach : Mac, Linux, XP
* ładnie wygląda
* sprawnie wyświetla teksty, grafikę i wszelkie pliki multimedialne
* bezproblemowo w wielu protokołach komunikuje się netem
* daje wsparcie dla kodowania i dekodowania gromadzonych/przetwarzanych danych
* nie stawia wygórowanych oczekiwań do zasobów komputera
* daje szansę na zabezpieczenie przed nielegalnym kopiowaniem

projekt tymczasowo jest związany z mocno zakręconym i nietypowym e-learningiem , ale docelowo ma być to platforma do dystrybucji zasobów wszelkiego typu w obu kierunkach (klient-serwer) w tym gier edukacyjnych itp.

projekt jest realizowanych w ramach hobby, nie chcę więc wydawać fortuny na narzędzia, z drugiej strony przywykłem do komfortu który zapewniał ongiś BC6++, piszę także w PHP bez jakiegokolwiek środowiska ale wolałbym IDE + dobry debugger

kiedyś programowałem w asemblerze, także szesnastkowo, ale teraz chcę coś zrobić szybko i bezwysiłkowo, dlatego proszę o sugestie aktualnych codeguru ;)

moje oczekiwania cross-platformowe pewnie zaspakaja java ale nigdy jej nie pokochałem, pisanie kilku midletów na telefony było mocno zniechęcające

kilka lat temu kiedy postawiłem podobne pytanie zaproponowano mi BASIC który kompilował się na wszystkie oczekiwane platformy: Mac, Linux, XP

co drodzy eksperci polecacie dzisiaj ?

konto usunięte

Temat: programowanie cross-platformowe

Oczywiście Java. To nie tylko język, ale generalnie cała platforma wykonawcza. W Java możesz pisać sobie aplikacje desktop, na urządzenia mobilne, aplikacje serwerowe, elektroniki użytkowej, itd. Java jest technologią dojrzałą. W Java zaimplementowana jest chyba większość serwerów aplikacji oprócz serwerów firmy M$.
Implementacja maszyn wirtualnych istnieje dla bardzo wielu platform: MS Windows, Linux, Mac OS X. Chcesz zobaczyć jak to działa w praktyce, uruchom sobie jakąś poważniejszą aplikację w tych systemach (proponuję środowiska developerskie Eclipse i NetBeans w celach porównawczych). Myślę, że będziesz zadowolony :)

Co do samych IDE:

Dość długo używam Eclipse i innych IDE bazujących na nim, jednak
ostatnimi czasy do kilku poważniejszych projektów zaczynam używać NetBeans 6.x. Dlaczego wspominam o NetBeans 6.x ? Jest darmowe, coraz lepsze/szybsze i co ważne, zawiera wszystko od razu, co programista/projektant potrzebuje do pisania aplikacji w Java, czyli: narzędzia do tworzenia aplikacji typu desktop, na telefony komórkowe, SIP-y, aplikacje typu Enterprise/SOA, narzędzie zarządzania bazą danych, oraz jak sądzę, nadchodzący przebój w tworzeniu aplikacji internetowych w Java, czyli JavaFX.

JavaFX operuje na skryptowym i/lub kompilowanym języku bazującym na Java i jest specjalnie stworzony do pisania aplikacji z zaawansowanym UI, używającym Java 2D i 3D. Konkurencyjne rozwiązania to Flash i M$ Silverlight. Myślę, że jest to przyszłość szybkiego tworzenia aplikacji z bardzo atrakcyjnym interfejsem użytkownika. Sun właśnie wypuszcza JDK/JRE z mechanizmem Applet Draggable, czyli aplet ze strony (na nim bazują aplikacje JavaFX), można przeciągnąć na pulpit. Jak na razie mechanizm ten działa w przypadku IE 7 i Firefox 3.

Fajnymi cechami NetBeans 6.1 jest także bardzo mocne wsparcie dla JavaScript, zwłaszacza dla używających notacji JSON i stylu programowania z użyciem "Object literals". W tym przypadku NB potrafi skanować katalogi projektu i dołączone biblioteki (np. prototype czy jquery) i we własnym kodzie działa "Code Completion" uwzględniając nazwy z dołączonych bibliotek JavaScript.

Jeśli rozpoczynasz, i chcesz mieć wygodne środowisko pracy to moim zdaniem warto przyjrzeć się NetBeans IDE 6.1 oraz technologii JavaFX.

Konkurencyjnym, szybszym i także bardzo atrakcyjnym środowiskiem developerskim jest Eclipse, w różnych odsłonach. Tutaj także możesz dysponować środowiskiem all-in-one. Dla mnie osobiście jest mniej intuicyjne od NetBeansów. Ja zatrzymałem się na wersji 3.2. Od wersji 3.3 zrobił się z Eclipse dość duży kombajn i w mojej osobistej opinii w porównaniu z NB jest to bardziej przytłaczające. Tutaj się jednak niech wypowiedzą inni, bo czasem jest to kwestia gustu.

Masz do wyboru w zasadzie dwa środowiska, które są darmowe, wypasione i mocno wspierane, czyli NetBeans 6.x przez Sun Microsystems oraz Eclipse w bardzo dużej mierze przez IBM.

Pozdrawiam,
PawełPaweł Grotowski edytował(a) ten post dnia 04.08.08 o godzinie 22:56
Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: programowanie cross-platformowe

wielkie dzięki,

czytam różne fora, myślę, analizuję i chyba wybiorę jave ...

konto usunięte

Temat: programowanie cross-platformowe

W zasadzie to nie masz wyboru, jeśli chodzi o sensowne, działające dobrze środowisko dla aplikacji cross-platform o tak bogatych możliwościach :)Paweł Grotowski edytował(a) ten post dnia 06.08.08 o godzinie 23:25
Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: programowanie cross-platformowe

Paweł Grotowski:
W zasadzie to nie masz wyboru, jeśli chodzi o sensowne, działające dobrze środowisko dla aplikacji cross-platform o tak bogatych możliwościach :)Paweł Grotowski edytował(a) ten post dnia 06.08.08 o godzinie 23:25

czy uruchamiałaś swoje aplikacje w javie na Macu ?

konto usunięte

Temat: programowanie cross-platformowe

Nie
Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: programowanie cross-platformowe

Paweł Grotowski:
Nie

ja próbowałem odpalić programik z NetBeans na Macu, całe okno komunikatów ;(
pewnie da się wszystko odpowiednio skonfigurować ale ważne aby końcowy użytkownik nie musiał się nadmiernie wysilać, najlepiej aby się w ogóle nie wysilał. Ten sam programik na Mandrivie odpalił się bez większych problemów ale kiepsko wyglądały wszelkie napisy. Pierwszy kontakt z NetBeans zachęcający ale wynik działania (a w zasadzie uruchamiania) aplikacji raczej zniechęcający.
Jakub Kaniewski

Jakub Kaniewski Szef zespołu
programistów BMNet

Temat: programowanie cross-platformowe

Nie wiem jakiego rodzaju komunikaty miałeś ale jest to dosyć dziwne. Robiliśmy u nas firmie swingowego klienta. Był testowany pod Linuxem (w trakcie tworzenia) i pod Windows XP (wdrożenie) - działał i wyglądał ok. Jakiś czas później z ciekawości odpaliliśmy go na Mac OS X 10.4 z Applową javą 1.5 i aż byliśmy zaskoczeni efektem - zero problemów, dobry wygląd (dzięki skórce Apple bardzo zbliżony do natywnych aplikacji Macowych, menu na górze itp.)

konto usunięte

Temat: programowanie cross-platformowe

Marek Górny:
ja próbowałem odpalić programik z NetBeans na Macu, całe okno komunikatów ;(
pewnie da się wszystko odpowiednio skonfigurować ale ważne aby końcowy użytkownik nie musiał się nadmiernie wysilać, najlepiej aby się w ogóle nie wysilał. Ten sam programik na Mandrivie odpalił się bez większych problemów ale kiepsko wyglądały wszelkie napisy. Pierwszy kontakt z NetBeans zachęcający ale wynik działania (a w zasadzie uruchamiania) aplikacji raczej zniechęcający.

Niestety każdy system ma w sobie jakieś specyficzne ustawienia i raczej nie znajdzie się środowiska idealnego. Java jest jedną z wielu, która jest zbliżona do tego ideału.

Ps. Qt też jest całkiem dobre, ale do komercyjnych produktów wymaga dofinansowania.
Przemysław Rumik

Przemysław Rumik kodowanie to moja
specjalność ;-)

Temat: programowanie cross-platformowe

Marek Górny:
ja próbowałem odpalić programik z NetBeans na Macu, całe okno komunikatów ;(
pewnie da się wszystko odpowiednio skonfigurować ale ważne aby końcowy użytkownik nie musiał się nadmiernie wysilać, najlepiej aby się w ogóle nie wysilał. Ten sam programik na Mandrivie odpalił się bez większych problemów ale kiepsko wyglądały wszelkie napisy. Pierwszy kontakt z NetBeans zachęcający ale wynik działania (a w zasadzie uruchamiania) aplikacji raczej zniechęcający.

Bo pewnie program był skompilowany dla wersji 6.0 Java'y, a tej dla Maca (takiego na PowerPC albo Intelu) nadal oficjalnie nie ma.

Ja swoją wtyczkę do OpenOffice.org, którą piszę w Java'ie ze Swing'iem testuje na XP i na Ubuntu. Nie zauważyłem by na Ubuntu napisy wyglądały źle, ogólnie nawet okienka w Ubuntu wyglądają jakoś tak ładniej ;-)

A co do pisania aplikacji wieloplatformowych, to jeśli ma to być zwykła okienkowa aplikacja najlepsza jest chyba rzeczywiście Java+Swing albo Java+SWT [choć tu mogą być problemy z dystrybucją, bo jednak trzeba jakoś te biblioteki dla JNI dostarczyć, w przypadku Swinga są już razem z JRE].
Jeśli nie musi to być aplikacja okienkowa, to zawsze można użyć aplikacji webowej, a tą też można [a nawet należy ;-)] napisać w Java'ie.
Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: programowanie cross-platformowe

aplikacja całkowicie okienkowa i 200% off-line, poza okresowym pobieraniem danych....

obawiam się także w wypadku javy niebezpieczeństwa dekompilacji....
C++ wydaje się być bezpieczniejszy ale trudniejszy w zastosowaniu cross.....
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: programowanie cross-platformowe

Dekompilacja Javy rzeczywiście pozwala uzyskać źródła prawie identyczne jak przed kompilacją. W celu zaciemnienia można korzystać z obfuskatorów, żeby chociaż usunąć znaczące identyfikatory i utrudnić zadanie.

konto usunięte

Temat: programowanie cross-platformowe

Sądzę (choć mogę się mylić), że kolega i tak w projekcie użyje jakiegoś Open Source. Tak więc będzie musiał w taki czy inny sposób źródła swojej aplikacji udostępnić. Ja bym się tam dekompilacją nie przejmował. Ochrona swoich praw i dorobku, raczej jest dzisiaj realizowana w inny sposób. Obfuskatory dzisiaj wyszły z mody.
Zacheusz Siedlecki:
Dekompilacja Javy rzeczywiście pozwala uzyskać źródła prawie identyczne jak przed kompilacją. W celu zaciemnienia można korzystać z obfuskatorów, żeby chociaż usunąć znaczące identyfikatory i utrudnić zadanie.
Przemysław Rumik

Przemysław Rumik kodowanie to moja
specjalność ;-)

Temat: programowanie cross-platformowe

Wygłoszę kontrowersyjny pogląd ;-) Głównym powodem chęci ukrycia kodu jest jego niska jakość i brak zrozumienia tego jak tworzy się oprogramowanie.

A wracając do cross-platformowości to choć C++ z takim np. QT jest świetne, to Java ma tą zaletę, że nie musimy robić buildów dla poszczególnych platform.
W jednej z poprzednich firm tworzyliśmy software w Java'ie a wspieraną przez nas platformą był Windows z pewnymi uniksowymi dodatkami. Ale ponieważ to była Java to część naszych klientów z Japonii woląca zamiast Windowsa używać Linuksa podmieniła jedną bibliotekę w naszej aplikacji i już mogli używać jej na Linuksie :-)
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: programowanie cross-platformowe

Przemysław Rumik:
Wygłoszę kontrowersyjny pogląd ;-) Głównym powodem chęci ukrycia kodu jest jego niska jakość i brak zrozumienia tego jak tworzy się oprogramowanie.
Taki offtopic.
Nie wiem czy wiesz, ale większość JCE z Suna jest przejechana obfuskatorem. Nie ryzykowałbym tu stwierdzenia, że ten kod jest niskiej jakości albo, że ci co go pisali czegoś nie rozumieli. A po co? Jeden z powodów jest konkretny i działa. Jak będę miał chwilę to napiszę o co chodzi na java.zacheusz.eu (sorki ;) )

Jeśli chodzi o bezpieczeństwo to rzeczywiście - obfuskator prawie przed niczym nie chroni a jedynie ogrnanicza ponowne wykorzystanie kodu przez kogoś innego.
Zaryzykowałbym stwierdzenie, że biorąc pod uwagę szeroko pojęte bezpieczeństwo aplikacje pisane w Javie są bezpieczniejsze od natywnych. Już same cechy języka i to, że zwykle są odpalane w JRE daje im w tej dziedzinie przewagę. Nie tak łatwo na przykład o bardzo popularny błąd umożliwiający atak z przepełnieniem bufora itd. itp.Zacheusz Siedlecki edytował(a) ten post dnia 24.09.08 o godzinie 22:24
Przemysław Rumik

Przemysław Rumik kodowanie to moja
specjalność ;-)

Temat: programowanie cross-platformowe

Zacheusz Siedlecki:
Przemysław Rumik:
Wygłoszę kontrowersyjny pogląd ;-) Głównym powodem chęci ukrycia kodu jest jego niska jakość i brak zrozumienia tego jak tworzy się oprogramowanie.
Taki offtopic.
Nie wiem czy wiesz, ale większość JCE z Suna jest przejechana obfuskatorem. Nie ryzykowałbym tu stwierdzenia, że ten kod jest niskiej jakości albo, że ci co go pisali czegoś nie rozumieli. A po co? Jeden z powodów jest konkretny i działa. Jak będę miał chwilę to napiszę o co chodzi na java.zacheusz.eu (sorki ;) )

Specjalnie napisałem, że to powód główny, czyli tyczący 99% kodu ;-) Jest jeszcze 1% kodu który ukrywasz z innych powodów.
Może to być kod który trzeba zobsfukować bo np. zawiera klucze do szyfrowania [a z jakichś powodów trzeba je w kodzie trzymać], tudzież masz w kodzie algorytmy których stworzenie kosztowało firmę masę pieniędzy i czasu. Wtedy poza obsfukacją użyjesz pewnie zaszyfrowanych klas, które będziesz ładować własnym ClassLoaderem, który zobsfukujesz tak dla zasady.

Jednak wiele kodu jest obsfukowane tylko dlatego, że "firma" która go stworzyła uważa, że fakt iż jej programista musiał 3 dni spędzić nad wymyśleniem jak zrobić wydruk do JPG powoduje iż posiadła wiedzę tak istotną dla rynku, że każdy będzie chciał ich kod ukraść. A kod takich "firm" jest zwykle niskiej jakości.

Wygłoszę kolejne kontrowersyjne stwierdzenie ;-) Duża część małych firemek pracuje przy pomocy techniki Copy&Paste z przykładów czy kodu z forów, gdy zdarzy im się że ktoś przez chwilę posiedzi nad rozwiązaniem problemu są tak tym przejęci, że chcą chronić swoją "własność intelektualną". A ponieważ pracują z małym kodem to nie wiedzą, że gdyby ktoś nawet chciał wykraść ich tajemny przepis na drukowanie do JPGa to mniej czasu zużyje na wymyślenie tego samemu niż na przebicie się przez ich zdekompilowane czy nawet dostarczone źródła.
Bo żeby móc ukraść kod trzeba często włożyć w to podobnie wiele pracy jak na jego napisanie.
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: programowanie cross-platformowe

Tak - racja :) Swoją drogą nie ukrywam tylko to jest trochę więcej tłumaczenia a rzecz jest taka, że zanim to odkryłem szukałem tego przez długi czas na necie i nigdzie nie było.
Przy okacji dyskusji o obfuskatorze doszliśmy do jeszcze jednego za dlaczego używać Javy do rozwiązać cross-platformowych. Pisząc natywnie często spotykamy problemy związane z daną platformą. Tu na wszystkich platformach są można powiedzieć te same zagadnienia a sama specyfika Javy uniemożliwia to, żeby były "tajne". Poradę jak rozwiązać dany problem łatwo można znaleźć na necie - ukrywanie kodu w przypadkach drobnych rozwiązań nie ma sensu.Zacheusz Siedlecki edytował(a) ten post dnia 25.09.08 o godzinie 02:24
Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: programowanie cross-platformowe

Przemysław Rumik:
Marek Górny:
ja próbowałem odpalić programik z NetBeans na Macu, całe okno komunikatów ;(
pewnie da się wszystko odpowiednio skonfigurować ale ważne aby końcowy użytkownik nie musiał się nadmiernie wysilać, najlepiej aby się w ogóle nie wysilał. Ten sam programik na Mandrivie odpalił się bez większych problemów ale kiepsko wyglądały wszelkie napisy. Pierwszy kontakt z NetBeans zachęcający ale wynik działania (a w zasadzie uruchamiania) aplikacji raczej zniechęcający.

Bo pewnie program był skompilowany dla wersji 6.0 Java'y, a tej dla Maca (takiego na PowerPC albo Intelu) nadal oficjalnie nie ma.

jak dokonać kompilacji aby działało na Macu?, szukam w opcjach i nie widzę żadnych możliwości wyboru ....

pozdrawiam
Marek

konto usunięte

Temat: programowanie cross-platformowe

Jeśli to faktycznie jest kwestia wersji Javy (że jest 6.0 a nie 5.0), to wystarczy kompilatorowi podać podać parametr
-target="1.5"

Sęk w tym, że ta opcja jedynie oznacza klasy jako kompatybilne z Java 5.0, ale nie sprawdza, czy tak jest w rzeczywistości. Żeby mieć absolutną pewność, że program będzie działał pod JRE 1.5 musisz użyć kompilatora z JDK 1.5 (w każdym razie to jest jedyne pewne rozwiązanie, które znam).Grzegorz Hołdys edytował(a) ten post dnia 31.01.09 o godzinie 20:02

konto usunięte

Temat: programowanie cross-platformowe

Marek Górny:
...
* działa na platformach : Mac, Linux, XP
* ładnie wygląda
* sprawnie wyświetla teksty, grafikę i wszelkie pliki multimedialne
* bezproblemowo w wielu protokołach komunikuje się netem
* daje wsparcie dla kodowania i dekodowania gromadzonych/przetwarzanych danych
* nie stawia wygórowanych oczekiwań do zasobów komputera
* daje szansę na zabezpieczenie przed nielegalnym kopiowaniem
...
co drodzy eksperci polecacie dzisiaj ?


Witam,

Zapewne już wybrałeś rozwiązanie i postawiłeś na Jave, ale do Twojego opisu wymagań bardziej zdecydowałbym się na Flexa. Tutaj obejrzysz przegląd bogatych możliwości http://www.adobe.com/devnet/flex/tourdeflex/web/. Java ew. po stronie serwera.

Pozdrawiam,
Piotrek



Wyślij zaproszenie do