Jasne java hater - burn in hell!
Poznam ludi ako ty - ked nieco nevedia pouzivat, je to nahovno. Urcite je lepsia ako C/C++ alebo akekolvek C :-p
Btw. Dokaz, ze orakul to posral: http://www.theregister.co.uk/2012/08/30/oracle_knew_about_flaws/
Rozdiel je v pristupe. Kym SUN s tym nieco naozaj robil (patche, updaty atd.) Oracـ kasle na to pokial v tom nie su prachy. Pekne to vystihuje jeden komentar z linku vyssie:
"As an ex Sun staffer - its unsurprising really!
Oracle have always treated customers as really just a pain in the backside - who needs them.....??
With all the money they have coming in from licence fees and extortionate contracts why bother with common sence and spending 1 cent more than has to be spent.....
Oracle ARE NOT SUN....Oracle cant be bothered unless theres a buck or two billion involved - they dont care, are not interested in anyone or anything unless its BOTH in their plans anyways AND makes lots and lots of the green stuff..."
S tym mozem na zaklade vlastnych skusenosti len suhlasit.
Pomaly? Pan je asi na drogach. Java nie je o nic pomalsia ako ine jazyky, problem je mozno so startom - najprv sa spusti JVM az potom samotna javovska aplikacia a to vysvetluje aj "nenazranost." Samotna aplikacia v jave nezere viac ako keby bola v C. Samozrejme zavisi aj do kvality programatora. :-p OOo od SUNu pouzivam este teraz a nemam s nim zatial ziaden problem
Srovnávat rychlost běhu a paměťovou náročnost Javy s jazyky začínající na C (nedejbože ANSI C) může buď:
1) troll
2) člověk v prváku na ZČU, který chyběl na první přednášce PPA :-D
3) zaměstnanec Oracle
4) Java fanatik
Ale jinak slyšel jsem i o jednom učiteli, který vyrobil na 1 problém 2 aplikace. A verze v C++ byla POMALEJŠÍ než v Javě. Za tento výkon dostal titul Ph.D (to jen dokazuje, jak moc se člověk musí snažit, aby Java měla navrch :-)
Hmmm, a mě jednou jeden pornoherec ukazoval, jak strčil ruku až po loket to <|> - tak proč mi to sakra nejde a proč všechno, na co v Javě narazím, je neuvěřitelně zabugovaná chcíplá sračka, která navíc funguje korektně jen pod jednou jedinou konkrétní a několik let zastaralou implementací, kterou si (v lepším případě) pro jistotu bundluje, a to ještě s tím, že GUI lze použít ještě jen v některých prohlížečích? Příkladmo entrprajs konzole k produktům Symantecu nebo takový Fujitsu ServerView Operations Manager? A kde je hergot ta multiplatformnost, když to pod Linuxem nefunguje vůbec?
No to totiž máte zkušenosti s těmi nejhoršími aplikacemi (z hlediska implementace) a podle nich si děláte názor, který pak šíříte do celého světa. Já v Javě programoval asi 12 let a při vývoji webových aplikací jsme vůbec neřešili, na jaké platformě aplikační server poběží - a nebyl problém. Místo toho jsme řešili, v jakém prohlížeči bude uživatel tu webovou aplikaci používat.
Také už jsem se setkal s tím, že nějaký aplet nebo nějaká aplikace vyžadovala jedinou konkrétní implementaci JVM - rád bych ale věděl, co autoři těchto aplikací používali při jejich vývoji za prasárny.
Jo, asi mám hroznou smůlu. Kdysi jsem zkoušel BT klienta v Javě (Azureus, nyní tuším Vuze). Opět totální zdechlina padající jako švestky na podzim. Jako sorry, ale když se proti tomu podívám na cca 20x menší uTorrent pro Windows, tak se fakt musím jen smát. Nevím, co používají autori za prasárny, opravdu marně hledám někoho s nějakou pozitivní zkušeností s něčím napsaným v Javě.
Po precitani vasich poslednych dvoch prispevkov je to pre mna jasne! Chyba je medzi stolickou a klavesnicou. Pouzivam Azureus (ked uz tu je priklad konkretnej aplikacie) ako pod win tak aj pod lin a nemal som s nim ziaden problem ani pod jednym.
Zhodujem sa aj s tym, co napisal Mips. Vybrat si najhorsie java implementacie a potom nadavat na samotnu javu to je dost lamerske. Okrem toho pod C/C++ je tych zprasenych pomalych neschopnych programov o dost viac. V jave aspon urobim jeden kod, ktory funguje vsade, kym C/C++ musim ako debil kompilovat pre kazdu platformu.
Mimochodom, ak mate problem s javovskou aplikaciou, tak nadavajte na programatora, co to posral, nie na jazyk. Ako uz bolo vyssie uvedene Java je rovnako rychla ako akekolvek C a ma zhruba rovnake pamatove naroky + JVM (co je jedina zozrana pamat naviac).
Vybrat si najhorsie java implementacie a potom nadavat na samotnu javu to je dost lamerske
Ježíšmarjá, tak mi tady prosím vás napište nějaký příklad té killer aplikace v Javě, abych si řekl - jooo, to je ale pecka, ta Java je fakt sakra dobrá, je to rychlý, stabilní (a ještě to pěkně vypadá.)
Kam šáhnu já, tam je to pomalý, nestabilní a vypadá to (s výjimkou některých webových aplikací) tak, jako by to právě vypadlo někomu z (_|_) aneb styl Motif/Athena z hloubi minulého století. :/
V jave aspon urobim jeden kod, ktory funguje vsade, kym C/C++ musim ako debil kompilovat pre kazdu platformu.
:-)))))) To nemá smysl komentovat. Již jsem uváděl ten příklad od Symantecu, bylo to rychlé a stabilní, používalo to MMC. Takže se to přepsalo do Javy, aby to mohlo chodit na "jiných platformách". Bylo z toho neuvěřitelné monstrum v Javě, které mělo běžet na Tomcatu - samozřejmě nefungovalo správně ani pod Windows, pod Linuxem už pak vůbec, fungovalo s jednou konkrétní verzí Sun Javy a bylo to ohromná paráda - tipuju, že škody šly do desítek milionů dolarů, protože lidi zdrhali, seč mohli, to byl produkt pro firmy, které chtěly centrálně nasazovat a spravovat antivir plus paketový a aplikační firewall na stovkách/tisících desktopů. Testovací implementace sestávající z cca deseti počítačů byla schopná plně vytížit quad-core Xeon a využít 8GB RAM, absolutně si neumím představit, jak by to asi vypadalo, až by se počet těch strojů zdesetinásobil.
Ježíšmarjá, tak mi tady prosím vás napište nějaký příklad té killer aplikace v Javě, abych si řekl - jooo, to je ale pecka, ta Java je fakt sakra dobrá, je to rychlý, stabilní (a ještě to pěkně vypadá.)
Znám jeden:
Sun (Oracle) Directory Server
pak co vím, tak Bitva o Wesnoth je psaná v Javě. Nepřijde mi nijak zvlášť krásná a přehnaně rychlá, ale fungovala dobře a stabilně.
Ovšem jinak musím přiznat, že jiné java aplikace se mi většinou moc nelíbí.
To si asi děláte srandu. Java je ve většině případů jasně pomalejší než C/C++ (zvlášť trigonometrické funkce a pole). Existují i výjimky, ale těch je pomálu. Paměťová náročnost Javy je vyšší jak z důvodu běhu JVM v paměti, tak díky vysokému overheadu (8 bytů na každý objekt, zaokrouhlení velikosti objektu na 8 bytů, tj. když alokujete byte, tak zabere 16 bytů). Garbage collection se pochopitelně také projeví na spotřebě paměti. Startup time aplikace je delší než u C/C++ díky nutnosti zavést runtime a spoustu tříd. Největším problémem na desktopu je ale GUI, které je většinou daleko pomalejší, než to nativní.
Samostatnou kapitolou je vzhled aplikací na různých platformách. Ten styl "one size fits all" prostě moc nefunguje, a aplikace psané v Javě typicky vypadají jako (pomalé) UFO na všech platformách.
Java je samozřejmě daleko pokročilejší jazyk než C++, méně náchylný na chyby programátora, lépe formálně verifikovatelný a podle mě elegantní. Osobně ale dávám přednost C#. Výkonově je na tom většinou o něco lépe, a daleko lépe využívá možnosti platformy (dokud mluvíme o Windows :)). Pro výkonově kritický kód chcete C/C++, nebo nově C++/CX.
Je to bezne a resime to skoro kazdy den - vetsina techto "vyvojaru" programuje zpusobem copy&paste, ani si neprectou zakladni informace o pouzivane technologii, takze napriklad v JNLP souboru vyzaduji neexistujici verzi Javy, coz ale na nekterych implementacich projde jen diky tomu, ze to ten konkretni implementator trosku ohnul.
Takze situace podobna jako v dobach nekdy HTML 4 - kurvi se HTML stranky (neodpovidaji zadne specifikaci) a prohlizece se ohybaji tak, aby i tyto stranky nejak nacetly.
Odporucam skusit OVSM7 a OVSM9. Kto pozna, da mi za pravdu, ze horsia vec v Jave snad neexistuje. Ale skuste take OVSD pripadne nieco starsie, co bolo tiez v Jave a to je nebo a zem. Na druhu stranu, ak vyskusate nejake OVSM kazda Java apliacia vam bude pripadat ako to najrychlejsie, najlepsie a najkrajsie co v Jave niekto urobil.
Soucítím. V práci máme 2 aplikace napsané v Javě přímo pro danou firmu, takže alternativa neexistuje.
Je normální, že aplikace čas od času (asi tak 10x denně) ztratí focus? Okno je na vrchu, titulek aktivní, nic se neotevřelo (viditelně) a prostě prd. Nepomůže Alt+Tab, Enter, nic, musím chytit myš a ťuknout kamkoliv do aplikace - i mimo editační okénko a voilá - objeví se kurzor a můžu psát dál. V obou aplikacích přeskakuju mezi editboxy Tab a v obou se stane, že na různých místech napíšu text, zmáčknu Tab a NIC. Kurzor zmizí z prvního boxu a neobjeví se v druhém, dokud kamkoliv na okno nekliknu myší. Přitom v tomtéž místě to 10x předtím a 50x potom funguje. Kliknu na tlačítko v dialogu, vizuálně to zareaguje správně, ale nic se nestane.
Nevím, jestli to je prasecky naprogramované nebo je to kombinace konkrétní verze Javy a skvrn na slunci, ale vztekám se s tím snad 8 let, kdy proběhlo asi 30 aktualizací.
Je fascinujici sledovat jak nekteri lide veri, ze existuji jenom jazyky z rodiny jazyka C (C, C++, Java, Perl, PHP, C#, apod) a hadaji se mezi sebou co je vice objektove (aniz by znali smalltalk nebo clos), v cem jsou programy rychlejsi (aniz by tusili neco o mapreduce), pripadne v cem se lepe implementuji patterny (aniz by vedeli ze mozna az polovina patternu nema vubec zadny smysl u jazyku z jine "rodiny".
Ale zpet k chybam v jave - oracle rozhodne neni prvni ani posledni firma ktera ignoruje chyby ve svem SW. Je to smutne, je to osklive, ale takovy je zivot. Microsoft a Apple by mohli vypravet.
Myslím, že jako všude jinde i zde platí pravidlo 80:20. 80 % lidí z vývoje nezná nic jiného než C a příbuzné. Je to taky důsledkem vzdělávacího systému. Jazyky a databáze jiných paradigmat jsou na VŠ probírány jen jako okrajové a experimentální záležitosti a u céčkařů se setkávají s odpovídajícím opovržením a nepochopením (často ani nejsou schopni to chápat).
Krásnou ukázkou hybridních vzorů může být kniha Návrhové vzory od Pecinovského, je tam vidět, jak složitě Java řeší problémy. Například mi nikdy nebylo jasné, na co je Smalltalku návrhový vzor Dekorátor, když Smalltalk má polymorfismus nesouvisející s dědičností. Asi by se toho našlo více.
Zkuste to příště s diakritikou, ať obsah nepředbíhá formu.
Ale jo, učí se i jiné věci. Jenže člověk je tvor imperativní a jazyky z rodiny C se nejvíce podobají tomu, na co jsou lidé zvyklí. Je to proto přirozená volba. Zkuste si najít libovolný návod na něco praktického - montáž skříně z IKEA, recept na svíčkovou s knedlíkem, návod na instalaci pračky, návod na výrobu stolu,... prostě toto je způsob jakým, většina populace uvažuje.
Tak to je docela sporné - jak vypadá takový návod? „...přiložte k sobě desky v pravém úhlu a stáhněte vruty...“ nebo "...přiloží se k sobě desky a stáhnou...“? První je objektově (uvádí původce děje a jeho činnost), druhé imperativně (neuvádí původce děje, jen činnost a její předměty). Přitom druhý způsob tiše předpokládá, že to někdo (=objekt) musí udělat, což je objektový přístup. Nenechte se mýlit mluvnickým imperativem.
Dle jisté teorie je objektové paradigma člověku blízké proto, že VŠE kolem něj jsou objekty a něco umějí, takže podobnost s realitou. Naopak natlučení imperativního přístupu je časově náročné (řádově roky, zažili jsme si všichni). Těžko to ale ověříme, když se dodnes začíná v IT imperativním uvažováním.