Jak to bude s Javou 7?

Vrátil jsem se po měsíci z Číny a tak o tom tady chci dát vědět. Nezbývá mi tedy než se trochu zamyslet na Javou 7, ne kterou čekáme už skoro pět let.

Poslední informace o aktuálním vývoji vypustil minulý týden ve svém blogu Mark Reinhold. Kupodivu stále mají problém s closures (projekt Lambda) a s modularitou (projekt Jigsaw). Kdo by to byl čekal. Jestli to nebude tím, že jsou to oboje dost zásadní změny. Přitom třeba slavný Jigsaw mi ještě letos na jaře připadal stále dost nedomyšlený. V zásadě se zamýšlejí na dvěma variantami.

Plán A: Vydat Javu 7 tak jak ji známe v polovině roku 2012.
Plán B: Vydat Javu 7 bez problematických částí příští rok. Zbytek pod jménem Java 8 v roce 2012

V diskuzi pod blogem se většina lidí přiklání k variantě B. Chtějí alespoň něco hned. Nechtějí čekat dalších pár let na něco, co často ani nepotřebují.

Podle tohoto blogu by plán B znamenal, že za rok bychom dostali:

  • Performance enhancements and bug fixes
  • Automatic resource management
  • NIO.2 (the new new I/O)
  • The fork/join framework
  • Diamond operator
  • Annotations in more places
  • invokedynamic and an API for method handles.
  • AWT/Swing tweaks: JLayer, translucent and shaped windows, and an “improved” security dialog
  • Minor language tweaks: strings in switch, underscores in literals, binary literals
  • Nimbus

Až v Javě 8, pokud někdy spatří světlo světa, by přišlo

  • Closures
  • The parts of the fork/join framework that depend on closures to be user-friendly
  • [] notation for lists and maps
  • Modularity (AKA “Project Jigsaw”)
  • Everything that already got dropped along the way for “lack of time”, such as the Swing Application Framework, bringing SwingX controls to the core API, date/time API

(vysvětlení jednotivých položek například zde)

Musím se přiznat, že pro mě je plán B velmi lákavý. Z Jigsawu mi vstávají vlasy hrůzou na hlavě. Closures by se mi sice hodily, ale obejdu se bez nich. On třeba i ten automatic resource management by byl elegantnější s closures. Trochu je mi líto toho date/time API, nechápu co může být na zkopírování knihovny Joda náročného.

Trochu mi ta situace připomíná Windows Vista aka Longhorn. O tom se taky hrozně dlouho mluvilo, měl mít spoustu krásných funkcí, několikrát se to odkládalo a všichni víme jak to dopadlo. Doufejme, že to se v Javě nestane. V programovacím jazyku je mnohem těžší říci „na tuto verzi zapomeňte, přejděte na vyšší“.

No nanejhůř se na Oracle vykašleme úplně, využijeme plánovanou funkci invokedynamic a přejdeme k nějakému novějšímu jazyku. Ale to bych opravdu nerad.

Debugging

Mám tu pro vás další knihu ze seznamu doporučené literatury. Jedná se o Debugging, kterou napsal David J. Agans. Tato kniha obsahuje několik pravidel, kterými by se měl člověk řídit, pokud hledá chyby jak v software tak i v čemkoliv jiném. Ta pravidla jsou následující:

  1. Pochopte systém – Přečtěte si manuál, zjistěte si jak se to má chovat, jak se mají chovat komponenty a podobně.
  2. Nechte to selhat – Pokud chceme odstranit chybu, musíme se ji naučit reprodukovat. Bez toho nemáme moc šanci zjistit co je špatně, a ani to, jestli už jsme to opravili.
  3. Přestaňte přemýšlet a začněte se dívat – Člověku se často stane, že uhodne důvod problému a pak už ignoruje všechny náznaky toho, že je chyba jinde. Tato rada nám připomíná, že máme přestat hádat a začít se pořádně koukat.
  4. Rozděl a panuj – Klasika, prostě si systém rozdělíme a zkusíme zjistit v které části ta chyba je.
  5. Měňte pouze jednu věc – Často se stane, že člověk zkusí udělat jednu opravu, ta nepomůže, tak udělá další a pak ještě další, až problém nakonec možná zmizí. Neúspěšné pokusy o opravu v systému nechá. To je chyba. Pokud oprava nepomohla, vraťte všechno zpět a až pak se pouštějte do dalších pokusů.
  6. Držte si kontrolní záznam – Pokud narazíte na problém, je dobré si napsat všechny okolnosti, které se při něm vyskytovali. Pokud je chyba dost zákeřná, bude se vám to hodit při analýze příčin. U software se tento bod dobře mapuje na logování.
  7. Zkontroluje zástrčku – Často je chyba v té nejsamozřejmější věci. V autě není benzín, počítač není v zásuvce, aplikace není spuštěna.
  8. Získejte čerstvý pohled – Nevíte si s něčím rady? Zkuste se někoho zeptat. Možná vám to docvakne při vysvětlování, možná něco napadne toho druhého. Důležité je, neříkat mu svoje hypotézy, ať ho nezatáhnete do stejné slepé uličky v které už jste vy.
  9. Pokus jste to neopravili, není to opraveno – Ano, pokud chyba zmizí sama od sebe, je pravděpodobné, že se znovu objeví. A to pravděpodobně v ten nejnevhodnější okamžik.

V knize jsou samozřejmě jednotlivé rady rozepsány do hloubky, ale největší přínos vidím právě v tom seznamu. Má potenciál člověka odpoutat od zákysu a donutit ho nezkoušet to samé pořád dokola. V knize je také hromada „válečných historek“, ale ty jsou většinou hardwarové. Něco ve stylu: „špatně se nám ukládala data v paměti, tak jsme mysleli, že to je způsobeno šumem na vodiči a ono to přitom bylo špatným signálem časovače. Ha ha ha.“ Pro člověka hardwarem nezasaženého jako jsem já zas tak zajímavé nebylo. I když, historku o tom, jak se někomu odmítalo rozjet auto, podle toho jakou si dal zmrzlinu jsem pochopil i já.

Takže abych to shrnul, kniha byla zajímavá, ale řekl bych, že se bez ní obejdete. Nejužitečnější je určitě ten seznam pravidel.

Dlouhý ocas

Už jsem tady tu knihu zmiňoval, ale teprve teď jsem se jí prokousal. Ano, mluvím o knize The Long Tail, kterou napsal Chris Anderson.

Celý obsah knihy se dá vyjádřit jediným obrázkem (ukradeno bez svolení autora).
Křivka poptávky

Zobrazuje počet stažení jednotlivých titulů ze serveru Rhapsody. Samozřejmě kniha není jenom o muzice, tvrdí v ní, že podobné rozložení se týká v podstatě všeho. Od kuchyňských mixérů, přes filmy, knihy, webové stránky, hledané termíny v Google až po příchutě piva.

Jak už název napovídá, kniha se zaměřuje hlavně na ten dlouhý ocas, tzn. na tu část grafu, která se nachází vpravo. Proč? Protože tu část vlevo všichni známe, tam jsou úspěšné hity, věci které se dají koupit v obchodě, věci které uvidíte v kině nebo televizi. Ale kromě nich existuje spousta dalších. Dokonce těch věcí, které nejsou takto středněproudé je mnohem, mnohem víc. (Proč graf vypadá tak jak vypadá se můžete dočíst v „V Pavučine Sítí“)

Schválně zkuste hádat. Kolik knih z prvních 100 000 titulů prodávaných na Amazonu se prodá alespoň jednou za čtvrt roku? Troufnete s tipnout? Nebojte, já jsem byl taky úplně mimo. Tak kolik? Prý je to 98%. Jinými slovy, Amazon prodá alespoň jeden výtisk z 98 000 titulů! Odhaduji, že na celém Václaváku mají k dispozici tak čtvrtinu, nemluvě o tom kolik z toho prodají. To je ostatně hlavní ponaučení z toho obrázku. Tam se pohybujeme v pomyslném žebříčku hitů na miliontém místě a přeci nejsme na nule. I tak hluboko se občas něco prodá!

Jiný z pohledů, kterým se na obrázek můžeme dívat je, že budeme ignorovat konkrétní data a budeme se na něj dívat jako na ideální křivku poptávky. Hodně lidí touží po hitech, proto máme tu špičku vlevo. Každý z nás má ale svoje zvláštní choutky, svoji niku (niche), která je pro něj specifická. Tato vlastnost formuje poptávku vpravo.

V dávné době kamenných o fyzického zboží, ale bylo fyzicky nutné omezit nabídku. Náklady na výrobu, skladování, prodej a dopravu zboží jednoduše na grafu nakreslí čáru, za kterou se prostě nevyplatí dané zboží prodávat.

Dnes ale žijeme ve století ovocného netopýra a existuje spousta produktů, která se dá vyprodukovat a prodat skoro zadarmo. Dlouhý ocas se nás tedy dotýká mnohem a mnohem více. V zásadě se spojily tři faktory, které umožňují realitě, aby dostihla tuto ideální křivku poptávky. První z nich je demokratizace výrobních prostředků. Ano dávný Marxův sen je konečně tu. V podstatě každý (na té šťastnější polokouli) má prostředky a dost času produkovat svoji hudbu, filmy, knihy, víno, obrazy… prostě (téměř) cokoliv. Tento faktor protahuje ocas doprava. Pak tu máme demokratizaci distribuce. Jinými slovy internet. Ten umožňuje komukoliv své výtvory distribuovat. Tento faktor dlouhý ocas zesiluje. No a nakonec tu máme propojení poptávky s nabídkou. Je to hlavně Google ale i různá doporučení na internetu od iTunes, přes Amazon až po blogy nebo Facebook. Tento faktor přesouvá lidi od hitů směrem doprava.

Jaké jsou důsledky? Například údajně stále méně lidí kouká na televizi. Proč? Protože mají volbu, můžou koukat na to co chtějí, ne na to co jim někdo vybere. Zeptejte se velkých hráčů zábavního průmyslu jaké to mělo důsledky pro ně. I když vlastně za jejich problémy můžou piráti, já zapomněl.

Samozřejmě jsou tu i pozitivní důsledky. Pokud proti tomuto trendu nebojujete, ale přimete ho za svůj, můžete na něm i vydělat. Protože pokud vás napadne spočítat si plochu toho ocasu, zjistíte, že je skoro stejně velká jako ta část vlevo! Takže pokud se vám ho podaří tuto poptávku nasytit, můžete na ní vydělat stejně nebo i víc než na hitech (ještě se tam projevuje marže, ale do takových detailů zabíhat nebudu). Pokud se vám tedy podaří za podstatě nulových nákladů prodávat velké množství knih, muziky nebo třeba inzerátů, máte na důchod vystaráno.

Tedy pokud jste ve správné části toho kolotoče. V doslovu posledního vydání se totiž dočtete jednu zásadní informaci. Na celé té mašinérii se podílí tři typy hráčů. Spotřebitelé, výrobci a agregátoři (viz. tři faktory výše). Spotřebitelé získávají možnost volby, výrobci si najdou těch svých pár spotřebitelů, ale ti hlavní kdo na tom vydělávají jsou agregátoři. To je ten Google, Apple, Amazon a eBay. Ti nic neprodukují, jenom spojují nabídku s poptávkou. Takže vlastně nic nového.

Ještě si neodpustím povzdechnutí, proč to u nás sakra nefunguje u videa a určité míry i hudby. Proč si nemůžu za rozumný peníz legálně stáhnout z internetu co chci. Proč se těch málo internetových obchodů co tu funguje chová jako kamenný obchod a mají v nabídce hrstku titulů? To se mi nějak nedaří pochopit. Ještě, že alespoň ty pivovary to u nás pochopily.