neděle 4. března 2007

Proč jsem tolik nadšený z Javy?

Jako každý správný programátor jsem i já velice líný člověk. Ano, přehnanou pílí z Vás programátor nikdy nebude. Důvodem není to, že by programování byla jednoduchá věc, kterou se stačí naučit a pak jen aplikovat, ale proto, že hledáte stále lepší a lepší řešení, které by Vám usnadnilo další vývoj.

Když to převedu do praxe:
Představte si, že vedle sebe posadíte 10 lidí (kteří mají základní znalosti s prací na PC) a dáte jim za úkol napsat v Excelu čísla od 1 do 30. První skupina lidí si sedne a začne psát čísla od 1 do 30. Možná budou i rychlejší, jelikož nemusí nad ničím přemýšlet. Druhá skupina lidí si řekne, že je to moc práce a začne hledat způsob, jak si práci usnadnit. I když zadaný úkol nestihnou v časovém limitu, budou jistě produktivnější. Jen si představte, že byste po těch pracovitých lidech chtěli, aby Vám napsali čísla od 5 do 1000. Kdo myslíte, že poté zvítězí? :)


Tímto příkladem jsem chtěl jen nastínit, že programování není o velké dřině, ale o neustálém přemýšlení nad tím, jak si svou práci co nejvíce usnadnit a zároveň přizpůsobit natolik, abych při nějaké změně nemusel brečet u šéfa, že je to strááášně složité a v podstatě nemožné :)

Vrátím se ale zpět k tématu tohoto článku. Proč jsem vlastně tak moc nadšený z Javy?

Důvod jsem již popsal, jsem líný člověk a nechci svůj mozek vyčerpávat věcmi, které jsou jednoúčelové. Stále porovnávám Javu s PHP. Vím, že porovnávat tyto dvě odlišné technologie je nesmysl, ale toto srovnání dělám na základě vlastních zkušeností a snažím se porovnat jejich použitelnost pro mou práci.

Po získání základních znalostí o objektech jsem měl v PHP problém je nějakým způsobem aplikovat do praxe. Základní API je celé procedurální a v rozjetém projektu jsem nebyl schopen nasadit žádný PHP framework, který by mi mohl mou práci usnadnit. Vydal jsem se vlastní cestou a napsal si svůj vlastní framework na ORM, DAO, Models, Views. Sice nic extra, ale pro mé účely postačující. Jenže... Co dál můžu v PHP chtít dělat, když jsem vázaný na webový kontejner Apache httpd, který musí být navíc natolik odlišně nakonfigurovaný, že se z aplikace stějně stal nepřenositelný moloch. Navíc další využití v menších projektech bylo téměř nulové. Práce s daty také žádný šlágr. Stálé psaní toho samého. Ani IDE (Eclipse a PDT) neposkytuje takový komfort jako v jiných jazycích.

Objekty jsem se hned od začátku učil na Javě, takže jsem věděl, že je to jazyk, který se drží nějakých zásad a má striktní typovou kontrolu, která mě drží na správné cestě a nevede do slepých uliček. Osobně jsem se ale do vývoje v Javě bál více pustit, protože přece jen nejsem žádný guru v oblasti objektů a programováním se zabývám tak 3 roky. Jenže teď jsem v práci dostal za úkol udělat aplikaci na tištění nějakých kartiček, která by běžela pouze na jednom PC a nebyla přes http.

Tak jsem se teď více vrátil k Javě a dělám Swing aplikaci, kterou mám z větší části hotovou. Když jsem zjistil, že mohu použít JPA i ve standalone aplikaci, byl jsem nadšený. Vím, že pak mohu vzít část tohoto projektu a rozjet ho jako webovou aplikaci. Mohl bych toto udělat v PHP? Asi ano, ale dělat v PHP pod GTK by byla jistě dobrá onanie.

I když nejsem žádný přeborník v Jave a většinu věcí zatím dohledávám po netu či píšu na konferenci na java.cz (za odpovědi ještě jednou děkuji), tak jsem schopen všechny překážky přeskočit (ovládání swing aplikace přes události, tisk, napojení na MySQL, atd. atd.), což mě vede k závěru, že už mi chybí jen zkušenosti, abych byl více produktivní v tomto jazyce.

Nadšený jsem zejména z věcí jako je Java Persistence API, díky čemuž objektově namapuji relační databázi a pak již pracuji s objekty a všemi základními vlastnostmi jako je dědičnost či polymorfismus. Navíc nemusím nic definovat v XML, ale hezky si tvořím anotace. Další věcí budiž Swing pro desktop, který je pomocí NetBeans tak snadno naklikatelný, že se jedná spíše o malý Photoshop :). JSF framework pro web. aplikaci mi zejména po použití navigátoru a různých vlastních komponent přišel jako geniální nástroj pro web. Také celé API Javy je natolik rozsáhlé, že snad všechno je v něm již implementované. Samotné standardní frameworky od Sunu jsou na tolik dobré úrovni, že zatím nepotřebuji nic jiného.

Co se týče vlastních zdrojů, musím zde ještě jednou zmínit portál java.cz a jeho emailovou konferenci. Jsem rád, že jsou zde inteligentní lidé a neřeší se zde věci typu: jak vypsat hello world. Dalším dobrým zdrojem jsou přednášky o Javě, které lze nalézt na http://avc.sh.cvut.cz. Než je člověk schopný začít číst z manuálu, také doporučuji tutoriály na netbeans.org. Ukázkové příklady lze nalézt na http://www.exampledepot.com/egs/index.html.

Zdrojů je vážně spousta, člověk musí jen hledat :)


Dobrým zdrojem informací jsou samozřejmě také knihy. Osobně jich o Javě vlastním pět. Ale o těch zase někdy příště. Tak co? Už jste dopsali čísla od 5 do 1000? :)

4 komentáře:

  1. Jn, máme na škole (střední :-)) kurz algoritmizace a každý děláme v nějakém jiném jazyku a je to trochu děs, ale domluvili jsme se na příští rok že se sjednotíme na Javu - tak už se těším, jak na příští školní rok, tak na další článek o Javě

    OdpovědětVymazat
  2. Ke psaní čísel v excelu - 1..30 bude rychlejší 1. skupina, 5..1000 bude rychlejší 2. skupina a absolutním vítězem bude ten, kdo odhadne ke které skupině se ve tom či onom úkolu přiřadit :)

    OdpovědětVymazat
  3. Naozaj nechcem nejak stlmit Vase nadsenie k Jave (dokonca som rad, ze nie som sam :) ), ale nie je vsetko az take ruzove. Kazde riesenie niecim trpi. Jednak Javu pouzivat na tvorbu webu sa neda. Nie ze by nebol ako jazyk pripraveny na to, naopak, velmy dobre sa v nom robi. Bohuzial ak pride klient (mala firma) ktora by chcela web prezentaciu (povedzme stredne rozsiahlu), na ktoru by ste pouzili rad Javu, asi Vas zhrozi fakt, ze je len velmy malo hostingu (v cr a sk tusim ani neni) kam by ste si tu prezentaciu mohli ulozit. Java sa oplati pri tvorbe tzv. enterprise aplikaciach pre firmy ktory maju na kupu vlastnych serverov prip. maju na to aby umiestnili apl. na nejaky housing (prip. na kvalitne pripojenie).
    PHP je jazyk zastarali, zaspal dobu, a teraz sa znazi prebudzat sa (nedari sa mi velmy), ale odporucam Vam sa pozriet aj na jazyk Ruby a jeho web framework Ruby on Rails.
    Co sa tyka newebovskych aoplikacii tam PHP nemozete zaradit, lebo je este stale len skriptovaci jazyk. Multiplatformovost Javy vsak prinasa ine problemy s efektivnostou (rychlostou) a tazkopadnostou v niektorych oblastiach. Sun ich vsak snazi odsranovat, takze naozaj zalezy na konkretnej aplikacii, ze ktory Jazyk sa oplati pouzivat. Alebo ci sa neoplati v Jave pouzit iny scriptovaci jazyk.

    OdpovědětVymazat
  4. Jsem si vědom nedostatků a vždy, když chci použít nějaké řešení, musím vědět, jak moc je používané v dané oblasti.

    Javu bych rozhodně chtěl nasazovat na intranet web. aplikaci, kterou v této chvíli píši stále v PHP. PHP není zastaralý jazyk, jen prostě neumožňuje takové možnosti. Asi je to moje deformace, ale žádnému PHP frameworku jsem nepřišel nikdy na chuť. PHP je skriptovací jazyk do chvíle, kdy v něm takto píšete. Ve chvíli, kdy si řeknete, že použijete nějaké objektové API, tak už to skriptování přestává být.
    PHP má několik výhod: je to jednoduchý skriptovací jazyk na naučení, je v něm rychlý vývoj, dobrá dokumentace, spoustu materiálů na internetu. Zbytek věcí jsou spíše nevýhody a těmi jsou především: neřízený vývoj, absence standardů při vývoji nových verzích, při použití ve větším projektu, se začnete ztrácet, navíc není vhodné na nic jiného, než na web.

    Asi v Jave nebudu psát redakční systém na weblog, nebudu v něm psát jednoúčelovou aplikaci na zobrazení jedné tabulky z DB. Prostě jako skriptovací jazyk je třeba ho chápat.
    Jinými slovy, spálil jsem se na tom, že jsem projekt vybudoval na PHP a dnes jsem si toho sakra moc dobře vědom. Jenže, není tak snadné říci, začneme znovu na nečem jiném a když porovnám možnosti mezi jednotlivými jazyky, tak Jav mi přijde jako nejlepší řešení (pro mé potřeby nejlepší).

    OdpovědětVymazat

Když programátor založí a řídí firmu

Jako malý jsem chtěl být popelářem. Ani ne tak proto, že bych měl nějaký zvláštní vztah k odpadkům, ale hrozně se mi líbilo, jak...