C++ vs C# vs Java - aplikacje desktopowe

0

Spoko, ja wziąłem.
Ale tyk skoro nie masz dofinansowania, a płącą ci jak studenciakowi na 3 roku to pewnie możesz kłopoty z zakupieniem.

0

K*** Panowie - flame ale nie obrzucanie się nawzajem błotkiem ale bardziej lub mniej rzeczowa dyskusja, poparta choćby cieniem jakiegokolwiek dowodu/spostrzeżenia.
Dajcie se po razie bo obaj zachowujecie się jak dzieci z przedszkola.

A odnośnie dyskusyj (pisownia zamierzona) to co do języków działających na VM to mam takie subiektywne wrażenie, że są po prostu ciężkie - używam dość często i mocno Oracle SQL Developera (nie uważam, żeby pisali go "studenci" ani też ktoś, kto nie ma pojęcia o tym co robi) napisanego w javie i po prostu działa wolniej niż podobne programy pisane natywnie (np. IBExpert czy EMS SQL Menager). Laptop to też nie jest jakiś staroć, ale też nie cud techniki.

Co do C# to miałem okazję pisać w nim aplikację na terminale z ekranem dotykowym (trochę inna filozofia UI no i sprzęt raczej marny - Celek 800, 256MB RAM) i tam po prostu nie zdało to egzaminu - teraz projekt jest przepisywany w Delphi i działa niebo lepiej. Nie ma brzydkiego i denerwującego efektu przy odrysowywaniu okien, czy przewijaniu list itp. Generalnie na VM potrzeba lepszego sprzętu i pewnie dla pani klikającej w okienka nie ma różnicy czy okno otworzy jej się w 0,1 czy w 1 sekundę.

C# na pewno jest mniej przenośny niż java. Jak wygląda przenośność C++ nie mam pojęcia, ale pewnie bez ifdef (czy jak to w c++ jest) przenośność to tylko hasło. Java ma natomiast najwięcej platform docelowych. Co do samego GUI to w każdym języku można je tak skopać, że będzie się ono nadawało jedynie do nauki jak jak GUI nie powinno wyglądać. Wg mnie w wydajności VM z góry przegrywa z językami kompilowanymi do kodu natywnego. Wielowątkowo da się pisać i w c# i w javie, nie wiem co z c++, ale pewnie też.

0

Była merytoryczna dyskusja i przyszedł egon... co za pech ;p
Zauważ, że VM nieźle działają na urządzeniach przenośnych o ograniczonych zasobach więc chyba nie jest tak źle z wydajnością zwykłych aplikacji z GUI. Niektóre urządzenie wspierają sprzętowo bajtkod Javy. Wydajność VM na serwerze to już zupełnie inna sprawa, ale nie o tym jest temat.
Mała ciekawostka: jeszcze do niedawna na Androida nie dało się pisać w C++ ;p

0

W Javie 6 na niezbyt mocnym sprzęcie nie mam większych zastrzeżeń do responsywności GUI.
Wydajność kodu też jest niezła, choć mogliby wprowadzić tak długo obiecywany tryb warstwowej kompilacji (tiered compilation) - wtedy mamy ładną responsywność i "niski" czas startu jak obecnie, ale dodatkowo intensywne obliczenia pójdą w pełnej wydajności (praktycznie jak C/C++) skompilowane serwerowym HotSpotem.

Większym problemem są niedoróbki wyglądu czy po prostu błędy w Swingu (np. dosyć nieudany JFileChooser, niespójności między różnymi L&F), przydługi czas startu / rozpędzania się aplikacji oraz zbyt duża pamięciożerność (min. ~35 MB na aplikację w Swingu to trochę za dużo zważywszy, że prawie nic nie jest współdzielone między aplikacje). Na pewno długa jeszcze droga, żeby toto się porządnie nadawało na desktop. Ale do przenośnych aplikacji i tak chyba nie ma niczego lepszego. Przy Adobe Flex/AIR Java jest lekka jak piórko, tj. mniej więcej jak C w porównaniu z Javą 10 lat temu.

0

To co mnie najbardziej denerwuje w aplikacjach javy, to calkowite oderwanie od natywnego gui. Nie znam sie na javie, nigdy nic w niej nie pisalem ale nie widzialem jeszcze zeby javowa aplikacja posiadala gui natywne dla danego systemu - zamiast tego ma zawsze swoje wlasne, co mnie osobiscie bardzo drazni.

Jeżeli .net i winforms moze posiadac obsluge natywnego look&feel to dlaczego java nie? Wieloplatwormowość? Jakos mnie to nie przekonuje.

0

heh, a używałeś eclipse? :-D
Ma natywne GUI, tak jak każda aplikacja napisana przy użyciu SWT :P

0

@up - a uzywales eclipsa na wiecej niz 1 systemie? Zarowno wyglad jak i "feel" jest nieco inny. Tym wlasnie charakteryzuje sie SWT. Z kolei Swing calkowiecie sam rysuje wszystko z wyjatkiem glownych okien programow, dlatego na kazdym systemie GUI bedzie wygladac tak samo (no moze bardzo podobnie bo to zalezy od ustawien systemowych, czcionek, ustawien belki tytulowej itp).
@othello - aplikacjie napisane w swingu uzywaja pluginow o ogolnej nazwie LookAndFeel, ktore odpowiednio skonfigurowane potrafia nasladowac natywne GUI systemowe. Np, pod winwsem mozna napisac aplikacje swing z windowsowym look and feel, pod max os jest kopia aqua, a pod linuksem.. jest motif ;d Nalezy zaznaczyc ze pod win nie uzyjesz normalnie aqua, a pod linuksem nie uzyjesz windowsowego lnf bo sa chronione licencjami. I na koniec, sa to niedoskonale podrobki, ale cos za cos.
To napisawszy, przyznaje bez bicia ze nie lubie swinga, a swt jeszcze mniej.
A teraz bez offtopu - do aplikacji desktopowch na windowsa .net i C# sa bardzo przyjemne, szybko sie pisze.

0

Bruce Eckel, jeden z długoletnich propagatorów Javy:

Java has succeeded in two key areas: as the dominant language for writing server-side
applications and as the top language for teaching computer science in colleges. The
.NET Framework is better for both these areas, although it is not inevitable that it will become dominant in either. For writing client applications, there is no question
that C# clearly outstrips Java

0

@Deti - jest tego jakieś źródło?

0

Książka Thinking in C#.

// dokładnie - Deti

0

For writing client applications, there is no question
that C# clearly outstrips Java

O tak na winde na pewno :P

0

Co do kwestii L&F:

  1. Klientów mało obchodzi czy aplikacja wygląda jak natywna. Klientów obchodzi czy rozwiązuje ich problem i jest wygodna w użyciu. To czy guzik wygląda tak czy inaczej to sprawa drugorzędna.
  2. Istnieje cała masa popularnych aplikacji, które nie mają natywnego L&F (np. WinAmp, Skype, Acrobat Reader, Ms Office, QuickTime, Avira, Microsoft Security Essentials).

Java has succeeded in two key areas: as the dominant language for writing server-side
applications and as the top language for teaching computer science in colleges. The
.NET Framework is better for both these areas, although it is not inevitable that it will become dominant in either. For writing client applications, there is no question
that C# clearly outstrips Java

A co miał napisać w książce o C#? Że jest do d**y?

Co do kwestii .NET vs Java (platforma): Moim zdaniem Java ma przewagę choćby dzięki lepszym mechanizmom zarządzania pamięcią i HotSpotowi (kwestia responsywności).
Co do kwestii C# vs Java (język): pewnie racja, że w C# pisze się (nieco) łatwiej i szybciej. Ale przy Scali wypada bardzo blado.

0

Oczywiście .NET Framework z dosyć fajnym C# nie zdominuje rynku - zawsze znajdą sie czy to przeciwnicy M$, czy ludzie którzy nie lubią pracować na windowsach/płacić za windowsy i ewent. visuale. Gdyby .NET był rzeczywiście przenośny, gdyby ktoś inny stworzył tą platformę, śmiem twierdzić że wyparłaby Jave.
Ale to tylko moje subiektywne spojrzenie na sprawę.

A tak przy okazji - co sądzicie o przejęciu Suna przez Oracle ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1