pátek 7. května 2004

Proč java.util.Properties není bezpečný

Při vývoji javy v momentě, kdy nový java.util.Map nahradil starší java.util.Hashtable, již existovala třída java.util.Properties, který dědila z java.util.Hashtable, ta tehdy neměla metody put a putAll, které přinesl až interface java.util.Map. Jenomže v rámci sjednocení Collections frameworku byly i do java.util.Hashtable zavedeny metody z java.util.Map. A tedy se do java.util.Properties dostali metody put(Object key, Object value) a putAll(Map map). Takže nyní můžete vložit i do java.util.Properties (které má reprezentovat tabulku Stringů klíč - hodnota) i libovolné objekty. Na tento bezpečnostní problém upozorňuje i javadoc k java.util.Properties.

Jen tak na okraj, já samozřejmě nečtu javadoc k notoricky známým třídám, za což si sypu popel na hlavu, takže na tuto vlastnost mě upozornila až kniha Java efektivně - 57 zásad softwarového experta.

Java kód pro více verzí JDK

S příchodem javy 1.4 byly na několika základních třídách provedeny změny, které mohou vadit, pokud potřebujete mít kód kompilovatelný jak pod starším jdk 1.3 i pod novějším jdk 1.4. V prvním článku najde postup, jak upravit váš kód (pomocí reflection a strategy patternu), aby vyhovoval oběma jdk a jak pomocí Anta importovat správný package (tj. pro kompilaci pod jdk 1.3 pouze importy pro tuto platformu, a pro kompilaci pod 1.4 zase jiné importy). Druhý článek objasňuje význam a použití kompilačních parametrů -target a -bootclasspath pro kompilování pod různými verzemi jdk.

středa 5. května 2004

Měření nepodstatných veličin

Už jsem si zvyknul na fakt, že v oblasti hardwaru se měří absolutně vše, ale s podivem začínám zjišťovat, že se tato praktika začíná přenášet i do oblasti softwaru. Důkazem tohoto je Bench JS testující rychlost vykonávání klientského skriptu v prohlížeči.

Abych zabránil případnému nedorozumění, tak podotýkám, že proti měření výkonu jako základního atributu dané veličiny např. procesoru, nic nemám. Nenacházím ovšem jediný příklad, kde by se výsledky měření rychlosti vykonávání klientského skriptu v prohlížeči hodily. Rychlost vykonávání u jednotlivých skriptovacích enginu dnešních prohlížečů není ve většině případů rozhodující oproti kompatibilitě s ECMAScriptem a DOM.

Měření, která by byla mnohem zajímavější a jejich výsledky by poskytly užitečné informace, nejsou nijak dalece vzdáleny původní myšlence. Proč například neporovnat rychlost určitých částí DOM oproti původnímu DHTML, jako to udělal Peter Paul Koch v případě DOM vs. innerHTML.

Související články

úterý 4. května 2004

J2ME - Soutěž START 2004

Tvoříte hry nebo aplikace pro mobilní telefony? Pokud ano, tak by Vás mohlo zajímat, že Společnosti Eurotel Praha spol. s r.o. a společnost United Pages (UPMOBILE) vyhlašují 1.ročník soutěže Start 2004 o nejlepší java aplikaci určenou pro mobilní telefony( viz. tisková zpráva).

Samotná soutěž má dvě kategorie, aplikace herního a neherního charakteru. Podobné akce jsou pro programátory dobrým zpestřením a slouží zároveň pro konfrontaci s ostatními programy, pro partnery soutěže to je samozřejmě reklama.

pondělí 3. května 2004

Distribuce JRE

Pokud máme produkty postavené na platformě Java, musíme zajistit odpovídající běhové prostředí (JRE) pro tuto platformu. Pokud máme distribuční médium(CD, DVD), nabízí se zakomponování JRE jako součásti distribuce.

Jak je to s licencí?

Již delší dobu jsem pátral po tom, jak je to z licencí k JRE od firmy Sun. Prvním důležitým faktem je, že licenční podmínky uzavíráte(odsouhlasíte) při downloadu JRE. Licenci je možné najít jak na stránkách Sunu(např. licence k j2re 1.4.2.02) nebo v instalačním adresáři.

Při studiu licence je nejzajímavější část SUPPLEMENTAL LICENSE TERMS. Vzhledem k tomu, že mě to s kolegou zajímalo a netroufli jsme si dělat závěry, položili jsme dotaz přímo na českou pobočku firmy(sales@czech.sun.com).

Dotaz:

Dobrý den, chtěl bych se zeptat, zda-li je možno zahrnout Java Runtime Library (JRE) jako součást distribučního CD. JRE by tvořilo instalační doplněk, který potřebujeme k běhu aplikačního serveru, jenž je předmětem distribuce.

Odpověd:

Dobry den, jre je mozno distribuovat pri splneni licencnich podminek, ktere jste odsouhlasili pri downloadu JRE. V praxi to znamena - nemenit jmeno, funkcnost, licenci, atd. S pozdravem Ales Novak