java vs. c # - perspektiva produktivity
<p>máte-li několikaleté zkušenosti s prací s java a mnohaleté zkušenosti s prací s c # a .net), vážím si vašeho názoru na rozdíly v produktivitě vývoje softwaru mezi těmito dvěma prostředími. jeden z našich zákazníků uvažuje o nahrazení stávajícího softwarového řešení, protože výměna bude vyžadovat přibližně 10 - 15 pracovních let za rok, volba pro java nebo .net) na základě rozdílů v produktivitě mezi nimi , může výrazně ovlivnit požadované investice a dobu uvedení na trh.</p><p>mohli byste nám poskytnout informace o rozdílech v produktivitě vývoje softwaru mezi java a c # /. net?) raději bych dostal odpověď následovně:</p><blockquote> <p>moje zkušenost je založena na x leté zkušenosti s prací s java a x leté zkušenosti s prací s c # /. net. java je x% produktivnější než c # .net nebo c # /. net je o x% produktivnější než java, pokud vezmete v úvahu následující skutečnosti).</p> </blockquote>
<p>moje zkušenost je založena na 10leté zkušenosti s prací s java a 3leté zkušenosti s prací s c # /. net. java je 0% produktivnější než c # .net toto je založeno na psaní back-end aplikací založených na službách.<br> c # /. net je možná o 5% produktivnější než java pro psaní uživatelských aplikací.) ale pak jsem to neudělal téměř 5 let v java a nový editor uživatelského rozhraní netbeans mohl tuto mezeru uzavřít.</p><p>chcete zvýšit produktivitu? <a href="http://en.wikipedia.org/wiki/continuous\_integration"> ci </a> (ideálně kontinuální dodávka) a automatizované testy. produktivita získaná výběrem jazyka/platformy/ide na jakémkoli hlavním jazyce/platformě/ide je poměrně malá.</p>
Upřímně řečeno, já bych jít s sestavení .NET, jak se zdá být jednodušší řešení a těsněji obsahoval řešení, než zahájit nový proces. Některé z důvodů, proč jsem pocit, že způsob, jakým jsou tyto:


1. S nástrojem příkazového řádku, že jste na trh nový proces. Takže je to zcela samostatný proces ID běh a bude probíhat mimo rozsah a aplikační domény vaší stávající aplikace. Veškerá komunikace mezi aplikací a procesu bude přes hranice procesu a bude muset být provedeno buď s telefonem, jakési sdílené paměti, nebo nějaký jiný přístup, který by mohl být těžkopádný (zejména při řešení otázek).
2. Se zahájením nového procesu, jste v podstatě ztratí kontrolu nad tímto procesem z vaší aplikace. Pokud vaše aplikace zemře nebo se vypne, budete muset tento proces výslovně zabít - jinak budete muset úchyty zůstat otevřené soubory uzamčeny, atd.
3. Včetně sestavení .NET v aplikaci umožňuje vše spustit ve stejném kontextu (obecně), který umožňuje lepší komunikaci mezi složkami, snadnější ladění a odstraňování poruch (obecně), a jediný způsob je řízena.
4. Máte trochu větší kontrolu nad kódu. Zahájení procesu je v podstatě black-box - nemáte ponětí, co se děje uvnitř ní. Je pravda, že se sestavení .NET máte podobný black-box scénář, ale vzhledem k tomu, že je ve stejném procesu, může mít nějaké další vhled do toho, jak jsou hovory byly provedeny, kde jsou výjimky být hozen, atd. V podstatě mít trochu větší vhled do složky s sestavení .NET spíše než zahájit nový proces.


To jsou jen některé myšlenky z vrcholu mé hlavy. Doufám, že to pomůže. Máte-li dotazy, dejte mi vědět a já vám zpracovat mé odpovědi. Hodně štěstí!! 1) JAR je archv s tou aplikací , jad může být pouze "zástupcem''2) každý výrobce Javu implementoval jinak proto krom rozlišení se rozlišoval ještě i výrobce V současné době jsou v kurzu SQL dartabáze. Takže pokud se chceš uplatnit, tak MS-SQL, Interbase, ORACLE, popř. nějaké ty internetové jako např. MySQL, PostgreeSQL apod. Každá databáze má vlastní programovací jazyk pro uložené procedury, vlastní datové typy apod.Program, ve kterém budeš vyvíjet soft je opět něco jiného. Ten většinou je univerzální a umí přistupovat k jakékoliv databázi.V současné době, pokud bych začínal, tak bych se orientoval směrem .NET a C#. Kazdy z nich ma jine zamereni. Windows se vic orientuje na tvorbu obsahu, zatimco Android na jeho konzumaci. Takze volba toho vhodnejsiho je predvesim zavisla na potrebach a ocekavanich kazdeho soudruha... Pokud se potřebuješ ptát zda se ti to bude hodit, tak je jednoduchá odpověď: NE, nebude.Programování není něco co se naučíš za pár měsíců a pak už budeš umět programovat. Tohle je záležitost na celý život. Programování se stále vyvíjí a jsou tu nové metody/postupy jak programovat. Je potřebné se neustále učit něco nového. Protože je to běh na dlouhou trať tak to chce mít nějakou motivaci proč to děláš. Nejlépe aby jsi z toho měl nějaký vlastní užitek. Co já jsem si tak pro sebe programoval, tak byly různé automatizace a strojové konverze/porovnávání atd. Například co si vzpomínám, tak jsem měl k filmům titulky. A potřeboval jsem všechny titulky pojmenovat stejně jako ten film, aby se automaticky načítali do přehrávače. A měl jsem na disku vždy ve složce video a titulky. A než abych hledal něco co mi to přejmenuje, tak jsem si napsal prográmek co prošel zadanou složku s filmama, a v každé složce našel dva soubory a ten menší soubor pojmenoval podle toho většího souboru. A měl jsem hotovo. Nebo třeba když jsem potřeboval hromadně v souboru na každém druhém řádku dopsat 0 na 7mou pozici. Nebo třeba když jsem chtěl projít nějaký web a proklikat ho celý a stáhnout tam odtud všechny obrázky atd. Když si teda najdeš něco kde by jsi to využil tak budeš rád že to umíš. Už nebudeš muset hodiny hledat aplikaci, která bude umět to co chceš, ale za půl hodinky si tu aplikaci uděláš sám.Pokud by jsi to chtěl na nějaký přivýdělek, tak to možná ano, ale nejdřív to chce produkovat prográmky co fungují a alespoň nepadají. Tj budeš tam mít ošetřené všechny chybové stavy. Tj od toho, že pokud ti má uživatel zadat číslo od 1 do 10, tak musíš být připravený, že zadá opravdu číslo od 1 do 10, ale on taky může zadat 0 nebo 15, nebo třeba -4. A co hůř on ti třeba nemusí zadat nic, a nebo ti zadá nějaké písmeno atd. Na nic z tohoto by aplikace neměla spadnout. Měla by alespoň vypsat chybu, že je uživatel blb a nezadal správnou hodnotu. Nebo třeba když budeš… načítat soubory z disku, tak uživatel nemusí mít právo ten soubor číst, nebo do něj zapisovat atd. A ani na tomhle by to nemělo padnout. A to mi věř tohle se naučit ti bude trvat asi mnohem déle než těch několik měsíců. Chtít peníze za něco co funguje jen v případě že je to správně použito a jinak to padne bez nějaké smysluplné hlášky, kdy uživatel ani neví co udělal blbě, mi přijde celkem nefér a podruhé si od tebe už nikdo nic nenechá udělat. [Ukázat celý příspěvek](javascript:void(0)) Vetsina bank pochopila a opousti Javu. KB (resp. jejich mOJEBanka) take: [http://www.mojebanka.cz/file/cs/novinky\_20130427\_...](http://www.mojebanka.cz/file/cs/novinky_20130427_mb.html) MP Pleteš páté přes deváté... Zdrojový kód a strojový kód jsou dvě naprosto nesouvisející věci. A když z toho máš v hlavě bordel, tak to prostě nečti. Každý na tohle hlavu nemá, tak to nech těm, co ji mají ty se věnuj tomu, na co hlavu máš. Není to žádná ostuda :) Tak ono zalezi o jakou dokumentaci ti jde. Muzes mit dokumentaci ve forme JavaDoc pro Javovske aplikace. K tomu ti staci vyvojovy nastroj, ktery vyvojari uz pouzivaji. Lze z toho generovat html stranky. Toto je dokumentace pro vyvojare. (IMHO javadoc ale obecne komentare a poznamky v kodu jsou musthave, at uz nejakou dokumentaci vubec planujete delat nebo ne ;) )Testy jsou z urciteho pohledu taky dokumentace. Dokumentuji, jak urcite casti maji fungovat, jake jsou okrajove podminky, a co to delat nema.Pokud mas na mysli napr user guide, nebo architecture, security, maintenance/support a podobne, tak nato muzes pouzit treba LibreOffice s podporou nastroju pro tvorbu napr. UML diagramu, jako treba class diagram. Tady mas moznosti jako EnterpriseArchitect (placeny, ale existuje i spousta free variant). Je toho spousta. Nebo muzes pouzit nejaka online reseni (i v ramci intranetu), jako napr. wiki, Confluence, E-share, GitHub (muzes mit interni/privatni instalaci, GitHub ma svoji vlastni wiki) Já jsem svého času šel cestou Cisco academy (<https://netacad.cz/>), nezažil jsem jiný způsob (krom hodně letmého vhledu na škole), ale jako detailní úvod o tom jak sítě fungují a pak samozřejmě trénink CISCO řešení super.Nicméně než začneš vyřeš si svou podmínku o českém jazyce, bez toho nemá smysl v IT dělat cokoli... Těžko říci, který bude lepší.....v určitém programu nebo hře může být lepší ten, nebo zase ten druhý.Ale osobně bych šel spíše do Intelu.