Diskuze: výběr jazyka C# vz Java
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 31 zpráv z 31.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Jsou to srovnatelné jazyky. C# má oproti Jave vše již vyřešené (XNA, WPF, ASP .NET MVC a další). Tím myslím, že vše již dodal výrobce, kdežto v javě si programátoři museli některé věci napsat sami, a tak existuje spousta (externích) knihoven, které danou funčknost zajišťují i v javě. V té zas můžeš vyvíjet pro android, což v C# nelze (alespoň co já vím). Na druhou stranu C# je jediný programovací jazyk pro Windows Phone nebo xbox. Co jsem se tak koukal, poptávka po obou těchto jazycích je velmi velká a určitě se uplatníš ať už si vybereš cokoli. Osobně mi přijde jednodušší začít v C#, ale to je jen můj názor. Java se také učí velmi rychle. Ohledně Windows 8 toho moc nevím, ale snad to nebude tak hrozné, ale to uvidíme později.
Díky. Zatím pro mě vede java, protože bych mohl používat netbeans, který používám i pro php, ale ještě se může vše změnit.
C# je lepší jazyk, Java má větší komunitu. Obojím se uživíš, oboje má budoucnost.
Tjo NetBeans nepoužívej. Je to hrozně pomalé IDE. Eclipse je o mnoho
rychlejší. Dá se tam stáhnout i plugin na PHP.
Chtěli jsme v NB dělat novou verzi Islandsoftu ale načtení projektu trvalo
asi 2 minuty a když jsme chtěli něco přidat nebo modifikovat, trvalo to
další minutu.
Od té doby upe používám Eclipse a dělám, že jsem spokojenej uživatel
Javy
Jde ale projekt mono for android není tak úplně freeware ostatně jako další mono projekty. Nwm ale v tomhle u mě vede Java.
Ještě bych dodal že u Javy program spustíš na jakémkoliv OS (Windows, Linux, Mac) jediný rozdíl je pak vzhled aplikace, protože java na každém OS má jiný Look&Feel ale jinak funkčnost zůstává. Samozřejmě C# jde na Linuxu spustit také ale potřebuješ na to knihovny a je to složité.
S tímhle nesouhlasím, že je Java je jenom na web aplikace. Sice je pravda že díky tomuhle vzrostla u ní popularita ale jinak v ní jdou dělat plnohodnotné desktopové aplikace. Tak jako hry, vem si populární hru Minecraft, taky je v Javě.
Multiplatformost bych takto neřešil. Pokud děláš nějaký program a
chceš aby bylo možné jej používat na více OS tak ve většině případů
jej budeš muset navrhnout jinak nebo několik částí změnit aby ti tam
chodil korektně.
Jen obecné algoritmy lze jednoduše přemigrovat na všechny platformy.
C# jde v monu na linuxech spustit docela hezky. Jen je pomalejší spouštění a občas není tak svižný. Ale vzhledem k tomu, že 99% uživatelů používá Windows a nerozumí tomu, tak vývojáři upřednostňují vývoj pro tuto platformu, aby program rozšířili a používalo jej více lidí.
Vše záleží na návrhu programu. Toto by si měl programátor zvolit před tím, než započne něco nesmyslně "bušit". K čemu ten program má být, jak má fungovat, v čem ho bude dělat a jestli jej potřebuje rozjet na dalších OS případně jiných zařízeních.
Jako můžeme se tu dohadovat celý den, ale ve finále je to úplně jedno . Java i C# vycházejí ze stejného konceptu, fungují na stejném principu a po obou je velká poptávka a bude ještě větší.
Já bych na C# nenechal dopustit, protože jazykem je mnohem modernější, než Java, je tam opraveno mnoho chyb v návrhu Javy. Java je zase zadarmo, ale o to je v ní větší bordel
A nikdo tu nezmínil .NET framework
Mrkvosoft jen počkal až byla Java opensource a ukradl to. Možná něco vylepšil a změnil ale origál zůstává originál
Ale vůbec MS vyvíjel od začátku svou Javu, poté se pohádal s Oracle a navrhl C#.
Jak jsi říkal takovéhle diskuze jsou na dlouho, každý má svůj názor a martinkobelka si vybere jazyk který mu bude nejvíce sympatický
Ať si klidně vybere Javu, je to dobrý jazyk. Já jen říkám, jak to bylo s Microsoftem, on si Javu dělal trochu po svém a Oracle se s ním soudil, že nerespektuje jeho standard, proto MS od Javy upustil a udělal C#.
Pokud chceš vyvíjet pro linux/andorid/web java/python. Pokud chceš být
omezen produkty Microsoft tak C#.
Je blbost používat mono na Linuxu. Většina distribucí od něho opouští.
Jediný větší projekt který běží nativně pod monem je Benshee. Linux
uživatelé nemají zájem o mono tak jak o javu.
Pokud vidíš výhodu v používání NetBeans nebo nedejbože Eclipse, tak
si asi ještě nepřičichl k Visual Studiu. Ostatně pro Javu jsem zatím
neviděl rozumné, rychlé vývojové prostředí.
Multiplatformita je častý zaklínadlo Javy, ale těch aplikací, který se
skutečně používají víc než na jedný platformě, je minimum (nepočítám
weby).
Z osobní zkušenosti (3 roky Java, půl roku .NET) ti můžu doporučit .NET,
jestli C# nebo třeba VB, to už je celkem jedno.
Už tady bylo řečeno, že Java a C# jsou srovnatelné jazyky. Jsou srovnatelné i výkonově. Na serveru se lépe uplatní Java, na desktopu Windows zase lépe vypadá C#.
V Javě se mi líbí lépe vyřešené výjimky. Možná proto, že vypadají stejně jako v PHP. Naopak se mi nelíbí roztříštěnost knihoven, což je zároveň dobře i špatně.
V obou jazycích se dají psát rychlé i pomalé aplikace. Značně záleží na schopnostech programátora.
A v C# je snad nějakej problém s výjimkami?
try {
// ...
} catch {
// ...
}
Naopak je práce s nimi příjemnější (vynechání typu exception &
proměnné) a dovedou totéž.
Výkonově z pohledu výpočtů asi ano, z pohledu GUI vede rozhodně C# (jo,
překvapivě na Windows).
se mi tady něak vyrojily hvězdičky, ty tam samo nemaj co dělat.
V C# jsem ještě nedělal, tak jsem si ty výjimky popletl s jiným jazykem. Koukám, že je to stejné.
V obou jazycích je problém s destruktory, oba to mají stejně špatně. Proto je nutná sekce final, která se mi nelíbí. V PHP by byla zbytečná, protože tam destruktor funguje správně.
Destruktory v C# (ne)řeším tak:
try {
using (MujObjekt o1 = new MujObjekt()) {
// neco delam s objektem
o1.whatever();
}
} catch {
// zachyceni vyjimky
}
K dispose dojde i při zachycení výjimky a co víc chtít.
Právě že nedojde. Destruktor se volá až s voláním garbage collectoru. A to je někdy pozdě.
Nejde o uvolnění paměti, ale například o uzavření souboru otevřeného objektem. V C# a Javě se to musí řešit mimo objekt a to je špatně.
IMHO se mýlíš nebo nevím, o co ti konkrétně jde.
Teď jsem si to krokoval v C# a implementuje-li objekt interface IDisposable s
metodou Dispose(), tak k uzavření (tzn. zavolání metody Dispose(), která
může uzavřít třeba otevřené připojení k databázi) samozřejmě dojde
hned při opuštění using bloku, ještě před catch.
Zkus si zavolat funkci, která vytvoří lokální objekt. Ten objekt bude mít konstruktor pro vytvoření a otevření souboru. Také bude mít destruktor, který ten soubor uzavře.
Po opuštění funkce by měl být její lokální objekt zlikvidován, tedy i soubor by měl být uzavřen. Zkus následně (stále v programu, hned po opuštění té funkce) ten soubor smazat. Pokud smazání proběhne v pořádku, je vše OK.
Na Linuxu to proběhne OK vždy, protože je možné smazat i otevřený soubor, ale na Windows to podle mne nepůjde. Zkus to.
Já programuji radši v c#. U javy je super, že funguje téměř na všem.
c# je zato modernější, má docela dobrou podporu.....
Jinak jsou skoro stejné. I syntaxe, takže by neměl být problém
pozdějipřejít.
To je v pořádku. U mne by bylo C# bezvýznamné, protože bych to neměl na čem spustit. Javu z určitých důvodů také rád nemám. Hlavně proto, že není interaktivní.
Zobrazeno 31 zpráv z 31.