java blog jAbLoK

... řekněte Javě Ja!

/** * @author Tomáš Zvěřina * @date 13.3.2004 v 11:48 */

Časování úloh v Javě

Čas od času se hodí nějakou úlohu načasovat na pozdější spuštění. Časem člověk zjistí, že nemá čas vyvíjet vlastní časovač a včas se poohlédne po existujícím řešení (třeba v nějakém časopise :-).

Pěkný článek na toto téma vyšel na ONJava.com. Popisuje jednak použití java.util.Timer, což je taková threadová legrácka, která nic zázračného negarantuje (ovšem použití se pro ni rozhodně najde), a jednak knihovnu Quartz, která se naopak tváří velmi sofistikovaně.

Kromě toho by se asi slušelo připomenout, že u J2EE aplikací může něco podobného poskytovat už aplikační kontejner.

/** * @author Pavel Kolesnikov * @date 11.3.2004 v 12:54 */

Lomboz jako open-source

Populární eclipse plugin pro vývoj J2EE aplikací Lomboz je od MDŽ open-source. (via TSS).

/** * @author Pavel Kolesnikov * @date 10.3.2004 v 17:22 */

Pár rad pro psaní přenositelných J2ME aplikací

Článek Avoid the 9 Common Flaws of Unportable Mobile Java Apps může pomoci začínajícím vývojářům mobilních aplikací v jazyce Java, kteří už slyšeli o heslu "write once, run anywhere", a rádi by jej naplňovali i ve svých výtvorech.

Mobilní Java je teprve v plenkách, je proto velmi pravděpodobné, že se dostanete do situace, kdy požadavky velí psát nepřenositelně. To ale neznamená, že bychom se neměli snažit takovéto případy omezovat.

Spousta uvedených doporučení může zkušenějším programátorům připadat zjevná, i pokud by v životě neviděli mobil. Ale pokud pro vás byla Java v mobilech impulsem, proč začít programovat, pak je tato stránka právě pro vás.

/** * @author Pavel Kolesnikov * @date 10.3.2004 v 14:17 */

Vyšlo j2sdk 1.4.2 04, už umí porovnávat řetězce s češtinou

Java 1.4.2 oproti předchozí verzi 1.4.1 přinesla záludnou chybu, která se projevovala při práci s řetězci pomocí regulárních výrazů (tj. metody String.match apod.). Pokud totiž váš řetězec obsahoval jiné než iso-8859-1 (neboli iso latin1) znaky, pak porovnávání prostě nefungovalo.

Názorně: následující prográmek pro několik jednoznakových řetězců pomocí String.match() kontroluje, zda tento řetězec obsahuje znak různý od většítka (v řeči regulárního výraziva "^>"). Překvapivě však u znaků, které nejsou zahrnuty v iso-8859-2, tvrdil, že znak různý od většítka nevedeme:

public class J142replaceAllTest {

    public static void main (String[] args) {
        System.out.println("\u011b=[^>]: "+"\u011b".matches("[^>]"));
        System.out.println("\u0161=[^>]: "+"\u0161".matches("[^>]"));
        System.out.println("\u010d=[^>]: "+"\u010d".matches("[^>]"));
        System.out.println("\u0159=[^>]: "+"\u0159".matches("[^>]"));
        System.out.println("\u017e=[^>]: "+"\u017e".matches("[^>]"));
        System.out.println("\u00fd=[^>]: "+"\u00fd".matches("[^>]"));
        System.out.println("\u00e1=[^>]: "+"\u00e1".matches("[^>]"));
        System.out.println("\u00ed=[^>]: "+"\u00ed".matches("[^>]"));
        System.out.println("\u00e9=[^>]: "+"\u00e9".matches("[^>]"));
        System.out.println("\u011a=[^>]: "+"\u011a".matches("[^>]"));
        System.out.println("\u0160=[^>]: "+"\u0160".matches("[^>]"));
        System.out.println("\u010c=[^>]: "+"\u010c".matches("[^>]"));
        System.out.println("\u0158=[^>]: "+"\u0158".matches("[^>]"));
        System.out.println("\u017d=[^>]: "+"\u017d".matches("[^>]"));
        System.out.println("\u00dd=[^>]: "+"\u00dd".matches("[^>]"));
        System.out.println("\u00c1=[^>]: "+"\u00c1".matches("[^>]"));
        System.out.println("\u00cd=[^>]: "+"\u00cd".matches("[^>]"));
        System.out.println("\u00c9=[^>]: "+"\u00c9".matches("[^>]"));
        System.out.println("\u016e=[^>]: "+"\u016e".matches("[^>]"));
        System.out.println("\u016f=[^>]: "+"\u016f".matches("[^>]"));
    }
}

A proto je fajn vědět, že nová 1.4.2 04 (stejně jako nedávno vydaná beta 1.5) už tímto neduhem netrpí.

/** * @author Tomáš Zvěřina * @date 10.3.2004 v 09:25 */

Trocha J2EE optimalizace

V rozporu s radou číslo 37 z knihy Java efektivně, 57 rad zásad softwarového experta (Joshua Bloch, Grada, 2002), která říka:

Pravidlo 1: Neoptimalizujte

Pravidlo 2 (pro experty): Zatím neoptimalizujte

vám doporučím stručný přehled J2EE zásad: Some J2EE Performance Tips.

/** * @author Pavel Kolesnikov * @date 8.3.2004 v 19:13 */

Změny v J2SE 1.5 a reflection API

Ve verzi 1.5 k nám přichází spousta mnohokráte zmíněných vylepšení — generické datové typy, metadata a spousta dalších. Tyto změny v jazyce se pochopitelně musí promítnout i na možnostech reflection API. A právě o tom, jak reflexí pracovat s metadaty či generickými typy je článek Reflection on Tiger od Michaela Nascimento Santose. Trochu se nám to komplikuje... :)

/** * @author Pavel Kolesnikov * @date 8.3.2004 v 10:15 */

JBoss Nukes 1.0

Minulý víkend oznámil Julien Viet první verzi Content Management Systému od JBosse — JBoss Nukes. K podrobnějšímu popisu se doufám dostanu v blízké budoucnosti, zatím jen pár charakteristik:

  • sestává se z mikrokernelu a hotdeployovatelných modulů
  • vychází z PHP projektu PostNuke, jedná se tedy primárně o systém správy webového obsahu
  • běží pod ním např. stránky JBossu
  • dává vývojářům modulu značnou svobodu v tom, jak budou své moduly vyvíjet (což JBossáci uvádí jako plus, osobně si tím tak jistý nejsem ;))
  • silně využívá JBossích specialit. Netuším, jestli je funkční i na jiných J2EE serverech než JBoss, každopádně od začátku tohoto projektu byl cílem CMS na JBossu, nikoli standardní a všude funkční J2EE CMS

Pár dalších drobností najdete v JBossím blogu