Witam.
Na początku chciałbym zaznaczyć że nie jest to kolejny temat "Java vs C#, czyli co lepsze bo chce się nauczyć jakiegoś języka". Obecnie jestem młodszym programistą javy i już trochę kodu w niej wyklepałem. Powoli jednak zbliżam się do momentu kiedy sam niczego się w niej nie nauczę, bo do tego potrzebuję praktyk w wielkich projekcie a to przyjdzie z czasem. Jako że nadal mam zapał samodoskonalenia, to ciągnie mnie do nauki czegoś jeszcze, tu - C#. Potrzebuję paru odpowiedzi, głównie na temat C#, jednak nie piszę tematu w podforum dla niego przeznaczonym, ponieważ tam mogą być tylko opinie jakoby w C# wszystko dało się lepiej zrobić niż w javie. Proszę też o wstrzymanie się z odpowiedziami że i to i to da się zrobić w obu językach, bo to jest oczywiste. Można napisać cały system enterprisowy w notatniku przez jedną osobę, a że zajmie to 100 lat i będzie pełno błędów to swoją drogą.
Pytanie 1) Szybkość i poziom rozwoju - Java od początku nie posiadała typów generycznych i przez to musieli to obejść przez zasłanianie. Niestety nie działa to fajnie i wielu rzeczy z poziomu runtime nie da się dowiedzieć. C#, jako że wyszedł parę lat później, był projektowany na błędach javy i podobno zostało to naprawiane. Czy jest jeszcze coś co w javie dokucza, a w C# jest zrobione lepiej? Druga sprawa to szybkość rozwoju. Java rozwija się wooolno. W zasadzie od wersji 5 nie ma wielu nowości. C# natomiast co chwilę wprowadza jakieś zmiany i ma o wiele więcej funkcji niż Java. Czy te nowości szybko się przyjmują? Czy nie sprawiają problemów? A może niektóre zostały wprowadzone na siłę? Druga sprawa to czy np. taka książka o C# 4 ma jeszcze jakąś wartość skoro już jest nowszy i ma zmiany?
Pytanie 2) Porównanie ASP.NET do JEE - Wiem mniej więcej z czym się je JEE i powiem że nie jestem zachwycony. Mam wrażenie że sprawdza się to tylko w zastosowaniach biznesowych, kiedy naprawdę potrzebujemy napisać system modułowo i rozproszyć go na parę maszyn. Natomiast do pisania nawet złożonej stony internetowej się to nie nadaje. Niby jest tomcat, można użyć samego JSF, ale wydaje mi się że jest to komplikowanie tego co można zrobić łatwiej w php. Jak to jest z ASP.NET? Do czego się nadaje lub nie?
Pytanie 3) Serwer pod stronę internetową - Mam w planach pisać dość rozbudowaną stronkę internetową i zastanawiałem się nad językiem. Java straciła swoją pozycję. Tutaj hosting ogranicza do dedyków które nie są mi potrzebne, a cena dużo większa. Jak to wygląda z C#? Są jakieś sensowne hostingi w cenach podobnych do tych z php?
Pytanie 4) Cena - Jak wygląda cena pisania/szkolenia się w C#. W javie prawie wszystko jest za darmo. Do pełni szczęścia trzeba wydać parę kafli na certyfikaty z oracle i ew. parę stówek na książki które są ogólnodostępne. W C# mamy bezpłatne środowisko VS w wersji express, ale czy wystarczy ono do pisania aplikacji? Czy np. wersja proffesional ma jakieś bardzo ułatwiające rzeczy? No i druga sprawa to czy jak kupię VS 2012 to czy za np. 2 lata gdy wyjdzie wersja 2014 będę zmuszony do zmiany na siłę bo moja będzie już przestarzała? Jak wyglądają ceny oficjalnych egzaminów C#? I jak przedstawa się cena książek do tej platformy? Czy jedynym sensowym wyborem są książki z wydawnictwa Microsoft Press, czyli po angielsku? Bo nie ukrywam że lepiej czyta mi się po polsku, tym bardziej gdy lektura ma ~800 stron. Czy wydając płatne oprogramowanie w C# mam jakieś zobowiązania do microsoftu?
I fakt na koniec, który zauważyłem. Jeżeli też jakieś macie to proszę o dopisanie, lub ew. naprostowanie mojego.
Fakt 1) Wieloplatformowość - Tutaj java ma przewagę, bo mono nie wliczam. Z wielu testów wychodzi że jest ono dużo wolniejsze niż microsoftowe .NET. Ale sama wieloplatformowość ma też wady. Wiele funkcji windows nie mogłem podpiąć pod javę bo po prostu nie było bibliotek. Nikomu nie chciało się chyba pisać czegoś co pod działa tylko pod windą. A używanie funkcji c++ przez JNA to moim zdaniem katorga i ostateczność.