java blog jAbLoK

... řekněte Javě Ja!

/** * @author Tomáš Zvěřina * @date 30.1.2004 v 17:23 */

Jakarta POI 2.0 FINAL

Před nedávnem jsem tu pěl chvalozpěvy na Jakarta POI. Pokud vás můj přízpěvěk nezlákal, dovolím si tuto knihovnu připomenout u příležitosti zveřejnění verze 2.0 FINAL.

Abych tu nemlátil prázdnou release slámu, přihodím krátkou ukázku (nebo spíš postrčení) jak generovat Excellové sheety Servletem. Nevím jak vy, ale já jsem požadavek na generování spread sheetů a jejich stahovaní "do ekscelu" implementoval víckrát.

public class XLSServlet extends HttpServlet {

  ...

  protected void doGet(
    HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {

    // Získáme data, která chceme zobrazovat,
    // získáme instanci HSSFWorkbook ...

    HSSFWorkbook wb = new HSSFWorkbook();

    // ... dříve popsaným způsobem naplníme daty a pošleme ji "ven"

    response.setContentType("application/vnd.ms-excel");
    response.addHeader("content-disposition", "attachment;filename=nase-tabule.xls");

    OutputStream os = response.getOutputStream();
    wb.write(os);

    // protřepat, nemíchat, pochytat výjimky.

  }

  ...

}

Updated: Já trubka jsem přehlédl, že o finálním POI už stihl napsat Koles. Nemějme mi to za zlé.

/** * @author Lucie Rút Bittnerová * @date 28.1.2004 v 13:19 */

Game API a MIDP 1

Zatím se J2ME používá v drtivé většině případů k vývoji her. Tomu vychází vstříc i balík javax.microedition.lcdui.game, který přibyl do druhé verze specifikace MIDP. Tento balík je celkem prakticky navržen a všichni se už určitě těší, až se nebudou muset zabývat profilem MIDP 1 jen proto, že je MIDP 2 zatím jen na pár telefonech.

Pokud vás taky napadlo si toto herní API implementovat pro vývoj pod MIDP 1, můžete si narozdíl od nás ušetřit práci a použít MicroPorts.

Není tam sice z pochopitelných důvodu, jako jsou nedostatky MIDP 1, implementována kontrola kolizí na úrovni pixelů, ale jinak by tam mělo být z herního API vše. Neobfuskovaný jar má necelých 18kB, takže po použití obfuskátoru by ani velikost tohoto balíku neměla být překážkou.

Pokud vám herní API zatím nic neříká, můžete si přečíst třeba tenhle článek.

/** * @author Pavel Kolesnikov * @date 28.1.2004 v 09:23 */

POI 2.0 aneb Java a MS formáty

Včera vyšla verze 2.0 knihovny Jakarta POI, která definuje a implementuje Java API pro čtení i zápis do formátů Microsoft Office.

Mezi novými funkcemi kromě spousty bugfixů a jiných rozšíření potěší zejména podpora vzorců v Excelových dokumentech.

/** * @author Pavel Kolesnikov * @date 27.1.2004 v 15:50 */

Cocoon podporuje JSR-168

Podle jednoho z posledních commit logů by Cocoon měl čerstvě obsahovat podporu JSR-168 neboli Portlet API (píší na Java.Net News). Podle jiných narychlo vygooglovaných poznámek tohoto vývojáři dosáhli zakomponováním čerstvého projektu Jakarta Pluto, který se má stát referenční implementací portlet containeru.

/** * @author Pavel Kolesnikov * @date 27.1.2004 v 10:12 */

Java 1.5 přináší "Class data sharing"

Článek "Shared core classes feature included in Java 1.5" na TheServerSide.com se zabývá milým faktem, že od minulého pátku Java 1.5 obsahuje i řešení do té doby nejpopulárnějšího požadavku na Javovské bugparádě — lidé nebyli příliš nadšeni z toho, že při spuštění prográmku typu "hello world" si Java Virtual Machine natáhne do paměti tuny tříd, a aby toho nebylo málo, při opakovaných spuštěních si tyto tuny natáhne znovu.

Nově zavedená vlastnost nazvaná Class data sharing (CDS) pochází z macovské implementace JVM, k dispozici nebude na starších windows (95/98/ME). Spočívá v tom, že při instalaci JRE instalátor vytvoří "sdílený archív", tj. asi 5 až 6 MB velký soubor, obsahující interní reprezetaci některých základní tříd (nepoužíváte-li instalátor, je možné tento soubor vytvořit i manuálně). Tento sdílený archív je read-only namapován do paměti a tudíž jej může používat vícero instancí JVM, aniž by musely něco tahat znova a znova.

Takže s verzí 1.5 se můžeme těšit na to, že i malé aplikace budou startovat rychlostí, která odpovídá spíše jejich velikosti než velikosti Java Virtual Machine :) A doufám, že takový ant se v tomto kontextu za malou aplikaci považovat dá.