středa 14. listopadu 2007

Google Phone Android obsahuje Google Javu: Dalvik

Poté, co Google ohlásil, že platforma pro mobilní telefony s názvem Android bude obsahovat Javu, pookřálo srdéčko všech Java programátorů a vyplázlo jazyk na Apple, jehož iPhone Javu nepodporuje. Předčasně.
Java v Androidu nazvaná Dalvik totiž neodpovídá ani standardu Java ME (Mobile Edition) určené do mobilních zařízení ani standardu Java SE (Standard Edition) určené pro počítače, ale obsahuje část balíků z Java SE packages (konkrétně z implementace Apache Harmony), balíky Apache Commons, HTTPclient, jUnit a vlastní balíky pro vykreslování uživatelského rozhranní, pro telefonování, posílání SMS a power management (v balících android.*), viz seznam balíků.
A co víc, Dalvik nepoužívá standardní formát souborů Javy (.class), ale má svůj optimalizovaný formát .dex, do kterého je potřeba .class soubory přeložit (případně použít plugin do Eclipse, který umí .dex soubory vyrobit rovnou).
Pro uživatele i vývojáře to znamená, že na Androidu nepoběží ani aplikace pro mobily ani pro stolní počítače, ale že bude aplikace pro Android nutné upravit. Už dnes je potřeba pro jednotlivé mobily aplikace upravovat a Dalvik situaci rozhodně neulehčí. Toho si je asi Google vědom a zřejmě i proto vypisuje soutěž o 10 milionů dolarů pro vývojáře aplikací pro Android.
V tomto kontextu nelze nevzpomenout Microsoft a jeho pokus vytvořit vlastní nekompatibilní verzi Javy (J++/J#), který skončil u dlouho se táhnoucího soudu, který nakonec skončil vítězstvím pro Sun a Microsoft se poté snah na poli Javy úplně vzdal.
Nicméně v tomto případě to nebude až tak jednoduché, protože Google jen vzal knihovny z projektu Harmony a dalších, použil stejný formát souboru se zdrojovým kódem, ale pokud Dalvik nebude označovat za Javu, je možné, že z právního hlediska bude vše v pořádku.
Nutno ale dodat, že za vzniklou situaci si do jisté míry může Sun sám svým přístupem a přílišnou konzervativitou v oblasti zavádění a přijímání standardů. Když od stolu vymyslí něco sám, tak je to učiněná katastrofa (EJB 2.0) nebo je technologickým leaderem někdo jiný a Sun pak se standardizováním nestíhá držet krok (Hibernate, Spring) a nebo v nejhorším případě standardní řešení mají nedostatky, které si jednotliví výrobci odstraňují po svém (Java ME) nebo poskytnou náhradu (SWT za Swing).
Z tohoto pohledu je pak Davlik jen bolestným logickým vyústěním.
Via: OnJava

pondělí 12. listopadu 2007

JAXB 2 a JAXBElement

JAXB (Java Architecture for XML Binding) je technologie, pomocí které se Java objekt převede do XML a naopak. Pokud máme už hotové XML Schema zamýšlených XML dokumentů, je vhodné si pomocí nástroje XJC vygenerovat odpovídající javovské třídy.
XJC ale někdy vygeneruje jako atributy třídy typu JAXBElement, do kterých je zabalen výsledný typ:
protected JAXBElement<String> pokus;
místo prostého
protected String pokus;
Odpověď je nutné hledat v XML schématu, které obsahuje definici
<xs:element name="pokus" minoccurs="0" nillable="true" type="xs:string" />
Pak totiž v příslušném XML mohou nastat tři situace:
  1. element pokus se v dokumentu (normálně) vyskytuje
  2. element pokus se v dokumentu nevyskytuje (minOccurs="0")
  3. element pokus se v dokumentu vyskytuje, ale má nastaveno xsi:nil="true" (nillable="true")
K tomu, aby JAXB rozlišil mezi druhými dvěma případy, které oba reprezentují prázdnou hodnotu, zabalí si atribut do pomocného objektu JAXBElement.
Řešení je snadné: reprezentovat prázdnou hodnotu jen jedním způsobem, ale dá se použít jen v případě, že schéma můžete upravovat...

pondělí 5. listopadu 2007

Jaké bude moje další PDA?

V současné době jsem spokojeným vlastníkem FSC N560 a i když momentálně nemám důvod měnit, neškodí se porozhlédnout po konkurenci a udělat si výhled do budoucna.

Při výběru je potřeba vyřešit základní dilema: mít zvlášť mobil a PDA nebo mít smartphone, který kombinuje oboje v jednom. Dvě zařízení mají výhodu, že dvě baterie vydrží delší dobu, když nepotřebuju PDA můžu ho nechat doma a pak to, že zařízení s VGA (640x480), GPS a GSM se z důvodu nízké výdrže baterií nevyrábí (výjimkou má být Neo, na to jak dlouho vydrží jsem moc zvědavý).


Fujitsu-Siemens N560, display 640x480, Wi-Fi, bluetooth, GPS, (nemá GSM), Windows Mobile

OpenMoko Neo1973, display 640x480, GSM/GPRS, GPS, bluetooth, Wi-Fi (první model ho neměl), Linux

Nokia N810, display 800x480, bluetooth, GPS, Wi-Fi, (nemá GSM), Linux

Apple iPhone: display 320x480, GSM/EDGE, Wi-Fi (nemá USB, nemá GPS, baterie se nedá vyměnit, neumí MMS, hlasové vytáčení, hledání v seznamu), MAC OSX
Apple iPod touch: dtto, ale bez GSM/EDGE

Nebo snad dnes oznámený Google Phone s kódovým názvem Android, který v alianci Open Handset chystá Google spolu s firmami T-Mobile, Intel, NVIDIA, LG, Motorola, eBay a dalšími.

XSLT a výstup do více souborů

Před nedávnem psal Štěpán o tom, jak pomocí XSLT zpracovat vstup z více souborů a jí se dnes přidám s řešením opačného problému.
XSLT (Extensible Stylesheet Language Transformations) je způsob, jak pomocí XML šablony z jednoho XML dokumentu vyrobit jiný (nejčastěji taky XML) dokument. Ale co když potřebujeme ze zdojového souboru vyrobit dva a víc výsledných souborů?

XSLT 2.0
Pokud náš XSL procesor podporuje normu XSLT 2.0, máme vyhráno. Kouzelný příkaz se jmenuje xsl:result-document a atributem href se určí jméno souboru do kterého bude směřovat výstup. Více v článku Create multiple files in XSLT 2.0 na DeveloperWorks.

XSLT 1.0/1.1
Ve starší normě výstup do více souborů standardizován není, ale snad každý procesor nabízí své rozšíření, pomocí kterého toho jde dosáhnout. Nevýhodou ale je, že takový způsob není samozřejmě přenositelný mezi různými XSL procesory.

Postup pro XSL procesor Xalan-J je následující:
Do XSL šablony elementu xsl:stylesheet přidáme atributy xmlns:redirect="http://xml.apache.org/xalan/redirect" a extension-element-prefixes="redirect", čímž si zpřístupníme xalanovské rozšíření Redirect.
Potom můžeme použít element redirect:write select="jmenosouboru", který zařídí výstup do požadovaného souboru. (Viz kompletní popis rozšíření Redirect.)

pátek 2. listopadu 2007

Hurámanažer

Hurámanažer je označení, které mě naučil Štěpán a je to to správné slovo pro určitou sortu lidí, která neumí cokoli naplánovat a díky tomu pak nahrazuje plán chaosem.
Například je pro ně naprosto nepochopitelné, že když se práce v nějakém bodě třeba o týden zdrží (nejčastěji proto, že oni sami nedodali potřebné odklady, protože je nezačali shánět s předstihem, ale až ve chvíli kdy jsou potřeba), tak tím pádem jsou o týden zdržené i všechny následující úkony.
Však ono se to nějak splichtí, ono se to vytelefonuje.
Nejhorší, co může oběť hurámanažera potkat je, že před ním zmíní, že následky svého vlastního zdržení dohnala prací v noci nebo o víkendu. Takovou informaci hurámanažer uloží do truhličky mezi nejcennější dukáty. Vytahuje ji příště v případě sebou zaviněného zdržení a sám ochotně nabízí: "Trochu se to zdrželo, ale vy to určitě doženete o víkendu".
Hurámanažerovi to vůbec není divné, protože on díky neschopnosti vytvořit nebo dodržet plán "pracuje" pracuje prakticky pořád. Z takového člověka se pak stává takový trochu nedobrovolný workholik, který neustále něco dělá, ale na rozdíl od klasického workholika s násobně menšími výsledky.
Smutné je, že hurámanažer bývá u zaměstnavatele oblíben, protože on přece pořád něco dělá, něco řeší, pracuje ve dne, v noci, o víkednu, a občas se mu podaří věci dostrkat do úspěšného a snesitelně zpožděného konce.

Typická je historka z telefonního hovoru, který jsem nedobrovolně vyslechnul. Hurámanažerovi volali z tiskárny, že nemají podklady aby mohli tisknout, a proto zakázka nemůže být dodána v domluveném termínu. Hurá manažer briskně zjistil, jak se věci mají a volal zpět do tiskárny, aby je informoval o tom, že z poloviny už podklady jsou hotové a že na druhou polovinu je ještě potřeba vymyslet text a cenu produktu. A samozřejmě měl hned řešení: v tiskárně vytisknou zatím jen levou polovinu billboardu a pravou začnou tisknout hned, jak budou dodané podklady. Nevím, jestli rána, která se ozvala z telefonu, a kterou jsem slyšel i já, byla od toho, jak tiskařovi spadla čelist až na zem nebo od toho, jak vztekle něčím prásknul...

Výsledky ankety:
znám jich několik
5 (45%)
znám aspoň jednoho
3 (27%)
žádného neznám
1 (9%)
nic takového není
1 (9%)
já jsem hurámanažer!
1 (9%)

Jaký používáte na PDA prohlížeč?

Vyhodnocení ankety:

nemám PDA: 10 (41%)
Opera : 7 (29%)
Pocket IE: 3 (12%)
Minimo 2: (8%)
Netfront 2: (8%)
jiné prohlížeče (Thunderhawk, Webby, Multi IE,...) 0 (0%)