Jarda Jirava se před nedávnem na Twitteru zeptal, jestli máme nějaké připomínky k Visual Studiu, a ať mu případně dáme vedět. Nu, máme :) K Visual Studiu jsem se už mnohokrát vyjadřoval (např.), ale nikdy jsem nešel moc do hloubky. Protože má ale Jarda jakožto MVP možnost setkat se přímo se zodpovědnými lidmi z Microsoftu a tedy aspoň teoretickou šanci věci ovlivnit, budu tentokrát konkrétní.
Co mi asi nejzásadněji vadí na Visual Studiu, je zaměření na podporu konkrétních jazyků a technologií (Visual Studio toho umí hodně a některé věci opravdu dobře), bohužel bez dostatečné pozornosti k základním prvkům použitelnosti. Co tím myslím? Např. že IntelliSense k C# je skvělá, ale v textovém editoru chybí základní příkazy pro manipulaci s textem (viz níže). Nebo že Visual Studio má pro řadu technologií nejlepší WISYWIG editor na světě, ale základní věci typu zastavení dlouhotrvající operace jsou kdesi schované nebo nejsou vůbec. Jsou to jen příklady, ale mělo by z nich být jasné, o co mi jde – produktové týmy jakoby vymýšlely další a další vlastnosti pro svůj produkt, ale nikdo se nestará o celkové UX, o všechny ty důležité detaily okolo.
Krásně v kontrastu je z mého pohledu Eclipse – to je oproti Visual Studiu poměrně ošklivé IDE a také má nevýhodu, že je naprogramované v Javě (ne zcela nativní vzhled, patrně pomalejší na méně výkonných počítačích apod.), a nepochybně některé konkrétní technologie podporuje hůře než Visual Studio (např. JavaScriptový vývoj), ale z pohledu použitelnosti u mě Eclipse vítězí v každém ohledu – má daleko lepší textový editor, projektový systém je lépe navržený a mezi různými typy projektů konzistentní, dlouho trvající akce běží v jen zdánlivě modálním dialogu (se základním GUI lze stále interagovat) a mají i sebe vždycky velké červené “stop” a podobně. Ve výsledku je tak možné, že v Eclipse ztrácím milisekundy kvůli pomalé Javě, ale celková práce s tím GUI mi šetří sekundy až minuty a hlavně nervy. Obráceně řečeno, poté, co si člověk zvykne na komfort jiných IDE (neplatí jen pro Eclipse, ale třeba i pro IDEU a další), se jen těžko smiřuje s tím, jak je Visual Studio základní a jak neefektivně se s ním v obecné rovině pracuje.
Abych nezůstal jen u obecné kritiky, níže najdete celou řadu konkrétních výtek, rozdělených do tří hlavních oblastí. Začnu editorem.
1) Editor je příliš hloupý
Tady znovu zopakuji, že mi nejde o podporu konkrétního jazyka, tj. např. jak Visual Studio rozumí C#, jak umí dělat rename refactoring a podobné věci. K tomu v zásadě nemám výhrad (addony typu ReSharper dokáží tyto věci ještě zlepšit, ale už je to z mého pohledu jen rozdíl mezi dobrým a ještě lepším). Jde mi o základní vlastnosti editoru, např. toto všechno ve Visual Studiu chybí:
- Neexistuje příkaz na duplikování řádků (hodí se často při editování XML, vytváření unit testů, přidávání akcí do controllerů a v řadě dalších případů). Copy/paste má nevýhodu, že je na více klávesových zkratek, a navíc ovlivní clipboard.
- Neexistuje příkaz pro reindentaci řádků (Visual Studio je umí pouze přeformátovat, což může zasáhnout i do části řádků za úvodními bílými znaky a může být nežádoucí).
- Neexistuje příkaz pro přesunutí řádků.
- Copy/paste řádků kódu do jiné úrovně odsazení neopraví odsazení řádků automaticky (příkaz reindent neexistuje, viz výše).
- Myslel jsem si, že neexistuje ani příkaz pro smazání řádku(ů), ale ten tam je. Zkratka je však poměrně obskurní (Ctrl+Shift+L) a většina lidí tak používá Ctrl+X, což ovšem dělá něco trochu jiného (přemaže clipboard).
- Ctrl+click není ve Visual Studiu standardní způsob navigace, přitom nejen mně připadá velmi efektivní (já bych ho skoro neváhal označit za nejefektivnější možný, ale to byste mi nadávali do myšařů).
- Neexistuje příkaz pro návrat na místo poslední editace.
- Částečně s editorem souvisí taky to, že ve Visual Studiu není rozhodně pravidlem, aby pro soubor bylo naimplementované “outline view”, tj. přehled jeho struktury (existuje např. pro C#, neexistuje pro XML, HTML a další).
To byly obecné věci, plus se k tomu přidávají maličkosti v editorech konkrétních jazyků, jakože např. když v HTML editoru napíšu “a hr”, nechám si z IntelliSense doplnit “href”, tak mi zůstane kurzor blikat těsně za tím a nevloží se rovnítko a uvozovky, do kterých bych hned mohl začít psát.
Můžete namítat, že výše uvedené věci řeší pluginy nebo že jsem u některých věcí moc puntičkář, ale říkám vám, jak si jednou na komfort inteligentního editování zvyknete, není cesty zpět. A IDE, kteří mnozí považují za nejlepší na světě, by takovéto základy ve své jedenácté verzi IMO jednoznačně mělo zvládat.
2) Projektový systém je divný
Nemůžu říct vyloženě špatný, protože každý má svá pro a proti. Nicméně tady jsou věci, které vnímám jako problematické nebo minimálně s potenciálem být problematické:
- Visual Studio má dva různé druhy projektů – ten standardní je reprezentovaný souborem na disku (např. *.csproj v případě C#) a je charakteristický tím, že v Solution Exploreru ukáže jen ty soubory a položky, které jsou explicitně vyjmenovány. Druhý druh projektu naopak žádný projektový soubor nemá a reflektuje souborový systém v určité složce – Microsoft tomu říká “Web Site”, ačkoliv využití může být i mimo tuto oblast. Mít dva různé druhy projektů je naprosto zbytečné a určitý chaos se ve Visual Studiu ani nesnažili moc zamaskovat – např. jen konfigurace různých projektů probíhá minimálně ve třech různých rozhraních (někdy to je záložka v hlavní oblasti, jindy postranní panel Properties, někdy modální okno apod.).
- Některé projektové změny neukládá Visual Studio na disk hned, ale až po nějaké explicitní akci (Save, Build apod.) Stalo se nám párkrát, že nám např. v commitu chyběl aktualizovaný projektový soubor – ano, byla to naše chyba, ale Visual Studio k ní zbytečně dává příležitost.
- Moc ve Visual Studiu nerozumím konceptu knihoven kódu, pokud tam tedy takový koncept univerzálně je. Např. .NET knihovny se vám do vašeho vlastního zdrojového kódu nemotají (nejsou součástí různých statických analýz, jsou vynechány z některých navigačních funkcí po lokálním kódu apod.), ale JavaScriptové knihovny, např. jQuery, se vkládají přímo do zdrojáků, nemají ani samostatný typ projektu apod. Zdá se mi to nedomyšlené.
3) Nedostatky v základním GUI
Na závěr pár věcí, které mi vadí v “chrome” Visual Studia:
- Nenašel jsem dobrý způsob, jak rychle maximalizovat a pak zas obnovit tool window (např. máte nějaký delší Output, chcete si ho na chvíli maximalizovat a po pročtení zase vrátit do původního malého okénka). Jde to nějak nasimulovat undockem, dvojklikem a ctrl+dvojklikem, ale není to zdaleka ono.
- Visual Studio nemá konfigurovatelné perspektivy – zná jen pár předdefinovaných stavů, např. “pracuju na kódu” a “debuguju”, které jsou pevně svázané s tím, co se právě dělá. V Eclipse se můžu v libovolném okamžiku přepnout do jakékoliv konfigurace okének a editorů, takže například uprostřed ladící session můžu přejít do běžného editačního zobrazení, aby se mi případné úpravy dělaly pohodlněji, a pak se zase přepnout do debug perspektivy a pokračovat dál.
- Dialog nastavení (Options) stále nemá filtrování / vyhledávání. Aspoň že už jde na konkrétní stránku skočit přímo z pole Quick Launch.
- U všech dlouhotrvajících operací by mělo být pravidlem, že jdou stopnout. Visual Studio, zdá se, pro to nemá standardní GUI a některé věci jsem nenašel, jak stopnout – např. analýzu kódu nad celým solution. Nevím, jestli to úplně přímo souvisí, ale Visual Studio je IDE, kde celkové zamrznutí GUI pozoruji výrazně častěji než v Eclipse nebo v IDEE.
Závěrem
Možná bych mohl hledat další věci, ale myslím, že to pro demonstraci stačilo. Na tomto místě by bylo dobré zopakovat, že cílem tohoto článku skutečně byla jen a pouze kritika, pokud možno obsáhlá a konkrétní. Na Visual Studiu lze samozřejmě najít mnoho pozitiv, řada MS technologií je skvělých a i jejich podpora ve Visual Studiu je dobrá až excelentní. Přesto, co se týče základů a obecné efektivity, nemůžu si pomoct, Visual Studio mi připadá jako příliš základní, neefektivní a nedomyšlené. Byl bych hrozně rád, kdyby se u dvanácté verze konečně někdo v Microsoftu zamyslel a hříchy minulosti vyřešil.
Pokud máte vlastní připomínky, napište je Jardovi do jeho formuláře.
Ad modální/nemodální dialogy…
To je otázka. Dělám jak v Eclipse, tak i ve VS a nemodální dialogy v Eclipse mě neskutečně vytáčejí. Kliknu někam jinam a dialog se mi ztratí, pak ho musím hledat mezi hromadou jiných otevřených oken.
Ad Neexistuje příkaz pro reindentaci řádků…
Co tím myslíš? Ctrl+K,Ctrl+D je to přeformátování? A co TAB a Shift+TAB?
Když zkopíruju řádek, tak se mi pastne odsazený automaticky přesně tak, jak má.
Ad a hr…
Zkusil jsi “a + TAB”? ;-)
Ad různé druhy projektů…
Myslím, že zčásti je to tam asi historicky, ale hlavně to ničemu nepřekáží. Začátečníka to třeba mate, ale pak už si zvykne používat to svoje. Mně se zase třeba nikdy nelíbila práce s projekty v Eclipse. Například nutnost používat Workspace je neskutečně otravná. Working sets jsou například skvělá fíčura, která však vyplývá právě z toho jednotného Workspace, kdy se ti všechny projekty cpou do navigace a nezbývá ti, než je nějak eliminovat. Oproti tomu Solution ve VS a jeho podřízené projekty skýtají mnohem větší variabilitu při práci.
Ano, perspektivy jsou super věc a přiznám se, že jsem si na to zvykl. Ale co jsem tak vypozoroval ve VS 2012, už i MS na tom trošku začíná pracovat. Tak snad ve verzi VS 2018 je nabídne. :-)
Jinak má VS samozřejmě své mouchy, které mě vytáčejí, ale na spoustě z nich už ve VS 2012 zapracovali. Třeba je skvělý, že přidali podporu intelli sense i do Eval/Bind. Na druhou stranu – každé IDE má své mouchy. Mně se například absolutně nelíbí IDEA. Je to líné až hrůza a nevzhledné. Pracuje se mi v tom špatně, takže vždycky pro Javu sáhnu raději po Eclipse, napříč všem výhradám, které k němu mám.
Dík za komentář, zvlášť od někoho, kdo může porovnávat. K jednotlivým bodům:
Ad ne/modální dialogy: nevím, jestli mluvíme o tom samém, ale když kliknu jinam, dialog nemizí, zůstává na svém místě.
Ad editace: reindentací myslím Eclipsí Ctrl+I, odsazování při kopírování funguje u jednoho řádku, ale ne u více, a ano, Visual Studio code snippets má, což nijak nesouvisí s tím, že chování po “a hr” je trochu hloupé.
Ad projekty: dobrá poznámka, tady souhlasím, že na úrovni solution jakožto množiny projektů je asi VS lepší, koncept workspaců v Eclipsu je skutečně trochu podivný a nepraktický. Sám s tím nebojuji kvůli povaze projektů, na kterých v Eclipse dělám (nemám potřebu přepínat mezi mnoha “solutiony”, maximálně několika a tam není problém si pozavírat a pootvírat projekty, které mezi sebou mají vazby), ale uznávám, není to ideálka. Když ale přijde na projekty samotné, zdá se mi koncept Eclipse a tamních source paths, build paths, konzistentního konfiguračního rozhraní apod. lepší.
Ad IDEA: z pohledu na celkového UI / UX bych dal taky toto IDE až na třetí místo, “bohužel” mají pro některé technologie tak dobrou podporu (např. Node.js), že se občas vyplatí IDEU používat.
Borku, Code Analysis nad celou solution je normální build a zastavíš ho úplně stejně – pomocí Ctrl+Break. :) Tohle navíc ve VS 2012 běží v background threadu a nemá vliv na to, že by GUI nějak zamrzalo.
Aha, dík za info, z UI jsem to nepochytil.
Já na to mám asi 8 A4 seznam všech zkratek ze studia, sice je to z vs 2008, ale moc se to nemění. http://nerdfortress.s3.amazonaws.com/visual-studio-2008-keyboard-shortcuts.html
Ještě krátká reakce na nedostatky editoru se mi rozrostla do blospotu http://rarous.net/weblog/439-coderush-editor-na-steroidech.aspx :)
Já bych řekl, že tohle všechno je o způsobu práce, převážně pracuji ve Visual Studiu a práce je rychlá, když pak přejdu do eclipse tak mě štvou všechny věci které jsou jinak, protože mozek navyklý na jiný systém práce se s tím špatně vyrovnává. Každé prostředí prostě vede uživatele k jinému způsobu práce, a pak má každé jiné nedostatky, když se lyší od toho na co jsme zvyklí.
Já ve Visual Studiu začínal a naopak na Eclipse jsem si musel “zvykat”. Ale bylo to snadné, protože na dobré věci se zvyká snadno :)
Na přesun řádku používám MoveLine Extension. Zde je ke stažení zdarma: http://visualstudiogallery.msdn.microsoft.com/b3ee08dc-a28f-4aec-9efa-69215ab5ee52
Článek je hodně tendenční, proto pár odpovědí:
„Neexistuje příkaz na duplikování řádků“
VS je o jednoduchosti. Za 15 let programování mě ani nepadalo takovou funkci vůbec potřebovat. Když programátor potřebuje mít v kódu dva řádky stejné, tak bych nejdříve hledal, co dělá špatně. Smyslem efektivního programování je nedělat věci opakovaně. Pokud už to nutně fakt potřebuji, pak mi stačí jednoduché a známe Ctrl+C+V i za cenu toho, že to ovlivní clipboard, protože na správu clipboardu mám předse lepší nástroje než IDE a to například Clipboarder, který funguje nezávisle na konkrétní aplikaci.
„Neexistuje příkaz pro reindentaci řádků (VS umí pouze přeformátovat, což může zasáhnout i do části řádků za úvodními bílými znaky a může být nežádoucí).“
Existuje formátování a ne, do bílých znaků zasáhnout opravdu nemůže, ledaže zase programátor dělá něco špatně.
„Neexistuje příkaz pro přesunutí řádků.“
Existuje: označit jakýkoliv text myší (řádek i více) a potáhnout myší…
„Copy/paste řádků kódu do jiné úrovně odsazení neopraví odsazení řádků automaticky“
Toto VS dělá pokud je kopírovaný kód bez chyby, jinak to udělá po ukončení bloku, například po zadání “}” nebo “;”. Přinejhorším máme Ctrl+K+F.
„Myslel jsem si, že neexistuje ani příkaz pro smazání řádku(ů), ale ten tam je. Zkratka je však poměrně obskurní (Ctrl+Shift+L) a většina lidí tak používá Ctrl+X, což ovšem dělá něco trochu jiného (přemaže clipboard).“
Všechny Shortcuty jsou ve VS nastavitelné. Jako jedno z mála vývojových IDE vůbec, umožňuje i export a import celých klávesnic. Já například ze zvyku používám ještě klávesnici z dob Delphi. V Java editorech tohle prakticky nejde, jelikož umožňují tolik zbytečných módů spuštění aplikací.
„Ctrl+click není ve Visual Studiu standardní způsob navigace, přitom nejen mně připadá velmi efektivní“
Mnohem efektivnější je použít klávesovou zkratku – klávesnice je rychlejší než myš, pokud ale chceš tohle, existuje na to addon.
„Neexistuje příkaz pro návrat na místo poslední editace.“
Existuje něco mnohem mnohem lepšího – bookmarky. Já mám nejraději opět ty, které znám ještě z dob Delphi – viz např. addon “DPack”, který má mnoho dalších vychytávek.
„Částečně s editorem souvisí taky to, že ve Visual Studiu není rozhodně pravidlem, aby pro soubor bylo naimplementované “outline view”, tj. přehled jeho struktury (existuje např. pro C#, neexistuje pro XML, HTML a další).“
Zajímavé, že v mém Visual Studiu toto je. Nebude problém jinde?
„Projektový systém je divný“
Naopak! Projektový systém má přísnou hierarchickou strukturu. Na rozdíl od Javy drží projekt čistý a brání programátorovi dělat bordel, který je v Jave tak běžný. Nový člověk si na něj zvykne lehce, bohužel člověk zkažen bordelem v Javě to má asi těžší.
„Visual Studio má dva různé druhy projektů“
Ne, nemá. Bohužel již není prostor to tady vysvětlovat.
„Některé projektové změny neukládá Visual Studio na disk hned, ale až po nějaké explicitní akci (Save, Build apod.) Stalo se nám párkrát, že nám např. v commitu chyběl aktualizovaný projektový soubor – ano, byla to naše chyba, ale Visual Studio k ní zbytečně dává příležitost.“
Pokud máš správně nastavené CVS/VSS/SVN/whatever, pak k tomu problému nedojde. Pokud používáš CVS mimo VS, pak ano, může k tomu dojít. Ale na ten save se dá zvyknout.
„Moc ve Visual Studiu nerozumím konceptu knihoven kódu, pokud tam tedy takový koncept univerzálně je.“
Ano, koncept tam je a je úplně jednoduchý. .NET máš nainstalovaný v OS, tak proč bys ho měl cpát k aplikaci, nebo ho chtít ještě i zamotat do analýz?! Zbytečné! Kód, který nespravuješ ani nemáš do analýz chtít dostávat. Na co? Aby byly apliakce jako v Jave nepřehledné, zbytečně komplikované a abys s tím zbytečně ztrácel čas? Ale zase … pokud chceš, můžeš si to v Options VS nastavit a VS Ti je tam zahrne. Z těch věcí co píšeš mám ale pocit, že ve VS neprogramuješ ani 3 dny, tak tohle si radši nech na dobu, než zvládneš základy.
„GUI“
To co píšeš o GUI je pravda. Všechno co píšeš ve VS kdysi bylo, bohužel nové VS to nemá, nebo to řeší addony, ani sám nevím, ještě jsem to moc nezkoumal. Snad to ale MS brzo opraví, protože mě tohle taky vadí.
A teď můj závěr:
Z Tvého textu je vidět, že jsi se zaměřil pouze na drobné věci kosmetické, které je vidět v první den práce s novém programu. Neber to prosím osobně, ale přijde mi docela arogantní a pro ostatní čtenáře nebezpečné psát podobný článek o věci, kterou tak málo znáš a nevěnoval si ani špetku námahy zjistit, zda jsou kritizované věci pravdivé.
Neznalý čtenář si na základě Tvého článku může utvořit o věci zcela zcestný názor, který ovlivní jeho další život.
Výhody VS a C# proti IDE pro Javu a jazyku Java jsou v mnohem důležitějších a mocnějších vlastnostech. VS má mnohem lepší a pohodlnější debugger. C# jako jazyk a .NET jako Framework jsou pro nového programátora mnohonásobně rychlěji zvládnutelné než chaos ideček a frameworků v Jave. Java IDEček je asi 50. VS je jedn jedno. V Javě jen několik dnů zabere vybrat si správné IDE a miliardu addonů, které potřebuješ. Čas pro zkoušení je nenahraditelný. VS si nainstaluješ a do pár minut máš první Hello World.
VS funguje. Rozchodit Javu je Java IDE třeba na linuxu je někdy fakt docela porod.
VS má srozumitelnější a jasnější exception descriptions.
C# je vyspělejší a modernější jazyk proti Javě.
V C# neřešíš co která podivná zkratka slova znamená, protože se tam prostě nepoužívají. Názvy objektů a metod jdou přímočařejší a smysluplnější než v Javě.
Ve VS si sedneš a do 5 minut máš okenní aplikaci. V Javě si sedneš a několik dnů se rozhoduješ, jaký okenní balíček se budeš muset zase učit.
Prostě C# je pro lidi, kteří chtějí jednoduše a efektivně produkovat. Java je pro lidi, kteří se naučili dělat na VŠ zbytečné složitosti.
V Jave děláš aplikaci 7 dní. Ve VS uděláš totéž za 1 den.
Já jen doufám, že se MS nebude držet Tvých rad a proseb, protože jsou opravdu špatné, jelikož jsou ovlivněny zastaralými a nesprávnými principy z Javy.
Tak příspěvek od hesonica mě fakt velmi pobavil. Je docela zajímavé, že nás C#pisti ještě totálně nepřeválcovali, když je jejich produktivita 7:1 … to by se přeci mělo ekonomicky projevit ne? :D
To je tezky pane Novotny. Nekolik duvodu, proc tomu tak asi nikdy nebude:
Zvyk je zelezna kosile. Java byla o 7 let drive nez .NET. To je v IT tak dlouha doba, jako dve generace. Takze kdyz si mnozstvi lidi zvyklo na Javu, tezko to pujde zmenit. Hlavne kdyz na to jedou banky a ostatni megakorporace, ktere neresi problem s financnimi vydeji na IT.
Java je zdanlive zadarmo, kdezto C# je technologie Microsoftu, ktery je zdanlive drahy. (kolik manazeru si dovede spocitat opak? Ti co si to dovedou, na MS jedou…)
Skoly maji Javu zadarmo, tak to uci. Je to open source, tak to uci uz jen z principu. Kdyz Vam neco ve skole vtloukaji a vy tomu venujete roky, tak co pak? Prejdete k necemu jinemu? A jaky duvod mate?
Tech 7 let naskoku Javy vybudovalo kolem Javy spoustu programatoru. Javistu je vetsina a to se jeste alespon 10 let nezmeni. Pak prijdou vyspelejsi jazyky nez Java i C# a vse bude beztak jinak. K dnesnemu dni tipuji, ze Javistu je v pomeru k C# 7:1, ale je to jen muj odhad, podlozen jen odhadem dle google trends, takze se mohu mylit. No a tak ci tak 7 trabantu bude stejne rychlejsich pri prevezou nakladu nez 1 mercedes. :)
Kdyz uz mate systemy zavedene v Jave a lidi skolene v Jave, proc byste to menili do .NETu? Kdyz uz mate Javu leta, proc byste treba jen nove veci vyvijeli v .NETu a z pohledu manazera se museli starat o dva druhy programatoru? To uz nema moc cenu, protoze jde o riziko.
Dulezite je si ovsem vsimnout, ze jsem psal zejmena o novych lidech – zacatecnicich. Nepsal jsem o lidech, kteri jak v Jave tak v .NETu pracuji 6 a vice let. Ta produktivita je pak stejna, protoze kazdy zna sve IDE, kazdy zna svuj jazyk a kazdy zna sve knihovny. Pak uz neni co resit a je jedno, zda jste v Jave nebo .NETu.
U novych firem je to ale znacny rozdil. Vim to, protoze jsem v zivote jiz 3x stavel tym, ktery se rozhodoval o tom, jakou platformu zvoli. A vzdy to bylo hodne pracne rozhodovani a zadna varianta neni idealni zejmena kvuli mnohym platformam, ktere velka firma a slozity produkt musi podporovat. Dnes prakticky vsechny … od Linuxu pres Windows az po Android a iOS. .NET i Java ma sve vyhody i sve nevyhody. Java je vice multiplatformni nez .NET. A je na Linuxu. .NET tam neni. resp. Mono, nebo Xamarin to nevytrhnou. V tom je Java opravdu dobra. Pro .NET zase hraje opravdu prijemnejsi jazyk, citelnejsi, jednodussi, cisteji. A jelikoz znam 3 IDE z Javy, 2 IDE z Pythonu, nekolik Linuxu a Windows systemu od osobnich az po embeded a mobile, a IDE jak pro Mono tak Xamarin tak VS, tak si myslim, ze mam docela kvalifikaci tyto veci srovnavat.
Ale jinak to o cem pisete se ekonomicky samozrejme projevuje. I kdyz asi ne tak jako cekate. :) Vyvoj aplikaci v jave je 100x drazsi nez vyvoj aplikaci v C# nejen tim, ze to dlouho trva, ale i tim, ze Javista bere prumerne 100+ a C#pista 40+. Dnes shanim lidi jak pro C# tak pro Javu. Dnes v Jave nikdo pod 100t nejde. Dnes jsem mluvil s jednim vyvojarem a ten se ptal, ze proc se divim. Smal se, ze s tak hroznym jazykem si prece nebude nicit nervy za mene penez.
Souhlasim s nim. .NET ma lepsi, modernejsi a hezci technologie, treba Silverlight, bohuzel nejsou a asi ani nebudou tak rozsirene.
Hold v IT vic nez kde jinde plati, ze pokud nejste prvni a nejlepe zadara, mate docela smulu. Historie ukazala tisic krat, ze vitezstvi je jen zridka o lepsi technologii.
Mě na Vašem minulé příspěvky pobavilo, že jste nazval článek tendenční, přičemž z Vaší argumentace tendenčnost jen pršela :)
Teď vážně – nechci se pouštět do žádných flamů a sám přiznávám, že jsem taky tendenční – většina z nás je, protože ne všem se podaří mít tak velký rozhled, aby skutečně objektivní být mohli.
S řadou věcí ve Vašem druhém příspěvku se ztotožňuji – C# jako jazyk je dál než Java, to bezpochyby – vždyť se taky mohli poučit z jejích chyb a navíc jazyk vznikal pod daleko větší kontrolou. Tedy by bylo spíš s podivem, kdyby lepší jazyk nevzniknul.
Jak sám píšete, historie ukázala tisíc krát, že vítězství není vždy o lepší technologii a proto si taky myslím, že M$ teď čeká nejhorší období ve své historii – zvlášť pokud si bude libovat v takové uzavřenosti a cenové politice jako doposud.
S tím bych své příspěvky asi ukončil – jsem rád, že jsem před lety M$ platformu opustil a už se tam nebudu vracet. Potenciál a budoucnost vidím totiž někde jinde.
Za pár let se diskusím C# nebo Java určitě zasmějeme.
Uff, nepřečetl jsem si to po sobě: “Mě na Vašem minulém příspěvku pobavilo …”
Reagovat na fanboye je v jadru nevdecne, ale mam nejakou laskovnou sobotu.
Bez ohledu na to, zda je C# lepsi jazyk nez Java, tak je to +- to same a tezko prinese jedno radikalni narust produktivity nad druhym. A ostatne ani Java/C# neni na vrcholu potravniho retezce, jak by nam jiste objasnili trebas scaliste a fandove F#.
A duvod, proc .NET vetsinou prohrava a prohravat v dohledne budoucnosti bude? Nejen setrvacnost a lenivost programatoru nebo rozdil v platech. Podle mne je hlavni duvod nemoznost aplikace v nem nekam deployovat. Jediny OS na serverech, ktery se dnes uvazuje pro nove projekty je, mimo ciste MS-navazanych firem, Linux. Neni to jenom zalezitost licenci – kdo trebas videl, jak devopsakum vznikaji nove instance serveru pod rukama a Chef na ne serviruje vse potrebne, tak zacne tusit, proc.
VS funguje. Rozchodit Javu je Java IDE třeba na linuxu je někdy fakt docela porod.
Eclipse na Linuxu (ale i MacOS) rozchodím stejně rychle jako na Windows – dokonce se ani neinstaluje, jen se stáhne, rozbalí, vybere se workspace pro projekty a je hotovo. S VS si s tou jednoduchostí na tom Linuxu (ani na MacOS, ale i na Windows) nejsem tak jistý. Párkrát už jsem to provozoval a než se to jen nainstaluje, tak mám stažený a rozbalený Eclipse a hotový první Hello World projekt.
C# je vyspělejší a modernější jazyk proti Javě.
Souhlas. Taky měli odkud brát nápady a co rozvíjet. Předtím byla zase Java mnohem vyspělejší než cokoliv, co nabízel Microsoft. Za pár let bude jak C# tak i Java totálně obsolete a budou třeba vévodit nějaké funkcionální jazyky.
V C# neřešíš co která podivná zkratka slova znamená, protože se tam prostě nepoužívají. Názvy objektů a metod jdou přímočařejší a smysluplnější než v Javě.
Nevím, o jaké podivné zkratky jde, ale pokud jde o čistotu a jednoznačnost, tak Java vede. Například se tam rozhraní implementují a třídy rozšiřují, zatímco v C# existuje jen dvoutečková konvence a rozhraní se proto musí rozlišovat Ičkem v názvu, aby bylo poznat, co to vlastně je.
Názvy objektů tam jsou přesně takové, jaké si je vývojáři udělají.
Ve VS si sedneš a do 5 minut máš okenní aplikaci. V Javě si sedneš a několik dnů se rozhoduješ, jaký okenní balíček se budeš muset zase učit.
Sice okenní aplikace nedělám, ale viděl jsem, jak kamarád za pár minut stáhl Keplera a naklikal v něm plnohodnotnou. Eclipse 4 RCP aplikaci.
Rozhodovat a učit se musí i .NET vývojář – Silverlight, WPF, Windows Forms…? Pár aplikací jsem v tom dělal, takže vím, že nejde k tomu sednout a z voleje tam něco vyvinout.
Prostě C# je pro lidi, kteří chtějí jednoduše a efektivně produkovat. Java je pro lidi, kteří se naučili dělat na VŠ zbytečné složitosti.
Nikoliv. Java jen poskytuje větší možnosti. Není tak rigidní a dává lidem na výběr. Navíc v ní lze plnohodnotně vyvíjet zadarmo a existují pro ní mraky platforem, které jsou také zadarmo. A pokud se mi nelíbí Java jako jazyk, můžu pod JVM použít nějaký jiný jazyk, jako třeba Scala, Groovy nebo Clojure. Zatímco v .NET mám na výběr mezi C# a VB.NET? :-)
V Jave děláš aplikaci 7 dní. Ve VS uděláš totéž za 1 den.
Blábol nehodný komentování.
Celé mi to připomíná staré dobré flamy na téma Linux vs. Windows, framework A vs. framework B, jazyk A vs. jazyk B, které ajťáci vedou už minimálně 15 let. Profesionál se pozná podle toho, že má nadhled a dokáže v každé platformě rozpoznat a využít to dobré, co právě potřebuje.
Dík za toho fanboye. Pořádně jste nečetl, když jsem psal, že jsem měl potřebu rozhodnout, které prostředí se použije a zvažoval jsem zcela zodpovědně a bez zaujatosti všechny. A žádná „fun“ to nebyla a není, protože každé prostředí má svá silná pro a silná proti.
Ten radikální nárust produktivity to není fantasie nebo pocit. To se exaktně měří. Posadíte několik programátorů k Jave a dáte jim 50 úkolů. Pak ty samé postavíte k C# a dáte jim stejné úkoly. PC jsou čisté. Nic na nich není. Ani OS. Programátoři jsou rozděleni na skupiny, kdy máte lidi z Javy, lidi ze C# lidi, kteří neznají ani jedno.
Pak se to změří. Tak a teď mi říkejte fanboy…
A ten důvod deployování co popisujete, ten plyne z toho letitého náskoku Javy před .NETem, tj. ze setrvačnosti. O nic jiného nejde.
Ať jsem dělal pro banky, nebo automotive, nebo vládu nebo malé firmy, nikdy objektivně nešlo o technologické důvody. Vždy jen o „politické“.
Tak prima, ted link na tu studii.
(Mimochodem – co by to rikalo o svete? Nic. Protoze vyvojar prijde k cistemu pocitaci jednou za rok. Dva dobri vyvojari s nastavenym environmentem budou v Jave i C# obdobne vykoni.)
Takze mohu ziskat za par minut prakticky zadarmo par desitek virtualnich masin v pozadovane konfiguraci, s pozadovanymi zavislostmi a zacit na ne deployovat? (Mimochodem – situace kdy developper chce ciste prostredi na deployment je radove castejsi nez ze si chce nainstalovat a vyladit svou workstation).
Mimochodem – reci o radikalnim narustu efektivity slysim uz leta. Nekdy je to od .NETaru, nekdy je to od RoR evangelistu…
Zatim mi prijde, ze nejvyssi zlepseni prisla s nesouvisejicimi vecmi jako “vyvojari spolu casto mluvi”, “test na hodne veci, ale klidne ne na vsecho”, “delame si reviews” nebo “o vikendu se neprogramuje”.
(Tim netvrdim, ze .NET neni lepsi nebo RoR neni lepsi pro mnohe projekty.)
Satai, studie je má interní. Každá firma by si měla udělat svou.
Lokutus, ono právě ty široké možnosti Javy jsou právě to, co jí zabijí. Protože když mohu udělat jednu věc 15 způsoby, tak strávím 15x tolik času zjišťováním toho, co je nejlepší. A když to zjistím, objeví se další možnost, která mi řekne, že jsem to udělal blbě a mohu začít od znovu, nebo se smířit s tím, že je to blbě. Nebo si nalhávat, že je to dobře, protože to tak dělá většina.
Díkybohu pak za tu „rigidnost“ Visual Studia, kde na jednu potřebu mám jedno zpravidla velice jednoduché řešení.
Tyto neduhy Javy docela výstižně vylíčil i Jiří Hradil: http://www.youtube.com/watch?v=eOdSO1sk3mA – již prvních 20 minut mluví samo za sebe …
Tímto se s tímto článkem loučím a přeji všem novým týmům snadnější rozhodování.
Prvni odstavec je krasny – protoze nekdo neprozkoumal patnact moznosti, tak nenasel optimalni. A ta jeho je tudiz BLBE. A to je argument pro to, zit ve svete, kde je jedina cesta.
Trochu primerenosti. Vic moznosti k ruce se hodi mit. Ale aby bylo reseni spravne, neni trebas prozkoumat vsechny. Staci najit jednu, ktera je dostatecne dobra a pak ji aplikovat v podobnych situacich. A obcas si overit, zda neni neco lepsiho na dosah. Reseni nebudou optimalni, ale rozhodovani muze zustat flexibilni, ne nadiktovane z MS. Je s tim spojeny overhead, ale na patnactinasobny. Vyzaduje to pouziti hlavy, ale to uz tak nejak k povolani patri.
To je jako říci, že dopravní prostředek v podobě auta s jednou verzí motoru je to nejlepší pro všechny lidi. Že variabilita trhu, která umožňuje jednomu člověku jet škodovkou, druhému zase řídit BMW, třetímu jet na kole, čtvrtému na skůtru, zatímco pátý pojede autobusem je špatná, protože rozhodováním čím vlastně pojedu strávím zbytečně moc času. A přitom tkví podstata hlavně v tom, že si najdu, co potřebuju.
Například. Pro webový vývoj existuje hned několik komponentových sad, ze kterých my si vybrali primefaces, které používáme na všechny projekty. Vyhovují nejlépe našim aktuálním požadavkům a neřešíme, jestli jiný faces nejsou o chlup lepší. V .NETu tuhle možnost nemám už jen proto, že pro tak rigidní prostředí, závislém na politických rozhodnutích vedení, skoro nikdo nevyvíjí.
http://blog.primefaces.org/?p=2866
Když už upozorňujete na přiměřenost mě, měli byste jí sami nejdříve ctít.
Extrémně přeháníte. VS resp. .NET není tak rigidní aby někomu bránil použít jiné řešení.
Ve VS jen není důvod hledat psát a heldat každý rok jiná řešení, když již v základu mám zpravidla vše a zpravidla jednoduché.
Co si tak ještě pamatuji, tak třeba právě malý výběr komponent byl jednou z mnoha věcí, co mě při vývoji v .NETu trápily. Základ zpravidla nestačí. Když si k tomu připočtu špatnou pověst celé platformy a nejistotu o její budoucnost, kterou Microsoft svou politikou vyvolává, raději zůstanu u Javy.
Budme konkretnejsi.
Co ma jako default MS a mohu to pouzit misto Spocku? V zakladu a jednoduche.
Spock neznám. Ale z toho co se píše na webu “Spock is a testing and specification framework” můžu říct, že obě funkce jak testing tak dokumentování je integrováno přímo v .NETu a VS. Takže odpověď je nic víc než to, co je v defaultu. Navíc to můžete použít v každé své .NETové aplikaci i jako integrovanou součást aplikace.
Dále se tam píše “What makes it stand out from the crowd is its beautiful and highly expressive specification language” – což u .NETU a jeho různých nativních jazyků, kde si každý programátor může psát ve svém oblíbeném ani není potřeba zdůrazňovat, že.
A pro .NET jsou samozřejme stejně jako pro Javu různé varianty “NUnit” frameworků…
Takze ja zoufalec si musim vybrat mezi defaultem a NUnitem? Propadam panice, nejsem schopen zacit programovat.
Ale asi nechapete, co Spock je. Ve zkratce potrebuji ctyri veci
– unittesty
– BDD
– mockovani
– parametrizovane testy (a ne tak, jak je dela xUnit, protoze to se pouzivat neda)
Spock je navic celkem elegantni zabaleni do samodokumentujicich se testu (vazne doporucuji podivat se na priklady, je to skutecne poucne i pokud clovek nechce Spock pouzit).
Kdyz jsem se na to pred casem dival, tak defaultni mockovani potrebuje jakesi VS Ultimate, ktere stoji dve ledviny a rohovku? To mi prislo jako trochu neumerne na tak zakladni pozadavek. Takze bych nakonec stejne sel a pro naprosto elementarni zalezitosti (je dnes nejaky beznejsi pozadavek, s vyjimkou zakladni knihovny s kolekcemi, IO a podobnymi vecmi?) googlil a googlil.
Satai, váš poslední příspěvek zní jak od hysterické ženské, co chlapovi vkládá do úst slova, které nevyslovil.
Když už víte, že je .NET k ničemu, tak proč se ptáte? …
Výsledek je jednouchý – zůstaňte u Javy…
Ja netvrdim, ze .NET je k nicemu. To ocividne neni pravda. Jiste jsou projekty, pro ktere se hodi (ale asi jich je mimo Win desktopovych aplikaci relativne malo, uz jenom protoze se neda vysledek nasadit na Linuxu). C# ma par prima vlastnosti (ale take to neni nic, co by bylo radikalne jineho nez Java). A trebas F# je hodne zajimavy pocin.
Cim jsem si ale celkem jisty je, ze to neni nej vec po krajenem chlebu a ze vase argumentace miri spatnym smerem.
Můj názor: Java je opravdu zastaralá.
Krom toho, že má proti VS opravdu zastaralá IDE, má zastaralé i Plugin Markety. Nemluvě o tom, že když chcete do Javy nějaký plugin najít tak zjistíte, že to již léta nikdo neupravuje a plugin je mrtvý. To platí i o většině knihoven pro Javu. Je jen pár, u kterých se na životnost a udržitelnost můžete spolehnout a modlit se, aby autoři vydrželi, nebo aby je Oracle převzal.
Naštěstí alespoň NetBeans IDE jde cestou zjednodušování a co verze to z těch mnoha zbytečností co to umělo půlku nadobro vymažou. Eclipse je na tom jinak. To má spoustu možností v menu a nastaveních, které nikdo nepotřebuje a často se duplikují nebo mezi sebou bijí.
Jenomže Eclipse alespoň funguje, kdežto již po stažení NetBenas zjistíte, že jim snad nikdy nefunguje 75% tutoriálů a samplů co k tomu dodávají. Takže když začít s Javou, tak pro jistotu stáhnou nejméně dvě IDE a v každém dělat něco až do doby, než se naučíte věci obcházet.
Pro Eclipse zase nehraje to, že je nepodporuje Oracle tak jako NetBeans a proto NetBeans jsou jako VS a Eclipse jako Delphi. Delphi jak víme upadlo když MS přišel s licencováním dotnetu a s podmínkou, že jiní developeři musí čekat rok od uvedení .NETu než mohou implementovat novinky jazyka do svých IDE. U Javy Oracle zatím něco takového nepožaduje, ale NetBenas má novinky vždy dříve než Eclipse, čimž funkče lepší Eclipse zabíjí.
Takže někdy je lepší NetBeans někdy Eclipse, ale oba jsou proti VS pozadu.
Nejhorší na Javě je ale samotný kód a syntaxe.
Java nemá například eventy. Každý z miliardy javovských frameworků si to řeší po svém a pokaždé jinak, ale jednu věc mají společnou – pokaždé jde o hromadu kódu.
Když chcete vytvořit čistou třídu poděděnou z Object a implementovat ji eventy, tak na to potřebujete haldy kódu. Zlatej C#, který eventy má a vaše třidy proto budou mít o 90% kódu méně.
U volaných eventů je to pak to samé. V C# napíšete += stisknete TAB a VS vám vygeneruje kód metody pro event. V Javě nejprve musíte nastudovat dokumentaci abyste zjistili jaké atributy event se sebou nese no a pak si jej můžete napsat … jak jinak ručně.
Další věc je generování kódu s parametry metod. (to už jsme pryč od eventů) Ve VS stisknete CTRL+SHIFT a vidíte jak se který parametr jmenuje, jeho popis, typ i example jak ho použít. V Javě nic takového nemáte. Navíc musíte stát na začátku argumentů hned za ‚(‘ a jste rádi, když Vám Java vygeneruje arg0, arg1, arg2. A pak hurá do studia dokumentace a zase psát vše ručně.
Ta dokumentace v Javě je taky bída. Kdo neviděl inline (ne online, ale inline – což je víc než onine!!!) dokumentaci v .NETu a neporovnal ji s Javou nebude chápat rozdíly.
Bohužel i když je C# vyspělejší a VS lepší, Java je prostě všude a .NET nikde. Proto se obávám, že se Javy nezbavíme.
A 4 perličky nakonec, které dokazují, že Java opravdu není efektivní jazyk a zastaralá platforma:
Microsoft, jelikož musí používat i Javu vyzýval kdysi dávno SUN aby implementoval eventy. Nějaký chytrák ze SUNu tehdy rozhodl, že není potřeba, že se to dá obejít tím, že si je programátoři ošetřil již ručně v nějakém frameworku. Je to tak prý OOP čistější. LOL.
Java bude „již“ ve verzi 8, která vyjde teď v 2014 implementovat Lambda funkce (tzv. anonymní metody). Javisté jásají a pletou si to s eventy. Takže bude zase legrace. Mimochodem. Lambda funkce jsou známé již víc než 50 let a C# je má taky již snad od verze 2.0.
Google přešel loni z čisté Javy a NetBeans na své Android Studio a chystá svůj klon Javy pro Android.
Další věc, kterou bude mít nová Java 8 je rozšíření funkcí pro podporu Date a Time. Tj. něco, co má .NET již od verze 0.0.beta :-/
Tak asi tolik k Javě a to jsou jen příklady, ani zdaleka ne všechno.
A podle mě, když někdo tvrdí, že dlouholetý programátor v Javě je stejně efektivní jako programátor v C# tak by měl přihlédnout k výše vyjmenovanému.
Jak říkám, Java je všude a co je všude s tím se těžko soupeří, i když je to špatné. :-/
Ale Java možná dopadne jako MS. Dnes je Java monopol a je zadarmo. Proto nemá moc důvodů k inovaci a sebereflexi. Teď, když Google vešel i do této oblasti, tak Oracle rozseká jako to udělal s MS na mobilním poli. Navíc možná i MS přitlačí na pilu a C# nabude na síle ještě vice a to tím, že MS začal ohlašovat a testovat Windows ZDARMA. Po vzoru Apple s iOS z roku 2013 samozřejmě. Pokud by se to stalo trendem a nakonec by byly všechny verze Windows zdarma, pak by výhoda Javy, že běží na Linuxu přestala být výhodou a MS by mohl znovu dobít „internet věcí“ a vrátit se na výsluní.
Nebo to donutí Javu ten jazyk konečně modernizovat, zefektivnit a přestat zarputile odmítat dobré věci.
Tak či onak bude to válka a bude to legrace.
Eclipse je čistě modulární platforma, na které se staví řada jiných aplikací, takže opravdu nechápu, v čem by měla být ta zasataralost oproti rigidnímu a těžkopádnému molochu Visual Studiu.
Java jako jazyk je opravdu dost pozadu, na druhou stranu se objevuje spousta funkcionálních jazyků, které mají ještě větší tah na branku než C#.
V čem je ovšem Java based environment světelné roky před čímkoliv od Microsoftu, je podpora třetích stran a cena. Dokud bude stát základní licence na VS či nějaká lepší sada nástrojů přes tisíc dolarů, není šance, že by se .NET jakkoliv rozšířil mimo korporát. A to je esenciální problém. Ne odlišnosti jazyka, ne odlišnosti IDE, ale to, že si mohu během pěti minut stáhnout a rozchodit Eclipse, přidat z marketplace mraky pokročilých tools, kde mám nepřeberný výběr a začít programovat. Implementovat to pak mohu na libovolné z mnoha platforem, které jsou také zdarma. Obavy, že by Java mohla jakkoliv usnout na vavřínech, protože už dávno to není o Java a Oracle. Hranice mezi jazyky a prostředím se smývají, stačí se podívat na GitHub, co je vedoucími tématy a co bude určovat trh v dalších letech.
Popravde jsem myslel, ze Pertruv prispevek byla parodie ;)
Minimalne pro cloveka s IntelliJ, co nad JVM nepise jenom v Jave to tak vypadalo.
Ad win zdarma – Hadanka: cim se lisi core business Apple a MS?
IntelliJ je jen obal nad zastaralým jazykem, i když graficky moderní. Pořád to ale generuje neefektivní kód a tudíž neefektivní způsob vývoje, i když o maličko lepší než jiné Java IDE. Celkové zlepšení ale spíše zanedbatelně. Je to stejné jako použit kulomet a místo nábojů šípy.
Navíc jde o placené IDE, což je pro zde mnohé Java programátory hlavní argument proč je Java tak nejlepší. I když tento argument docela postrádá logiku při pohledu na jejich platy.
Probírat jiné jazyky v IntelliJ je dost offtopic, navíc když kromě snad jen Groovy jsou to hybridní nebo skriptové jazyky, které skoro nikdo nezná tudíž opět končíme u neefektivity vývoje. Kromě Groovy a Ruby nestojí za povšimnutí žádný.
Core business Apple, MS ale i jiných firem, které chtějí přežít, se mění v čase, takže je irelevantní se o tom bavit.
VS není rigidní a těžkopádný o nic víc než Eclipse. Stejně jako Eclipse je modulární a má mnohem lepší podporu pluginů. Navíc mnohem aktuálnějších než Eclipse, které upadá v porovnání s NetBeans. Už ani Java programátorům se nechce pracovat zdarma pro více linuxů a IDEček Dokonce i to vyhledávání pluginů a instalace je snadnější ve VS než ve všech Java IDE dohromady. Ale možná mi řekněte potřebnou nerigidní věc, kterou v Eclipse můžete mít a VS Vám v tom brání…
Obavy že Java usne na vavřínech už nelze mít, jelikož už dávno usnula, což dokazují všichni ti, kdo vyvíjí ty další jazyky nad JVM jako již uvedený Google, případně další Ruby, Groove, …. Na nich je krásně znát a někteří i veřejně přiznávají inspiraci v jazyku C#.
Já mnohé Javisty nechápu. Místo toho aby tlačili na Oracle, ať zmodernizuje Javu, budou raději kopat do každého, kdo projde kolem a poukáže na problém. A prý že VS je rigidní …
Takze parodie ;) Nudna parodie.
Každá konstruktivní diskuze vyžaduje konkrétní argument Satai. Já se samozřejmě mohu mýlit, protože nemohu znát vše, ale pokud já dokážu dát konkrétní konstruktivní argumenty a Vy se dokážete jen smát, obávám se, že se ničeho kloudného nedobereme.
IntelliJ ma Comunity a i Pro stoji zlomek toho, co VS. Community umi v nekterych ohledech (unittestovani…) vic, nez nektere drazsi edice VS.
Goovy (ne Groove) neni zdaleka jediny “serionzni” JVM jazyk. Napadaji mne minimalne jeste Scala, Clojure a Kotlin. Naopak Ruby pro JVM je spis otazka minulosti a dnes ho nikdo neresi.
Vazne rad si poslechnu o variante budoucnosti, kde MS dava serverova Win zdarma.
Instalace pluginu? VS neznam, takze nemohu srovnat. V mem IDE prijdu, zadam do prislusneho chlivku, co hledam, vyberu, zmacknu cudlik. Jedina opruzantni cast je dotaz na restart IDE.
Ad tlaceni Oracle – ze o necem nevis neznamena, ze se to nedeje. A o JVM svete toho ocividne vis prachmalo.
Ze zkusenejsich Javistu ti asi nikdo nerekne, ze Java je uzasny jazyk. Proste vime, kde je dobra, kde ujde, kde stoji za pytel. Neco z toho se zlepsuje, neco nas nuti pouzivat na nektere veci jine jazyky. Vazne je to jinde jinak?
Predstava, ze .NET je zazrak a JVM svet odpad… to je vazne jenom predstava.
K tomu, jak je Eclipse modulární. Tohle je podmnožina aplikací, postavených na Eclipse.
http://en.wikipedia.org/wiki/List_of_Eclipse-based_software
Je to vše možné od IDE, přes různá grafická a modelovací studia až po groupwarové řešení, jako je IBM Notes, ve kterém mimo jiné také dělám, a které zahrnuje jak Designer pro vývoj aplikací, tak i klienta pro přístup k poště, kalendáři, úkolovníku a mnoho vlastních dalších aplikací pro end-usery. To vše díky Eclipse RCP.
Umí tohle vaše Visual Studio?
Já mnohé Javisty nechápu. Místo toho aby tlačili na Oracle, ať zmodernizuje Javu, budou raději kopat do každého, kdo projde kolem a poukáže na problém.
Zatím tu čtu jen vaše kopání do Javy, tak nevím…
A k tomu, co říkají sami Javisté? To je různé, ale co tak slýchám, tak dotnetisté se shodnou, že bez nástrojů jako je Resharper (> € 134) by v tom nedělali.
To Satai: Když někomu jde o cenu víc než o produktivitu, pak i VS má edici zdarma + různé levné možnosti pro studenty, školy, firmy, v MSDN, … Navíc s VS získáváte licence nejen k VS samotnému ale i MS okolí.
VS má unittestování samozřejmě v sobě, jak už bylo řečeno někým v komentářích výše. Nevím proč Javisté z toho unittestingu dělají takové haló, jelikož unittesting není žádná věda a již od dob Delphi, potažmo VS bylo integrováno v těchto nástrojích a vývojáři to berou spíše jako samozřejmost než jako nějakou podivnou magii, kterou by se měli ohánět. Opravdu tomu nerozumím.
Všechny jazyky co jste uvedl, Scala, Kotlin, atd., jsou pořád jen okrajová záležitost možná pro procento lidí. Docela pochybuji o tom, že nějak významně uzmou tržní podíl Jave nebo moderním UML jazykům typu Salesforce. Přeci jenom, vývojáři v Javě se jeví docela rigidně, jak tomu tady kolega Lokutus rád říká. Důkaz je jasně vidět v Google Trends, viz http://www.google.cz/trends/explore#q=/m/091hdj,%20Clojure,%20Kotlin,%20/m/06ff5,%20/m/07sbkfb&cmpt=q
Když bude MS dotlačen trhem, aby dal Win zdarma, tak je prostě dá a najde trhy jinde, třeba posílí služby, stejně jak to udělal Google, Red Hat, HP, Apple, Yahoo a další. Nebo zruší divizi a propustí 20.000 programátorů. My si tady můžeme malovat budoucnost, ale nakonec ji stejně určuje trh.
To Lokutus: Když vidím ten seznam aplikací, které považujete za modulární, resp. říkáte o Eclipse že je modulární systém a ty aplikace běží díky němu a považujete to za nějakou speciální výhodu Eclipse – no to je prostě úsměvné. Zda napíšu např. XMind nad balíčky Eclipse nebo nad balíčky .NETu, ze kterých je VS, nebo nad jakýmikoliv balíčky/frameworky/ekosystémy třetích stran, které jsou jak pro javu tak pro .net, tak to je přeci úplně jedno a nevidím v tom žádnou konkurenční výhodu. Eclipse Framework je prostě jeden z mnoha. To už Firefox a jeho OS má větší význam.
Rozhodně je úsměvné tvrzení, že kvůli tomuhle seznamu appek je podle Vás VS rigidní. :)
Tvrzení o Resharper mi přijde opravdu dětinské a nepodložitelné. :)
Původně článek ale mluvil o VS což souvisí s jazykem a ne s frameworky. Takže bychom měli poukázat na podstatu. To co já mám na VS a .NETu rád je například toto:
public class RedClazz
{
public int Number { set; }
public string Text { get; }
public DateTime WhenExactly { get; set; }
}
To co na Jave nemám rád a to co žádné Java IDE nezachrání je toto:
public class RedClazz {
private int number;
private String text;
private Date whenExactly;
public void setNumber(int aNumber) {
number = aNumber;
}
public String TextProperty() {
return text;
}
public void setWhenExactly(Date aWhenExactly) {
whenExactly = aWhenExactly;
}
public Date WhenExactlyProperty() {
return whenExactly;
}
}
Obě ukázky dělají totéž. Jedna v Jave jedna v C#. I laik vidí rozdíl v eleganci a empiricky dokáže rozeznat co je efektivnější na zápis i čtení.
Jako bonus by bylo, že objekt ze C# vezmu a jedním řádkem ho uložím do XML souboru na disk bez toho, abych na ty třídě přidával další funkční kód. Tj. serializace a deserializace. A je jedno jaký formát použiju … XML, CSV, Binary, JSON, …
Kdybych tady uvedl to, jak šíleně složité je v Jave napsat eventy a že v C# je to na 1 řádek, pak by ta ukázka rozdílů byla ještě efektnější, ale v Javě je to tak složité, že na to ani nemám sílu. A těch rozdílů je více. Např. Linq, Lambda, Serializace, regiony, DateTime, Math, …
A to je podstatný rozdíl o kterém by se mělo mluvit. Ne o unittestech nebo frameworcích třetích stran.
Ja pisu
class RedClass (
var number: Integer,
val text: String,
var whenExactly: Date
);
Ergo mam delsi penis.
Satai, jenomže Váš kód nedělá totéž. V původním kódu je jedna property getovací, druhá setovací, třetí umí oboje a mohu do ní vložit eventy.
Váš kód provádí něco zcela jiného…
Na úrovni fieldů mohu totéž co Vy zapsat jak v Javě tak v C# víceméně stejně – bez ohledu na penis, ale přijdu o funkčnost, kterou v OOP poskytují properties, což nebylo smyslem ukázky.
Vy jste asi nepochopil, co tou modularitou myslím. Tím nemyslím, že mám IDE, ke kterému můžu přidávat pluginy, aby to IDE umělo to a to, nýbrž mám platformu, ze které můžu díky modularitě vyrobit IDE, groupwarové řešení, grafický editor, nebo plnohodnotný office balík. Až mi ukážete podobný seznam aplikací, postavených na Visual Studiu, můžeme se bavit.
A jistě, nikdo, ani sami Javisté, nepopírá, že Java je z hlediska syntax sugar daleko za C#. Já tedy nepíšu třídy jako Satai, já napíšu privátní fieldy, pak stisknu kombinaci kláves Ctrl+Shift+S,R a Ctrl+Shift+S,O a mám kostru třídy hotovou. Syntaktický cukřík v podobě properties je opravdu fajn, stejně jako lambdy, práce s delegáty, eventy, a dalšími věcmi, nehledě na LINQ, díky kterému C# utekl Javě o světelné roky, pokud jde o práci s kolekcemi, či async await.
Na druhou stranu, i C# má svá specifika. Např. rozdíl mezi extend a implement:
class Franta : Pepa
Pepa je v tomto případě rozhraní nebo třída? Jo v C# to musím pojmenovat IPepa, aby to bylo jasné.
Avšak ano, my všichni javisti uznáváme, že C# je co do syntaktického cukru mnohem dál než Java. Jenže Java je tu déle, má bohatější základnu knihoven třetích stran a rozsah impementací java-based platforem je zase světelné roky před čímkoliv v .NETu.
Mimochodem, nebýt open source portů produktů jako je Hibernate, JUnit nebo Lucene, byl by .NET mnohem chudší a nebýt Springu nebo zmiňovaného Hibernate, neměl by Microsoft ve svém ASP.NET MVC a Entity Frameworku co dohánět.
Takže se nebavíme jen o syntax cukru, ale o celé platformě, způsobu vývoje či možnostech, po kterých může člověk sáhnout. Narozdíl od Windows Phone můžu pro Android za jeden večer naprgat, otestovat a deploynout svou aplikaci na libovolná zařízení, aniž bych k tomu potřeboval nějaký marketplace nebo System Center za dlouhé peníze. Nejzásadnějším problémem Microsoftu je totiž cena vývoje a dostupnost. Free verze vývojových nástrojů snad ani nemá smysl zmiňovat. Tomu se nedá říkat IDE a pro seriózní projekty se s tím skutečně nedá počítat. Visual Studio se hodí jen pro vývoj na .NETu, tedy čistě pro Microsoftí platformu. Pro jakýkoliv jiný vývoj jsou tu jiné, lepší nástroje, jako třeba kombinace Sublime Text a Gruntu pro vývoj v Javascriptu.
Microsoftí platformy zahrnují spousty obstarožních korporátních kusů software – od databáze, přes webserver, až po klientské aplikace. Všechno dělané na míru korporátu a draze licencované. To samo sobě omezuje vývoj pro .NET jen na korporátní sféru. Ti vývojáři, kteří nejsou v práci omezováni touto platformou, nemají o vývoj na .NETu zájem, protože je to vývoj drahý a zákazníků mimo korporátní sféru není mnoho. Microsoftu v mnoha ohledech ujíždí vlak, ať už jsou to mobilní aplikace nebo webový vývoj, což je budoucnost vývoje obecně. Proč by kdo dneska měl vynakládat ohromné prostředky na sestavení plnohodnotného vývojového týmu, když konkurence má vše zadarmo? Proč bych měl svým vývojářům kupovat drahé licence na Visual Studio, když Eclipse stáhnu zadarmo a rozchodím během pěti minut? Proč bych měl platit MSDN subscription, když v Java je většina věcí zdarma a informací je mraky po celém internetu? Proč bych měl platit licenci za Windows Server s IIS, když Linux a Tomcat nebo JBoss jsou zadarmo? Proč bych měl kupovat MSSQL server, když mám k dispozici spousty jiných databází, většinu zadarmo? Proč bych si měl kupovat Team Foundation Server, když mohu na partikulární projekty použít Atlasian, Assemblu, nebo RedMine na vlastní doméně?
A proč bych měl vyvíjet v .NETu, když nevyvíjím primárně pro Microsoftí platformu?
To je esenciální problém .NETu. Cena vývoje a dostupnost řešení. Syntax sugar v C# to už nemůže zachránit.
To byl kousek ve Scale. To je totiz zpusob, jak delat dlouhy nos nad zastaralym C# pro loosery. (Stejne muzeme vzit trebas Erlang, pokud je potreba delat dlouhy nos na Scalu.)
Tohle je vazne nuda. Java neni zdaleka dokonala, ale aby mne nekdo presvedcoval, jak brutalne nepouzitelne je prostredi, co znam, aniz by o nem mnoho vedel… Ja jsem pragmatik. Az to pujde deployovat, zkusim neco v C#. Dokud to nikde nespustim, tak si nanejvys zkusim ve F# nejake to domaci hrani.
A vazne nejsem nejaky Java zaslepenec. Dostat C#pove generiky, byl bych rad. Dostat lambdy uz v minulem releasu, byl bych rad. Ale jazyk je vazne jenom zlomek toho, co potrebuju, viz Locutus.
A té noticce o resharperu se můžete usmívat jak chcete, ale je to prostě fakt. .NET vývojáři, kteří s ním kdy pracovali, si bez něj už nedokážou ani nechtějí obejít. Zkuste se poptat ve svém okolí nebo trochu pogooglit. :-)
Vážený kolego Lokutus. Vy máte tendenci opakovaně míchat jabka s hruškama. :)
Resharper – Vy jste to původně napsal jinak. V tom duchu, že se bez toho ve VS nedá pracovat. Pokud ovšem zkusí někdo nějaký jiný plugin, který mu dá něco navíc, pak je logické, že si to pochvaluje a již nechce bez toho dělat.
Ale tady aspoň vidíte, že ne každý má problém připlatiti si za dobré nástroje peníze a ne pro každého je „java zdarma“, „IDE zdarma“ jedinou výhodou.
Poukazovat na to, že interface píšu s nebo bez „I“ je IMHO slabé vzhledem k tomu, že v Javě musím psát s prefixy a postfixy všechno, například getText, setText, TextProprty()… Když si mám vybrat mezi jazykem s eventy, properties a I a jazykem který nemá I, eventy ani properties, pak si vyberu ten s I, eventy a poperties. :)
Váš argument s cenou vývoje je úplný ekonomický nesmysl.
Cena vývoje přece není cena za IDE a nástroje! Ty tvoří naprosto zanedbatelnou část nákladů.Cenu je nutné počítat na team na období, dejme tomu jeden rok. Pro 10 členný tým to pak vychází:
JAVA:
OS Linux … 10x pseudo 0,- CZK (to, že většina lidí neumí pracovat s Linuxem a je nutné věnovat nemalé náklady na školení, nebudu pro jednoduchost počítat)
Java Eclipse IDE … 10 x 0 = 0,- CZK
Java programátor PLAT … 10x12x100.000,- = 12.000.000,- CZK
Dostupnost schopných Java programátorů: velký problém
Vývoj po roku celkem: 12.000.000,- CZK
C#
OS Windows … 10×1.900,- CZK = 19.000,- CZK
VS PRO IDE … 10 x 14.900,- = 149.000,- CZK (studenti mají licenci zdarma, ale to je jedno)
C# programátor PLAT … 10x12x50.000,- = 6.000.000,- CZK
Dostupnost schopných programátorů: středně velký problém
Vývoj po roku celkem: 6.168.000,- CZK
Žádné ostatní nástroje pro jednoduchost nepočítám. Výběr pro obě platformy je stejný a rozhodují jen osobní preference.
To co je důležité je ale efektivita. Programátoři v C# udělají mnohem více práce, díky efektivitě jazyka, IDE a platformy, než programátoři v Javě. (Nebo jich na totéž stačí méně)
Stačí si proletět fóra a uvidíte tam mračna roky opakujících se dotazů „jak udělat eventy v Javě?“, „který ze způsobů načtění souboru v Javě použit?“, „který Framework v Javě teď letí?“, „Napsali jsme něco na frameworku A, ale teď je mrtvý, oplatí se to přepsat do frameworku B?“. „Máme ve firmě použít NetBeans, Eclipse, nebo IntelliJ? Zkoušeli jsme půl roku všechny, ale pořád nevím, který je nejlepší. 1/3 lidí chce A, druhá chce B, třetí chce C.“
V dotNETU se nikdo nezdržuje řešením podobných dotazů.
Velkou roli hraje riziko dokončení vývoje.
U Javistů je dále 3x pravděpodobnější, že vývoj nedokončí v termínu.
Jelikož jsem řídil oba druhy teamů, ty čísla a zkušenosti si necucám z prstu.
Výsledek: čísla jsou tak markantní, že vítěze si už každý sečte sám.
Jen pro úplnost: Já dělám v Javě, protože musím, protože na rozdíl od MS je opravdu víceplatformní a rozšířená zejména ve velkokorporátní sféře (Banky, Telco, …). Tyto dvě byznys věci jsou její jediné výhody. Kdyby někdo napsal C# pro Javu, byl bych v sedmém nebi. Nemyslím nějaký pochybný skriptovací paskvil, ale plnohodnotný jazyk. Kdybych na to našel schopné lidi, asi bych založil startup a financoval to.
To vazne .NET programatori delaji za 25k cisteho?
To vazne pouzivate IDE bez code coverage a staticke analyzy kodu?
To vazne deployjete nekam, co nic nestoji?
Satai, jak jste si již všiml, Vaše demagogické a překroucené reakce neřeším.
A to si říkáte „šedý“ …
Ja ti neberu, ze muzes byt na .NET spokojeny. Ale trebas moje pozadavky dost hluboce neuspokojuje. Protoze zrovna ted pisu nad Hadoopem, deployuju na Linux a to vse z dobrych duvodu.
(btw: to skoleni programatoru na Linux jako vazne? To skutecne jsou bezni profici, co nezvladaji zaklady prace v bashi?)
btw: Uvedené náklady jsou hrubé, ne “superhrubé”.
Jenomze naklad pro firmu je ta superhruba.
Inu, s tím resharperem jste napsal to samé co já, jen jste z toho udělal fíčuru. Já jen doplním, že pokud chce být dev ve VS efektivní, tak ne že může, ale musí si zaplatit za tooly.
Ty vaše ceníky nákladů jsou k smíchu. Znám vývojáře v Java, kteří dělají za 50 tisíc a znám vývojáře v .NET, kteří nejdou pod 100 tisíc. Stejně tak VS není 14900. Základní verze bez MSDN vyjde bratru na $500, račte si to přepočítat. Studenti to mají zdarma, avšak nikoliv pro komerční použití. Stejně jako akademické licence nejsou určeny pro komerční využití. Dále jste zapomněl zmínit MSDN předplatné, bez kterého nemáte přístup ke spoustě jinak tvrdě placeného obsahu a nástrojů. A představa, že cílová aplikace poběží na OS Windows za devatenáct stovek… to ani v dolarech, milý pane… :-D
Dostupnost programátorů je dle mé zkušenosti na obou platformách podobná. Javistů je málo, protože projektů na Java je řádově více, dotnetistů je zase málo, protože na dotnetu pracuje málokdo a kdo jo, ten už je zašitej v nějakém korporátu nebo softwarehousu. Mluvím z vlastní zkušenosti.
Na fórech se stejně tak opakuje jak udělám v Java to a to jako jak udělám v C# to a to. A pokud je těch dotazů na Javu víc, neznamená to náhodou, že je víc konvertistů z dotnetu do Javy než naopak? Proč asi? ;-)
V dotNETU se nikdo nezdržuje řešením podobných dotazů.
No, to chápu. Na tak rigidní platformě řeší vývojáři maximálně to, zda bude Microsoft příští rok podporovat WebForms a jestli se mají začít raději učit MVC, protože signály, které Microsoft vysílá, jsou znepokojující. Věřte mi, že vím o čem mluvím. Pracoval jsem jak na .NET, tak dělám dnes v Java. Navíc se dost pravidelně účastním seminářů v sídle Microsoftu a poslouchám tam stesky těch lidí, co nemohou z .NETu prostě jen tak odejít.
U Javistů je dále 3x pravděpodobnější, že vývoj nedokončí v termínu.
Jo, tak k tomuto tvrzení máte jistě nezvratné důkazy v podobě nějaké analýzy.
Já dělám v Javě, protože musím, protože..
Tím jste de-facto potvrdil vše, co jsem psal předtím. Líbí se vám syntax sugar v C#, ale děláte v Java, protože pro C# nemáte kšefty.
Gratuluju. :-)
No kdybych měl potřebu dělat jen webové stránky, … ale nemám – to mi udělá kde kdo externě, nebo je namodeluji v Salesforce za zlomek toho, co bych dal za jejich programování klasickým kódováním.
Dnes jsme zpátky na desktopu, pokud jste si nevšiml. Mobilní aplikace na mobilech a tabletech jsou desktopy, ne weby. Vývoj webu považuji za okrajovou záležitost.
Ona tahle z prstu vycucana cisla a “efektivita” merena tim, kolik je potreba uhozu klavesnice na jednu property… v realnem zivote jsem s tim nemel problem. Kazda drobna chyba v komunikaci se zakaznikem nebo zadrhel v zadani stoji radove vice.
Uprimne bych par veci z .NETu chtel (a cekal bych, ze to bude i naopak), ale radeji bych sel a psal trebas v Jave 1.4 a dostal k tomu dobre kolegy a bystreho zakaznika, nez v jave 8 a s loosery. Tooling je super, ale na projektu jsou i dulezitejsi veci.
Tak pokud vidite budoucnost v mobilech a tabletech, tak to rovnou na .NET zapomente a pripravte se na prechod na Javu a downgrade na ObjectiveC
Lokutus, podívejte na ty ceny: http://www.devshop.cz/microsoft-visual-studio-2013-professional?gclid=COS2ibax-7wCFaQfwwodtGUArw
Na vývoj nepotřebuji MSDN.
Na efektivitu nepotřebuji do VS nic dalšího instalovat.
Vycházel jsem z oficiálního ceníku MS, popř. Daquas. Netvrdím, že se to nedá sehnat i levněji. Kdysi jsou koupil VS s licencí na eBay za 7000.
A je tedy otázka, co si pod efektivitou představujete.
Nicméně, abych to uzavřel – shodneme se na tom, že C# má lepší syntax sugar, zatímco pro Javu existuje víc příležitostí?
Satai, jistě že i jiné věci jsou důležité pro úspěch projektu, ale to už je přece mimo téma článku. Tento článek byl o toolech.
Na ten downgrade u mobilů a tabletů se nemusím připravovat, když na tablety i na mobily mohu psát v C#.
Javu neřešemí ani kvůli webu, ani kvůli mobilu.
Ano, s tímhle (bohužel) souhlasím.
Fakt, že vy neřešíte webový ani serverový vývoj neznamená, že je takový vývoj marginální. Podle poslední zpráv z Microsoft scény se spíš zdá, že je marginální ten vývoj pro desktop a windows phone platformu. Většinu mobilů beztak sežral Android a o dlaždicové aplikace na Win 8 není zájem tak nějak obecně, což si přiznává i Microsoft.
Psal jsem, že neřeším webový ne serverový. Serverový dnes řeší přece každý. Ale server nemusí být webová platforma.
Jinak tahle debata by byla skutecne zajimava tak pred sedmi lety. Dneska uz je punk jinde.
Kde?
Dneska pro flejmy IMO táhnou spíš funkcionální jazyky, popř. témata jako SPA vs. server-side aplikace.
Tak, tak. Funkcionalni jazyky, rychly deployment a continous deployment, lehkotonazne virtualizovane sluzby, malinke sluzby, persistentni datove struktury, eventsourcing a odchod od MVC…
Zeptám se zkušenějších na dvě věci, které by mě zásadně ulehčily život.
a) Ve VS mám možnost v okně „Immediate Window“ zadávat výrazy v režimu debug. Je to ekvivalent „Expressions“ v Eclipse. Ve VS mi za objektem a tečkou funguje Code Recommender a nabídne membry třídy. U Eclipse to nefunguje. Existuje možnost jak to tam rozchodit? Resp. Funguje to v IntelliJ? (viz rudá šipka na obrázcích)
b) Mnohem důležitější: Ve VS mohu při debugu program zastavit na Break Point, pak mohu něco v kódu modifikovat, např. opravit vzorec/přidat řádek kódu a pod. a pak mohu posunout ukazatel debuggeru před předešlé řádky a kód znovu projít s novým kódem zkompilovaným. Vše bez toho, abych aplikaci restartoval a ztrácel čas znovu simulovat situaci až po break point. Návratu ladícího ukazatele na nějakou předešlou pozici mohu využít i tehdy, když změním hodnotu proměnné a chci část kódu znovu a znovu projít s novým parametrem – BEZ RESTARTU. Je to skvělá věc při ladění nebo při problému když nutno něco dlouho simulovat. Oprava chyb je s tímto nástrojem rychlá. Mohu tohle dělat v některém IDE Javy? NetBeans ani Eclipse to v základu neumí, nebo jsem nepřišel na to, jak to dělat a vždy mi rve žíly, když musím nějakou chybu zapeklitě zanořenou simulovat znovu a znovu, hlavně když se během simulace přenastavuje více proměnných. (viz modrá šipka na obrázcích)
Pomocný obrázek VS: https://imageshack.com/i/n831z6p
Java: https://imageshack.com/i/0ye3fep
ještě jednou ten Java file: http://imageshack.com/a/img853/15/c65q.png
Code completition pri nastavovani watches (podminenych breakpointu…) v intellij codecompletion samozrejme ma.
http://i.imgur.com/rY4XGwI.png
Tim bodem b si nejsem moc jisty, myslis tim: http://www.jetbrains.com/idea/features/compiler.html#link24 v kombinaci s hotswapem?
Tak jsem zkusil IntelliJ IDEA. A musím napsat několik postřehů (=zádrhelů):
Po instalaci, před tím, než vám ukáže IDE to chce vytvořit nový projekt. Podivné, ale co už. Když ho vytvoříte při prvním spuštění tak ho v IDE neuvidíte. :) Malá chybka. :)
Po instalaci jsem si musel ručně nadefinovat cesty k JDK, jinak to neumělo kompilovat. Zajímavé.
Byl jsem trochu zmatený z projektové struktury. Asi šesté IDE pro Javu a s tím šestý způsob jak se s balíčky a projekty pracuje. Nakonec je to po vzoru Apple XCode, tak když to člověk zjistí, pak to už jde. Trochu opruz, že v jednom okně můžete mít jen jeden projekt a další se otevírá do jiného. :-/
Chvilku mi zase trvalo přijít na to, jak zkompilovat projekt nebo třídu. Zase jiné chování než u Eclipse i NetBeans. Ale nakonec se samozřejmě povedlo. Bohužel to není klik klik a jedu, ale zase ručné nastavování… (toto je naštěstí rychlé. Jen mi vadí, že každé IDE má ty okna pro nastavování řešené zcela jinak a člověk pak vždy vše dlouho hledá – není v tom žádný standard.)
Další problém byl, že se neobjevovala nápověda v kódu (popis metod, parametrů, …). Zase voláme na pomoc pana googla, ale odpověď najdete. To si člověk musí doinstalovat ručně, nebo ho ručně prolinkovat s webem. Ale dá se to najít a opravit. V tuto chvilku asi začínám chápat, proč si Javisté chválí možnost instalovat do IDE pluginy. Bez nich by to ve světě Javy fakt nešlo. Ovšem jejich kritika toho, že VS je rigidní pramení z předpokladu, že pluginy jsou řešení. No ve VS není potřeba pracovat s pluginy tak veliká jako v Javě, protože ve VS na potřebu pluginů nenarazíte.
Další podivnost: když si vytvoříte například formulář z “wizardu“, IDE Vám do projektu nepřidá knihovny, ze kterých to generuje a které jsou potřeba pro běh aplikace. Při spuštění aplikace to spadne na chybu a řešení musíte hledat na webu. Naštěstí zase se to dá najít, protože na to narazilo milion lidí a zase si to můžete ručně („hurá“) nacvakat. :D
Když chcete debugovat aplikace, zase narazíte na chybu, že se nepovedlo připojení k debbugeru. Postup stejný … google > ručně konfigurovat … („hurá“).
Někdy se mi stane, náhodně, že se mi sám od sebe schová panel projektového stromu. Ještě jsem nepřišel na to proč a jak ho udržet pořád otevřený. Ale na to snad do několika dnů pasivního hledání přijdu… :D
Jako každé Java IDE I toto IDE má problém s importem projektů vytvořených v Eclipse nebo NetBeans. Nějaká podpora zde sice je, ale když je projektů hodně, rozumný výsledek je zbytečně pracné dosáhnout. A asi bude problém pracovat v teamu, kde někdo dělá s Eclipse a někdo v IDEA, ale uvidíme. Asi to chce ještě trénovat skill a hodně kompromisů.
IntelliJ Vám umožňuje vytvořit GUI aplikaci (swing apod.) wizardem, resp. ne aplikaci, ale form. Proti NetBeans a Eclipse kde je to uděláno těžkopádně a chybí tam v defaultu vizuální editory, tak alespoň něco. GUI edito je tady spustitelný bez zdlouhavé konfigurace a zoumání.
Zajímavé je, že vygenerovaná třída zase není úplná a musíte k tomu dopsat metodu pro zobrazení toho formu. Naštěstí zas na fórech zjistíte, že na to narazilo milion lidí a že je tam kontextové menu Generate, které s tím pomůže, pak to stačí jen ručně do upravit. :)
Ve VS jsem nikdy nenarazil ani na jeden výše popsaný problém. Po stažení máte bez problémů první aplikaci do pár vteřin. Nic nenastavujete, nic dalšího neinstalujete. Vše chodí bez chyb.
To je ten důvod, proč pořád obhajuji VS, které je tady tak moc kritizováno. Nic jiného v tom prosím nehledejte.
Svět Javy je opravdu šíleně zdlouhavý a hrozný. Opravdu nechápu, a asi nikdy nepochopím, jak někdo může nadávat na VS a tvrdit o něm, že je rigidní… Ale asi mi něco prostě zůstane záhadou.
A jelikož tohle je devblog, tj. od vývojářů pro vývojáře, tak hodnocení na závěr:
I po těch podivnostech musím objektivně říct, že jako člověku donucenému na downgrade do Javy (ty eventy, properties, čistý popis objektů, objektové datové typy, čistá serializace a další prvky skutečně objektového jazyka mi fakt neuvěřitelně chybí) se mi IntelliJ IDEA na první pohled zda být mnohem dál než Eclipse nebo NetBeans. Možnosti a user-friendly pohodlností se přibližuje běžným (old school) RAD nástrojům (JBuilder, Delphi, VS, …). Taky má mnohem lepší keybindings než Eclipse nebo NetBeans.
Psaní kódu je díky lepšímu Code Completion opravdu znatelně rychlejší. Ještě pár optimalizací a má šanci být efektivní jako to ve VS. Je vidět, že se tím kluci z JetBrains hodně inspirují. Díky bohu za to!
I ten debugger a krokování je v IntelliJ efektivnější než v Eclipse a NetBeans a blíží se tomu z VS.
Jsem rád, že jsem to zkusil a zřejmě se vykašlu na NetBeans a Eclipse a na toto IDE přejdu úplně.
Existuje nějaké omezení, proč bych neměl? Narazím na něco? Uvidíme…
Pozitivně mě překvapila i podpora nové ještě oficiálně nevydané Javy, která mi v Eclipse nativně chybí a nechce se mi to tam rozcházet a řešit každý problém s tím spojený.
Po této zkušenosti mi přijde podivné, proč tolik Javistů používá/doporučuje Eclipse nebo NetBenas a ne IntelliJ. Ale odpověď je asi to, že s čím se Javista setká jako s prvním, to je pro něj na dlouho železným “nejlepším” zvykem.
Kdybych IntelliJ zkusil dříve, ušetřil bych si spoustu sprostých nadávek. :D To je to co, co mi na Javě hodně vadí. Možností má až přebytek a to se stává kontraproduktivním, protože dokud se člověk dopracuje k ideálnímu řešení, zabije mnoho času testováním špatných řešení.
Takže díky Satai, vytrhl jste mi hodně javatrnů z paty!!
Btw: ten editor na těchto stránkách taky moc nefunguje. Ty zádrhele jsem dal do bodů, v preview jsem je viděl a nakonec tam nejsou … :-/
Dnes mě Java docela pobavila. :D. Je uvedení Java 8. Konečně se klukům po tolika letech povedlo do Javy přidat zápis lambda funkcí. Bravo! A taky konečně nějaké funkce pro Date and Time. Jen to s tím kopírováním kluci nemuselí hnát do extrému. Ono se jim povedlo zkopírovat i styl loga Visual Studia z roku 2008.
ROFL.
http://www.oraclejavamagazine-digital.com/javamagazine/march_april_2014#pg1
vs
viz google “visual studio 2008 logo”
:D