Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

Zdravím
Už cca rok programuji webové stránky, a myslím si, že to zvládám dobře. Nyní bych chtěl začít dělat i desctopové aplikace, a nevím jaký jazyk zvolit. Vybírám si mezi javou, a c#. Chtěl bych jazyk, který má nejlepší budoucnost.
Když vidím, jak uživatelé reaguji na windows 8, tak nevím, jestli má smysl se c# učit. Co si myslíte vy, co bych měl vybrat?

 
Odpovědět 12.8.2012 14:13
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
Drahomír Hanák:

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.

 
Nahoru Odpovědět 12.8.2012 14:33
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

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.

 
Nahoru Odpovědět 12.8.2012 14:44
Avatar
matesax
Redaktor
Avatar
matesax:

Pardon, ale Javu používat na descop? (vím že to jde) Naprostý nesmysl nad tím váhat - Java = web, C# = obojí... Proto jsem se zaměřil na C# - jde v něm všechno - Desop - WF/WPF, Web - ASP a hry - XNA - není důvod váhat...

 
Nahoru Odpovědět 12.8.2012 14:48
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
David Čápka:

C# je lepší jazyk, Java má větší komunitu. Obojím se uživíš, oboje má budoucnost.

Nahoru Odpovědět 12.8.2012 14:49
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na matesax
matesax:

Pardon za ty zkomoleniny - samozřejmě je to Desktop...

 
Nahoru Odpovědět 12.8.2012 14:49
Avatar
matesax
Redaktor
Avatar
 
Nahoru Odpovědět 12.8.2012 14:50
Avatar
Odpovídá na martinkobelka
David Jančík [sczdavos]:

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 :D

Nahoru Odpovědět 12.8.2012 14:50
Čím více času dostaneš, tím méně ho máš.
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Jde ale projekt mono for android není tak úplně freeware ostatně jako další mono projekty. Nwm ale v tomhle u mě vede Java.

Nahoru Odpovědět 12.8.2012 14:51
Čím více času dostaneš, tím méně ho máš.
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na martinkobelka
Fugiczek:

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é.

 
Nahoru Odpovědět 12.8.2012 14:51
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na matesax
Fugiczek:

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ě.

 
Nahoru Odpovědět 12.8.2012 14:55
Avatar
Odpovídá na Fugiczek
David Jančík [sczdavos]:

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.

Nahoru Odpovědět 12.8.2012 14:57
Čím více času dostaneš, tím méně ho máš.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
David Čápka:

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 :)

Nahoru Odpovědět 12.8.2012 14:58
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

A nikdo tu nezmínil .NET framework :)

Nahoru Odpovědět 12.8.2012 14:59
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na David Čápka
Fugiczek:

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 :)

 
Nahoru Odpovědět 12.8.2012 15:02
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Fugiczek
David Čápka:

Ale vůbec :) MS vyvíjel od začátku svou Javu, poté se pohádal s Oracle a navrhl C#.

Nahoru Odpovědět 12.8.2012 15:10
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na David Čápka
Fugiczek:

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ý :)

 
Nahoru Odpovědět 12.8.2012 15:13
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Fugiczek
David Čápka:

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#.

Nahoru Odpovědět 12.8.2012 15:15
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Don
Člen
Avatar
Odpovídá na martinkobelka
Don:

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.

 
Nahoru Odpovědět 12.8.2012 16:12
Avatar
sotek
Člen
Avatar
sotek:

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.

 
Nahoru Odpovědět 12.8.2012 16:31
Avatar
Kit
Redaktor
Avatar
Kit:

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.

Nahoru Odpovědět 12.8.2012 17:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
sotek
Člen
Avatar
Odpovídá na Kit
sotek:

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).

 
Nahoru Odpovědět 12.8.2012 19:52
Avatar
sotek
Člen
Avatar
Odpovídá na sotek
sotek:

se mi tady něak vyrojily hvězdičky, ty tam samo nemaj co dělat.

 
Nahoru Odpovědět 12.8.2012 19:54
Avatar
Kit
Redaktor
Avatar
Odpovídá na sotek
Kit:

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ě.

Nahoru Odpovědět 12.8.2012 20:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Kit
Kit:

Tou sekcí "final" jsem měl na mysli blok "finally".

Nahoru Odpovědět 12.8.2012 20:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
sotek
Člen
Avatar
Odpovídá na Kit
sotek:

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.

 
Nahoru Odpovědět 12.8.2012 21:24
Avatar
Kit
Redaktor
Avatar
Odpovídá na sotek
Kit:

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ě.

Nahoru Odpovědět 12.8.2012 21:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
sotek
Člen
Avatar
Odpovídá na Kit
sotek:

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.

 
Nahoru Odpovědět 12.8.2012 21:42
Avatar
Kit
Redaktor
Avatar
Odpovídá na sotek
Kit:

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.

Nahoru Odpovědět 12.8.2012 22:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michael Olšavský:

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.

 
Nahoru Odpovědět 6.9.2012 16:57
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michael Olšavský
Kit:

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í.

Nahoru Odpovědět 6.9.2012 20:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 31 zpráv z 31.