jaki ja mam zawsze polew z Javowców to mała bania. .NET bije na łeb Jave i od strony developingu i od strony wydajności. Java umiera i każdy zdrowy obserwator to widzi. Jedynie teraz wydanie androida przedłuży jeszcze jej męki przed śmiercią, ale to nic nie zmieni. i kocham po prostu was open source'owców :* z waszą nienawiścią do .net'u
Dziwny temat
Po pierwsze .NET to platforma więc powinieneś porównywać ją z inną platformą (czyli J2EE jeśli już coś Javowego), a nie z Javą, która jest po prostu językiem.
Po drugie, istnieje dość prosty podział. Małe, średnie projekty webowe, albo desktopowe to poletko Php, .NET, Ruby itd. Duże inicjatywy (czyli Enterprise) to poletko J2EE. Jeśli twierdzisz, że Java umiera to automatycznie stajesz się zwolennikiem teorii, że niedługo padną wielkie korporacje, banki itd. Dlaczego ? Bo tam głównie stoi ta twoja umierająca "Java"
J2EE to zlepek kilkunastu / kilkudziesięciu technologii, frameworków wybieranych przez architektów J2EE na podstawie dostarczonej specyfikacji projektu. Czyli klient mówi, że coś tam chce, a mądre głowy siadają do tego i wybierają odpowiednie "klocki". Jeśli architekt spieprzy to potem istotnie projekt może być do dupy, może być powolny itd. Dlatego tak ważnym etapem jest planowanie. To jest chyba główna różnica wskazująca dlaczego Java jest dobra w rozwiązaniach Enterprise. Po prostu jest elastyczna. Wiedza jest premiowana, niewiedza jest karana (choć to dopiero może się okazać później) .NET jest bardziej zamknięte. Oferuje zestaw dobrych narzędzi, ale jak jest do zrobienia projekt webowy no to jest jakaś jedna dobrze wydeptana droga, którą się podąża i tyle. w J2EE jest zupełnie inaczej. Idąc do innego projektu, do innej pracy nie wiesz co Cię czeka. Praktycznie w każdym projekcie są inne frameworki, inne technologie nawet jeśli teoretycznie projekt jest podobny (dajmy na to, na pierwszy rzut oka jest to jakaś aplikacja web'owa). Bardzo często jest tak, że np. obok Ciebie siedzi kolega, robi teoretycznie podobny projekt i okazuje się, że nie umiesz mu pomóc bo ma jakiś kompletnie inny framework, gdzie są kompletnie inne założenia, kompletnie inny sposób funkcjonowania wszystkiego. I to wszystko jest J2EE. Zresztą, spójrz sobie na ogłoszenia o pracę - po sformułowaniu J2EE najczęściej masz wypisanych kilkanaście różnych skrótów dlatego, że J2EE nie jest równe J2EE. Każdy projekt ma swoją specyfikę, wręcz bym powiedział, że każda firma "ma swoją Javę" - bo np. architekt zna ileś tam frameworków i jakieś tam forsuje w firmie. Pójdziesz do innej firmy i się okazuje, że tego nie umiesz, tamtego nie wiesz, a o siamtym to nawet nie słyszałeś
Co do wydajności to hmmm nie wiem jak ty chcesz porównywać wydajność
Piszesz np. 3-4 lata projekt w J2EE, optymalizujesz go różnymi profilerami, masz np. różne systemy cache'ujące, load balancery, zoptymalizowane głównie pod ten projekt, który realizujesz, różne bazy danych. Jak chcesz to porównać ? Jedyna opcja to pisać przez te kilka lat to samo w .NET i potem na końcu sprawdzić. Życzę powodzenia w porównywaniu
To co możesz sobie sprawdzić to zbudować w gołej, zwykłej Javie SE (takiej, co np. na studiach jest) jakiś benchmark i się jarać tym, że jest wolniejsze. Do tego np. porównać zapytania do bazy danych i wyjdzie Ci na to, że coś tam jest szybsze. Tyle tylko, że ... to o niczym nie świadczy bo przy takiej złożoności projektu, o której mówię wyżej, nie ma możliwości tego sprawdzenia. Dochodzi też aspekt finansowy. Ponieważ Java to duże projekty i klientami są najczęściej korporacje więc one mają pieniądze. Mają pieniądze na to, aby nawet ewentualną powolność zminimalizować sprzętowo. tak np. jest w "moim" projekcie gdzie przedsiębiorstwo ma serwer aplikacji za ok. milion EUR, gdzie jest jakaś własna specyficzna implementacja wirtualnej maszyny Javy i specyfika projektu wpływa na to, że nie można zastosować pewnych rozwiązań optymalizacyjnych. Co więc robią ? Co roku upgradują ten serwer płacąc po 100, 200 tys EUR... Że nieeleganckie rozwiązanie ? Być może, ale to oni mają pieniądze i robia z nimi co chcą
Ponury_murzyn - ja też kiedyś taki byłem jak pisałem PHP. Byłem przekonany, że tam jestem w stanie napisać wszystko, że jest szybkie (bo np. MySQL'owy SELECT był wielokrotnie szybszy od bazy ORACLE'a więc ta baza to musi być jakiś szit - tak sądziłem), i co to w ogóle za jakaś Java jest, kto w tym w ogóle pisze.
Jak sie okazuje są ludzie, którzy w tym pisza i zarabiają bardzo dobrze
Szczerze mówiąc, jestem przekonany, że tak naprawdę nie masz pojęcia o Java/J2EE
J2EE to ogromna kobyła i m.in. to ona sprawia, że życie programisty Javowego nie jest łatwe (bo może być tak, że pójdziesz do innego projektu i będziesz się kilka miesięcy uczył jakeigoś innego frameworku + specyfiki projektu).
Tak naprawdę Jave/J2EE można oceniać przez pryzmat projektów, w których się uczestniczyło. Widziałem takie projekty, które używały standardowych, klasycznych, archaicznych rozwiązań Javowych ("gołe" Servlety + JSP), które chyba zeszły wiek pamiętają. Kod tam jest bardzo słaby, bardzo cieżko w czymś takim jest się odnaleźć (wyglądało to coś jak takie nieobiektowe stare Php). Gówniany projekt ? Na pewno tak. Jaki klient ma taki projekt (on cały czas działa) ? A wybierz sobie bo to pewien czołowy europejski operator telefonii komórkowej
I teraz gdy popracujesz w takim projekcie 2-3 lata to faktycznie możesz sobie śmiało powiedzieć, że "Java to :cenzura:" i się przeniesiesz do .NET czy czegoś tam i odetchniesz z ulgą bo tam z góry wiadomo co jest dobre, są jakieś przyjęte rozwiązania, jest jakaś "dobra" droga. No ale równie dobrze możesz być zaangażowany w taki projekt, w którym osoby po prostu znające dobrze J2EE, umiejące wybrać odpowiednie klocki sprawiają, że w takim projekcie pracuje się przyjemnie mimo, że jest to projekt tam samo skomplikowany jak ten, o którym wcześniej pisałem.
W Javie każdy projekt jest inny i to DOSŁOWNIE bo używa się tony różnych frameworków. W związku z tym bycie Java/J2EE jest bardzo mocno zorientowane na naukę.
Co do Androida to jest to tylko mała zabawka. Nikt kto robi aplikacje enterprise się nie przeniesie tylko na Android bo to nieporównywalnie inne pieniądze. J2EE = Enterprise = korporacje = duuużo pieniądzy. Android = jakiś dodatek o tyle fajny, że jak nie chce mi się uczyć nastepnej składni, nastepnego pseudo-kodu, to zwyczajnie mogę już za pomocą tego co umiem zrobić to co trzeba w kilka wieczorów. Analogicznie wygląda sytuacja z J2ME (mobilna wersja) - plus jej jest taki, że używa tej samej składni (choć sama implementacja jest mocno okrojona), tego samego IDE i na tym właściwie możnaby zakończyć plusy
Projektów Javowych, zapotrzebowanie na nie, zapotrzebowanie na pracowników jest ogromne. Czy jest to fajna praca ? Zależy od projektu. Czy dobrze płatna ? O ile robisz projekty Enterprise, a nie jakieś proste stronki www (w których lepiej spisze się na pewno chociażby Php) to na pewno bardzo dobrze bo tam gdzie są ogromne pieniądze, siłą rzeczy muszą być pieniądze dla wykonawcy. (zarówno dla zwykłego pracownika, nie mówiąc już o managerach projektu, team leaderach, architektach itd.).
Także wszystko rozbija się tak naprawdę o projekt. Jak ktoś pracował z kiepskimi ludźmi to nie dziwię się, że odczucia do Java/J2EE może mieć różne. Ja tam sobie chwalę bo to mi co tydzień pracodawcy na goldenline wysyłają informacje o nowych projektach, do których szukają ludzi. To daje komfort. Bardzo duży.
O krytyce .NET nie słyszałem - zaryzykuję stwierdzenie, że tak robią niedzielni programiści lubiący się kłócić gdzieś tam na stronkach, forach itd.
Każda technologia jest do czegoś dobra, bo gdyby nie była to nikt by jej nie używał (pomijając jakichś tam odszczepieńców)