Ohlédnutí za marketingem Javy 7

Úvaha o více i méně viditelných novinkách v Javě 7.

Číslování anonymních tříd

Zápisky z řešení problému, který byl způsoben různým výstupem javacu a Eclipse JDT.

Akumulátor test a Java 8

Paul Graham v článku Revenge of the Nerds píše, že kdybyste se Dilbertova šéfa zeptali, v čem naprogramovat software, tak vám odpoví: Java. Ale jazyky se svými schopnostmi liší. Ukazuje to sice na akademické a nepraktické úloze, která ovšem o jazycích leccos vypovídá. Úlohu jsem si připomněl v souvislosti s uvedením Javy 8. Zajímalo mě, jak...

SLF4J a Spring MVC a Jetty a Maven so spoločným logback.xml

Embedded Jetty v Mavene je skvelý príklad mäteže logov. Ako presvedčiť server, aby logoval rovnakým spôsobom ako vaša aplikácia, ak používate Spring?

SLF4J a Spring MVC a Jetty a Maven

Ako naštartovať logovanie v springáckej MVC aplikácii, ktorá sa testuje na Jetty kontajneri spúšťanom v Mavene?

Výkon regulárních výrazů v Java

Also available in English - Java Regular Expressions Performance.Když jsem programoval jednu aplikaci narazil jsem na zvláštní chování na produkčním prostředí. Pomocí profilace nástrojem Java Visual VM bylo jednoduché během chvíle dohledat, že velký čas aplikace tráví zpracováním regulárních výrazů. Pak stačilo pár malých změn a rázem aplikace...

Dizajnové čriepky: anonymné vnútorné triedy 2

Druhý diel traktátu o anonymných vnútorných triedach. Ako pristupovať k premenným z vonkajšej triedy a ako obabrať technické a syntaktické obmedzenia.

Pohled pod kapotu JVM (11.část - instrukce pro tvorbu polí a přístup k prvkům polí)

Počet již popsaných instrukcí virtuálního stroje Javy se nám utěšeně zvětšuje. V dnešní části seriálu o programovacím jazyce Java i o JVM se zaměříme na popis dalších dvaceti instrukcí. Bude se jednat o instrukce používané pro vytváření polí různých typů a pro přístup k prvkům těchto polí.

Pohled pod kapotu JVM (10.část - instrukce pro práci s třídami a objekty)

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM se již popáté budeme zabývat popisem instrukčního souboru virtuálního stroje Javy. Zaměříme se na popis instrukcí, které jsou určené pro práci s třídami a objekty, zejména na instrukce pro přístup k atributům a metodám tříd i objektů.

Pohled pod kapotu JVM (9.část - tajemství instrukcí lookupswitch a tableswitch)

V dnešní části seriálu o jazyce Java a JVM se již počtvrté budeme zabývat popisem instrukčního souboru virtuálního stroje Javy. Zaměříme se především na dvojici poměrně komplikovaných instrukcí nazvaných tableswitch a lookupswitch, pomocí nichž se implementují větvení programů realizované příkazy switch.

Pohled pod kapotu JVM (8.část - instrukce určené pro řízení běhu programu)

V dnešním článku o jazyce Java i JVM se již potřetí vrátíme k instrukčnímu souboru zpracovávanému virtuálním strojem Javy. Popíšeme si instrukce sloužící k řízení běhu programu. Jedná se o instrukce pro ukončení metody s předáním návratové hodnoty, nepodmíněné a podmíněné skoky a taktéž o instrukce pro rozvětvení.

Pohled pod kapotu JVM (7.část - další instrukce zpracovávané virtuálním strojem Javy)

V dnešním článku o jazyce Java budeme pokračovat v popisu instrukčního souboru zpracovávaného virtuálním strojem. Popíšeme si instrukce používané pro provádění aritmetických a bitových operací a také instrukce sloužící pro porovnání dvou hodnot. Na těchto instrukcích je mj. založeno i řízení běhu programů.

Pohled pod kapotu JVM (6.část - instrukční soubor virtuálního stroje Javy)

V dnešní části seriálu o programovacím jazyce Java si popíšeme první část instrukcí tvořících instrukční soubor virtuálního stroje Javy. Jedná se o instrukce sloužící pro uložení konstant na zásobník operandů, instrukce pro přesuny dat mezi proměnnými a zásobníkem operandů a taktéž o konverzní instrukce.

Pohled pod kapotu JVM (5.část - popis virtuálního stroje Javy)

V dnešní části seriálu o programovacím jazyce Java se budeme zabývat popisem vlastního virtuálního stroje Javy, v němž jsou zpracovávány instrukce bajtkódu tvořící těla jednotlivých metod. Popíšeme si strukturu virtuálního stroje v době běhu aplikace a nezapomeneme ani na základní informace o instrukčním souboru.

Pohled pod kapotu JVM (4.část - dokončení popisu struktury souborů .class)

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM dokončíme popis struktury bajtkódu, tj. souborů s koncovkou .class generovaných (většinou) překladačem Javy. Řekneme si, jakým způsobem jsou uloženy informace o datových položkách tříd, rozhraní či výčtových typů, jak jsou uloženy jednotlivé metody a zmíníme se taktéž...

This (self) v generikách

Tohle byl pro mě nějakou dobu oříšek, než jsem narazil na pár článků s překvapivým - ne dokonalým, ale přeci jen nějakým řešením.Problém je jednoduchý, chtěl bych aby bylo možné v nějaké abstraktní třídě definovat cosi jako:/** poznámka: toto je nesmysl, ale vyjadřuje moji snahu o vyjádření vazeb **/  abstract class AbstractClass<T is this>...

Základy šifrování v Javě

Při práci na projektu pro našeho významného klienta se neobejdeme bez šifrování. V tomto článku bych se chtěl podělit o některé zkušenosti a především nastínit základy šifrování v prostředí platformy Java. Článek si neklade za cíl jít do příliš velké hloubky ani být vyčerpávajícím popisem, ale měl by sloužit jako úvod do šifrování v Javě.

Podpora skriptovacích jazyků v JDK6 a OpenJDK6 (3.část)

Dnes se již potřetí vrátíme k aplikačnímu programovému rozhraní (API) navrženého v rámci JSR 223, které slouží k podpoře skriptovacích jazyků běžících nad virtuálním strojem Javy. Zaměříme se na předávání hodnot (obecně objektů) mezi aplikací v Javě a skriptem s využitím sdílených pojmenovaných objektů.

Podpora skriptovacích jazyků v JDK6 a OpenJDK6 (2.část)

V našem seriálu budeme pokračovat v popisu aplikačního programového rozhraní (API) navrženého v rámci JSR 223, které slouží k podpoře skriptovacích jazyků běžících nad virtuálním strojem Javy (JVM). Dnes se zaměříme především na podrobnější popis kooperace mezi aplikacemi v Javě a skripty v JavaScriptu.

Podpora skriptovacích jazyků v JDK6 a OpenJDK6

Ve čtrnáctém článku o jazyce Java se seznámíme s API určeným pro práci se skripty napsanými v různých skriptovacích programovacích jazycích. Toto API bylo navrženo tak, aby byl způsob volání skriptů, předávání parametrů skriptům, získávání návratových hodnot i další činnosti prováděny jednotným způsobem.

Využití skrytých vlastností JDK (1)

V dnešním článku o vlastnostech JDK 6 a JDK 7 si řekneme základní informace o jedné skryté (přesněji řečeno velmi málo zdokumentované a známé) vlastnosti nových verzí JDK. Jedná se o alternativní varianty tříd HashMap, LinkedHashMap a TreeMap uložené v archivu alt-rt.jar. Tyto třídy nabízí pro některé aplikace větší výkonnost.

Monitorování procesů a správa paměti v JDK 6 a JDK 7 - využití large pages

Ve dvanácté části seriálu o vlastnostech JDK 6 a JDK 7 (samozřejmě včetně OpenJDK) si řekneme, z jakého důvodu může být v některých případech vhodné používat takzvané large pages, známé též pod názvem huge pages. Jedná se o technologii nabízenou některými novějšími procesory, která je podporována i Linuxem (konkrétně jádry 2.6.x) a samozřejmě...

Monitorování procesů a správa paměti v JDK 6 a JDK 7 (5)

V jedenácté části seriálu o JDK 6 a JDK 7 (samozřejmě včetně OpenJDK) se opět budeme zabývat principem činnosti správců paměti a způsobům, jakými lze ovlivnit výkonnost virtuálního stroje Javy. Popíšeme si především rozdíl mezi různými správci paměti a zaměříme se na běh JVM na víceprocesorových počítačích.

Monitorování procesů a správa paměti v JDK 6 a JDK 7 (4)

V desáté části seriálu o vlastnostech JDK 6 a JDK 7 si ukážeme způsob ovlivnění chování správců paměti pomocí parametrů, které je možné specifikovat při spouštění běhového prostředí Javy (JRE). Zaměříme se především na způsob nastavování velikostí paměťových oblastí, ze kterých se skládá halda (heap).

Zipujeme efektivně

Práci se ZIP archivy se v Javě  programátor asi nevyhne. A i když má Java pro práci s tímto formátem dobré API, velmi často právě ono "dobré API" znamená desítky řádků zbytečného kódu navíc, protože dobré API je co nejvolnější (low-level). Článek ukazuje možné rozšíření standardních tříd ZipOutputStream a ZipInputStream z balíku java.util.zip,  tak...

Java a rozšířené atributy souborů

Java ve své sedmé verzi přinese řadu zajímavých vlastností. Jednou z nich je i podpora práce s rozšířenými atributy souborů, což je funkcionalita poskytovaná souborovým systémem, která umožňuje k souborům ukládat metadata. V dnešním článku si povíme obecně o rozšířených atributech a ukážeme jak s nimi snadno pracovat v Javě (díky OpenJDK 7).

Java Double Quiz

Pro kolegy jsem si připravil krátký kvíz (3 otázky) na datový typ double v jazyce Java. Věřím, že pobaví i vás.

Java Native Interface: propojujeme Javu a C/C++ – 4

Doposud jsme si hráli jen s objekty, které nám předalo JNI. Je na čase nabýt samostatnosti a začít s třídami a instancemi pracovat samostatně. Také začneme řešit javovské výjimky.

Java Native Interface: propojujeme Javu a C/C++ – 1

Java Native Interface (JNI) je rozhraní pro jazyk C, které umožňuje v Java aplikacích využívat nativní knihovny, a naopak také využívat Javu v nativních aplikacích. Tento seriál vám JNI představí a naučí vás jej používat.

Ako na optimalizáciu Java kódu

Optimalizácia kódu na rýchlosť a zmenšenie pamäťovej náročnosti býva druhoradou záležitostí. Pozrieme sa, ako týmto problémom predchádzať.Počas rokov som videl rôzny kód a pracoval na rôznych projektoch, nových alebo už dlhšie bežiacich. Optimalizovanie na rýchlosť a zmenšenie pamäťovej náročnosti väčšinou prichádza na rad až...

SIGAR API – získání systémových informací

 Tento článek navazuje na sérii článků o méně známých, avšak zajímavých nástrojích a technologiích. Dnes se zaměříme na knihovnu SIGAR (Hyperic’s System Information Gatherer), která nám umožňuje získávat zajímavé informace ze systému nehledě na to, na kterém systému naše aplikace pracuje. O této knihovně již byla na našem blogu řeč – nyní...

GeeCON 2010 – den první

GeeCON 2010
V letošním roce jsme s kolegy z Forresta vyrazili na GeeCON v Poznani. Podle referencí z loňského roku se jednalo o velmi dobrou akci, takže jsme plni očekávání vyrazili směr Balt. Cesta do Poznani byla velmi jednoduchá – z Náchoda je to furt rovně , překvapily mne příjemně stavy silnic – takovou po které jsme jeli my aby člověk v Čechách...

Oříšek v reflexní analýze generik

Generics motive
Minulý týden jsem řešil zajímavý problém s reflexí a došel jsem k závěru, že generiky v reflexním API jsou opravdu velká legrace. Prototypoval jsem myšlenku automatického generování implementací nad obecným kontejnerem – dejme tomu Map (což není pro účely tohoto článku zase až tak důležité), a došel jsem k potřebě správně číst generické informace z...

Thinlet - rýchly vývoj jednoduchých GUI v Jave

Thinlet je prostá knižnica na tvorbu grafických rozhraní, ktorá síce nedosahuje flexibilitu Swingu, SWT, či XAML, ale má svoje miesto v prípade aplikácií, kde si vystačíme s jediným oknom. V článku si ukážeme použitie tejto knižnice a typické prípady použitia na príklade jednoduchej kurzovej aplikácie.

Swing a vláknové programovanie

Jednou zo základných požiadaviek používateľského rozhrania je jeho responsiveness , teda včasná a rýchla reakcia na používateľov vstup. V Swingu sa pri vyvíjaní svižného rozhrania nevyhneme využitiu vlákien. Našťastie, existuje trieda SwingWorker, ktorá odtieňuje od škaredých vnútorností vláknového programovania. V článku si ukážeme...

Lombok – knihovna pro urychlení vývoje

V dnešním článku bych vám rád představil zajímavou knihovnu, která přináší do nynější verze Javy takové techniky, kterých se nejspíše dočkáme v dalším vydání tohoto programovacího jazyka. Pojďme si tedy ukázat, co nám knihovna Lombok nabízí.

Serializace a její problémy

Serializace je v Javě velice mocný nástroj. Bohužel s ní přicházejí i problémy. Pojďme se na ni v následujícím článku podívat blíže.

Podbarvování tlačítek s SWT ve Windows

Eclipse logo
O SWT je obecně známo, že neumožňuje podbarvovat tlačítka ve Windows tak, jak to dovede například v Linuxu. Nemůže za to SWT, ale Windows - ty nedovolují tuto změnu. Jak tedy tento problém vyřešit? Více najdete v článku.

Až budete chtít někdy dávkově konvertovat kódování souborů …

Čas od času řeším problém jak hromadně zkonvertovat sadu souborů z kódování A do kódování B, popřípadě jak ze sady souboru odstranit UTF-8 BOM. Vždy jsem na hledání nějakého jednorázového vehementu strávil plno času, především proto, že to obvykle nefungovalo tak úplně jak bych potřeboval. Na odstranění BOMu, jsem navíc nenašel vůbec nic....

Jak vytvořit spustitelný exe soubor v Javě pomocí Mavenu a Launch4j

Na jednom z našich projektů jsme potřebovali vytvořit spustitelný exe soubor, jako alternativu ke spouštění projektu klasicky přes jar soubor. Jak tento problém vyřešit s co nejmenší námahou se dočtete v následujícím článku.

JavaRebel - vývoj bez restartu serveru

Jedná o JVM plugin, který umožňuje za běhu aplikace upravovat Java kód tak, že se změny hned promítnou do běžící aplikace. To zní hodně podobně jako standardní JVM HotSwap, ale JavaRebel toho umí mnohem více, např. přidání nové proměnné do třídy, metody, změna anotace apod.

Jedna (plus dve) prezentácie k vláknam v Jave

Vlákna a paralelné programovanie je oblasťou, ktorej sa v Jave v podstate nevyhneme. Či už programujeme grafické aplikácie pomocou Swingu alebo webové aplikácie v servletoch, na vlákna a ich záludnosti je potrebné myslieť. Jedna hlavná a dve vedľajšie prezentácie poskytujú prehľad tejto oblasti, základné myšlienky, typické problémy a ukážky kódu.

Jak jsem potkal JavaFX

Tak si říkám, jestli má to co se chystám napsat vůbec cenu. Spoustu lidí tím asi naštvu a nikomu tím asi nepomůžu. No ale budiž, nechť se rozpoutá plamenná diskuze. Předevčírem Sun vydal první ostrou verzi Javy FX. Včera byl můj poslední den v práci a odpoledne jsem neměl už moc co dělat, tak jsem si řekl, že se na to podívám. Jdu na javafx.com,...

Java SE 6 Update 10 venku

Po roce čekání a více než miliónu stažení (viz Java SE 6 Update 10 is out but what does it deliver?) beta verze je venku dlouho očekávaný update číslo deset. Podle označení by se zdálo, že se jedná pouze o fix pack, nicméně seznam úprav odpovídá spíše pořádnému třesku. Nejzásadnější změnou je nový plug-in systém, který umožňuje lepší běh a...

Apache Wicket - IBehavior, Tabulky

Minule jsem psal o možnosti spojení Wicketu s EJB3 a o Wicket Security.Dnes se podívám na další vlastnosti a možnosti tohoto webovéhoframeworku.IBehaviorJedná se o interface, který je označován jako druh pluginu wicketkomponent. Já jsem dané řešení využil například pro statistikunávštěvnosti či pro zjistění, jak dlouho trvalo vyrendrování...

jOpenSpace 2008 - ORM - Hibernate a klientská aplikace

Klientské aplikace napsané v AWT, Swingu nebo SWT mají jedno velké specifikum oproti aplikacím webovým. Tím specifikem je jednovláknovost těchto knihoven. Tj. kód, který přistupuje k UI tak musí činit z UI vlákna (ve webové aplikaci má každý request své vlákno - skoro vždy). Z tohoto vlákna tedy není vhodné provádět náročné akce, protože dojde...

Serial port v Jave aneb RXTX

Jakožto spokojený uživatel linuxu jsem dost odstíněn od windows. Bohužel to sebou přináší i určité problémy, kdy potřebuji portovat aplikaci na windows.

OSGi update

Tohle je malé doplnění k článku Petra Jůzy OSGi: Použít nebo nepoužít? na téma OSGi a J2EE. O OSGi jsem měl velice zajímavou debatu s Jurgenem Hollerem (SpringSource) na konferenci tady v Praze minulý týden. Bavili jsme se o možnostech nasazení a podle jeho názoru je nejlepším prostředím pro běh OSGi aplikace...

OSGi: Použít nebo nepoužít?

Hned na začátku článku musím říci, že jsem velký fanda modulárních systémů a OSGi především. Ale to hned nemusí znamenat, že OSGi budu používat vždy a za všech okolností - pro mě je důležité za použitím jakékoliv technologie vidět určitý přínos a tedy důvod, proč danou technologii použít. Samozřejmě to také musí být vyvážené rozumnou pracností.O...

Ako natiahnuť internetový kábel s použitím kostier (Kruskalov algoritmus)

Ako natiahnuť optický kábel medzi krajskými mestami Slovenska tak, aby sme ho použili čo najmenej? Ukážeme si Kruskalov algoritmus, ktorý je vhodný na riešenie tejto úlohy. Inak povedané, popíšeme, ukážeme na príkladoch a implementujeme v Jave algoritmus na nájdenie minimálnej kostry v grafe.

Java SE 6 Update 10 ve znamení user experience

V Sun programu early access je k dispozici Java SE 6 Update 10 Beta. Cílem tohoto updatu je zlepšení user experience (uživatelského prožitku?). To obnáší celkem tři oblasti: Enhanced Java deployment, Improved performance and look & feel a Next-Generation Java Plug-In viz detailní popis. Zdá se, že tento release je více zaměřen na uživatele...

SWT aplikace - ještě lepší L&F na Windows Vista

Sam Ramji oznámil novou iniciativu v rámci Microsoft Open Source Software Lab na poli interoperability SWT a Windows Vista, tak aby java aplikace postavene na SWT mohly plně využít možnosti Windows Presentation Foundation (WPF) systému. Chování a vzhled těchto aplikací by se měl z pohledu koncového uživatele opět blíže přiblížit...

Jak nás vypek DateFormat.parse

Definitivní, alespoň doufám, podoba parsování řetězce na datum. Bohužel je to trochu složitější než new SimpleDateFormat(format).parse(retez).

Ještě pořád se držíte JDK, když je po ruce Joda Time?

Po delší době jsem měl zase čas podívat se na zoubek v mém TODO listu. Tentokrát jsem si vzal na paškál poměrně malou knihovnu s názvem Joda Time. Cílem této knihovny je reimplementace Java API pro práci s datumy a časem. Každý z nás, kdo pracuje s Javou nějaký ten čas, se tu a tam potýká s tímto těžkopádným API. Joda Time přinesl poměrně hodně...

Retrotranslator - hladce z Javy 1.5 do 1.4

Řada z vás si určitě řekne, co to ten Fura vytahuje za prehistorická témata. V době, kdy se už živě diskutuje o tom, co bude v Javě 1.7, rozebírá přechod z verze 1.4 na verzi 1.5. Možná vás to překvapí, ale v našem prostředí (server web aplikace), provozujeme ještě řadu instalací na verzi 1.4 a možnosti upgradu v nedohlednu. Proto je pro nás stále...

java.lang.NoClassDefFoundError aneb kde je ta třída?

Znáte? java.lang.NoClassDefFoundError: com/bea/netuix/servlets/util/ConcurrentCache$GenerationException Každý už určitě mnohokrát viděl, snad jen s jiným obsazením herců/tříd. A co s tím? Najít jar-ko, kde se zkompilovaná třída nachází a přidat ho na classpath.

Vstupno-výstupné metódy v jazyku Java (java.io)

Popis filozofie práce so vstupno-výstupnými metódami v Jave, popis balíčka java.io, prehľad jeho významných tried a príklady ich použitia.

Google collections - ušetřete si práci s kolekcemi

Nedávno mě při poslechu JavaPosse zaujala zmínka o Google Collections. Jedná se o knihovnu doplňující funkcionalitu třídy Collections ze standardní Javy. Knihovna obsahuje řadu utility tříd, které zpříjemňují život s generikami v kolekcích, vytváření kolekcí v kolekcích a další manipulaci dat v kolekcích. Jelikož mě knihovna zaujala hned na první...

XML Signature - použít nebo ne?

Už jste přemýšleli o použití, nevíte zda do toho jít? Třeba vám pomůžu s volbou.

Terracotta a distribuované metody

Povíme si něco o distribuovaném volání metod (Distributed Method Invocation). Motivace je jednoduchá. Představme si, že uživatel změní přes webové rozhraní globální nastavení aplikace. O této události potřebujeme informovat všechny členy clusteru.

Jemný úvod do anotací

Sun přišel ve verzi J2SE 1.5 se systemém zápisu metadat. Jedná se o systém anotací. A co vlastně anotace jsou? Jak už bylo řečeno, je to způsob zápisu metadat. Metadata by se dala vysvětlit jako data, která popisují data :).

Hrajeme si s Terracottou

Terracotta je nástroj pro clusterování na úrovni virtuálního stroje. Funguje pomocí AOP na úrovni bytecode. Tzn. při startu aplikace upraví bytocode tříd tak, že dostane notifikaci při zápisu a čtení primitivních vlastností (field) objektů.

AOP proxy objekty - volání metody v rámci jedné třídy

Dlouho jsem přemýšlel nad nějakým výstižným názvem tohoto příspěvku, ale nic moc jsem nevymyslel. Zkusím tedy popsat o co přesně jde. Mám třídu, která má dvě metody. Obě metody se mají pouštět v transakci, každá metoda může nebo nemusí mít svoje vlastní nastavení transakční definice. Pro účely ukázky jsem si vymyslel následující příklad...

Hashtable s vlastním objektem jako klíčem

Pokud používáme v hastable jako klíč vlastní třídu, můžeme narazit na nepříjemný problém.

Java kernel VM bude v Update 4 pro JDK 6

Java kernel je minimalistická verze JRE schopna podle potřeb aplikace dotáhnout nezbytné části Javy za běhu. Tuto oříznutou verzi, původně se spekulovalo o velikosti JRE bližící se k 3MB, přinese zřejmě již JDK 6 a to v rámci update bálíčku s požadovým číslem 4.

JUnit 4.4 kladivo na testy

Kam až rozšiřovat možnosti testovacích frameworků? Tuhle otázka jsem si položil během zkoumání nedávno uvolněné verze 4.4 populárního frameworku pro psaní testů JUnit. Tato verze přináší dvě celkem zásadní novinky, první je assertThat a tou druhou, po mém soudu zajímavější, jsou předpoklady a teorie (assumptions and theories).

Applety opět na scéně

Zní to skoro neuvěřitelně, ale Sun se chystá oživit mrtvolu jménem Applety. Dědictví minulosti, odpadlík, černá ovce můžete tuhle technologii nazývat jak chcete, ale Sun je jí nucen oživit. Za revitalizací appletů stojí představení technologie JavaFX. Web verze JavaFX potřebuje pro svůj běh hostitelský kontejner uvnitř prohlížeče a applety, i přes...

Jak na List

Ukázka jak lze snadno vytvořit nainicializovný List v Javě 5.

Java pro desktop: stále se něco děje

Přiznám se bez mučení, že oblast Javy pro vývoj desktopových aplikací sledují spíše okrajově. Proto mě překvapilo, jak hodně Sun tlačí na pilu, ať už v oblasti nástrojů a nebo dalších vylepšení v oblasti Swingu. Zároveň je povzbuzující slyšet o open source projektech podporujících desktopový vývoj.

Java 6 – co vězí za zrychlením

O tom, že je Java 6, co do výkonu, opět dále nemůže být pochyb, to dokazují například testy Davida Dagastine. Mě osobně trochu výkonnost Javy 6 nedala spát, takže jsem se jal hledat informace, co za tím vším je. Posledních několik dní jsem tak strávil, krom studia potřebné teorie, měřením výkonu nových synchronizačních technik JVM.

Proč mám rád get a set metody

Ano přiznávám se jsem staromilec. Možná dokonce i zpátečník. Mám rád get a set metody a nerad vidím snahu se jich zbavit. Občas se na internetových diskuzích setkám s návrhy jak „lépe“ řešit přístup k vlastnostem objektu. Dokonce se jeden takový návrh dostal do návrhu změn v Javě 7.

Transparentní cache pomocí Aspektově Orientovaného Programování

Jeden z důvodů proč jsem si oblíbil aspektově orientované programování (dále AOP) je možnost transparentně rozšiřovat stávající API o další funkčnost bez nutnosti do něj přímo zasahovat. V tomto článku bych vám rád možnosti AOP ukázal na implementaci cacheování vrstvy pro přístup k databázi.

Anotační peklo?

Nevím jestli již aktivně používáte nebo jste alespoň viděli JSR 175 - Metadata Facility for Java alias Anotace v akci. Já jsem zatím používal pouze klasické SE anotace pro přidání metadat kompilátoru jako @override. Místo kde byly s anotacemi velké plány a kde se od něj hodně slibuje je enterprise oblast. Pokud jste neviděli nějaký příklad EJB 3.0,...

Mýtický člověko-měsíc

Nedávno se mi dostala pod ruku známá kniha The Mythical Man-Month, Frederick P. Brooks, Jr. Není bez zajímavosti, že letos slavíme 20 let od jejího prvního vydání. Musím se přiznat, že mě dost nadchla. Člověk se v ní dočte, jaké problémy museli vývojáři řešit v prehistorických dobách softwarového inženýrství.

Closures v Jave – děkuji nechci

O nápadu prosadit closures (uzávěrách?) do Javy jsem se dočetl poměrně nedávno. Mojí první reakcí bylo: „Proboha proč?!“. Čím více o tomto návrhu přemýšlím, tím více motivaci jeho tvůrce chápu. Stále si s nimi ale dovoluji nesouhlasit. Pokusím se uvést několik argumentů proti jejich akceptaci.

Closures v Jave - funkce se bouří

Málokterý materiál týkající se Javy vyvolal v poslední době takový rozruch jako návrh začlenění funkčních typů a inline funkcí nazývaných Closures, za kterým stojí čtveřice Gilad Bracha, Neal Gafter, James Gosling, Peter von der Ahé. Přímou podporu funkčních typů mají například jazyky Ruby, Scala, Smalltalk a nebo JavaScript. Co to bude pro Javu...

Deklarovaná runtime výjimka - nejlepší z obou světů?

Princip výjimek na platformě Java je dostatečně známý, ale to vůbec neznamená, že existuje obecný koncept, jak nejlépe navrhnout systém výjimek z hlediska architektury aplikace. Nedávno byl na serveru TheServerSide diskutován koncept deklarované runtime výjimky, tak se na něj v tomto článku podíváme.

Odložené nahrávání dat v ORM nástrojích

Odložené nahrávání dat, takzvaný lazy fetching, patří k základním vlastnostem pro zvýšení výkonu v ORM nástrojích jako Hibernate či iBatis SQL Maps.

Když na prostředí záleží aneb soubory a více vláken

Článek o přístupu do souborů z více vláken

Swing a SWT na OS Microsoft Vista

Daniel Spiewak připravil malé srovnání Swingu a SWT na OS Vista, které odráží aktuální stav těchto GUI technologii. Jako implementace Swingu bylo použité poslední dostupné JDK 6.0 Mustangu a pro SWET byl jako zástupce použit Eclipse.

Síťování v Javě: Závěr

Na úplný závěr našeho seriálu o síťování v Javě si probereme to, co se zatím do předchozích dílů nevešlo. Ukážeme si, jak pracovat se síťovými rozhraními a zkusíme si práci s HTTP protokolem. Nakonec nás čeká už jen krátké povídání o třídě Charset z balíku java.nio.charset.

Síťování v Javě: Logování

Dnes mírně odbočíme od zaměření seriálu. Podíváme se na téma, které se síťováním úzce souvisí - logování. Ukážeme si, jaké jsou možnosti vytváření logů. Od výpisu na konzoli, až po java.util.logging API.

Síťování v Javě: New I/O server

nes budeme pokračovat v New I/O API. Vysvětlíme si práci se serverovým kanálem, selektory a ukážeme si, jak převádět obsah bufferů na řetězce. Na závěr si vytvoříme primitivní HTTP server, na kterém si prakticky vyzkoušíme postupy popisované v teoretické části.

Síťování v Javě: New I/O

V dnešním díle nás čeká úvod do New I/O API. Probereme důležité třídy, podrobněji se zaměříme na práci s buffery. Na závěr vytvoříme jednoduchý příklad NIO klientské aplikace, na kterém si ukážeme nejen síťování, ale také práci se soubory pomocí NIO.

Síťování v Javě: Chatovací server

Dnes využijeme znalosti získané v minulých dílech. Vytvoříme další server, tenokrát chat. Hlavními cíli tohoto komplikovanějšího příkladu bude ukázka práce s předem neznámým počtem vláken a vysvětlení hlavního rozdílu mezi java.net API a New I/O.

Síťování v Javě: První server

V minulé části tohoto seriálu jsme si popsali několik tříd z balíku java.net a vytvořili jednoduchého telnet klienta. Dnes pro něj konečně najdeme využití - začneme totiž s programováním serverů. Stejně jako v prvním díle si nejdříve popíšeme důležité části java.net API. Potom budeme pokračovat dalším praktickým příkladem - vyrobíme si time server.

Síťování v Javě: Úvod

První díl seriálu o práci se sítí v Javě. Začneme zlehka teoretickým popisem několika důležitých tříd. Na závěr si naprogramujeme první aplikaci, kterou bude vlastní telnet klient.

Java 5.0 (Tiger) vs Java 6.0 (Mustang) - porovnání rychlosti

Finální verze Javy 6.0 není sice ještě k dispozici, ale už se objevily první srovnávací výkonové testy.

J2SE 6.0 v beta verzi

Včera byla vypuštěna oficiální beta verze J2SE 6.0 alias Mustang viz Java Standard Edition 6 goes to formal beta status. Co nám tato verze přinese? Sun rozdmýchal velké naděje především u skupiny vývojářů desktop aplikací. Mezi další perličky patří integrovaná podpora skriptovacích jazyků (JSR 223) - Mustang přímo obsahuje Rhino JavaScript engine.

Java 5 - recenze publikace

Java 5
Na serveru linuxsoft.cz vyšla recenze na tuto populární knihu od Ivora Hortona.

Java včera, dnes a zítra

Dnes bych chtěl pár řádek věnovat Jave 5.0. Je to až s podivem, jak zpátečnický jsem si připadal, když jsem se na těchto stránkách skepticky rozepisoval o přechodu na Javu 5.0. Od té doby už uběhlo hodně času a já jsem si ten přechod mohl prodělat na vlastní kůži.

Java – znakové kódování

Jedno z nejčastěji tázaných témat, v diskusních skupinách věnovaných Jave, se točí kolem kódování znaků. Nejčastěji se to týká kódování při čtení/zápisu servletu (JSP), databáze a souborů. Obecně to může generalizovat na operace probíhající na hranici mezi JVM a okolním světem, kde dochází převodu bytové reprezentace na znakovou reprezentaci a...

Memory leaks v Jave

Memory leaks jsou problémem, který vzniká tak, že program konsumuje operační paměť, kterou neumožňuje uvolnit, i když ji už v danou chvíli nepotřebuje. V Jave se o uvolnění paměti stará Garbage collector (GC) též česky řečený Sběrač Neplatných Objektů, který je plně v režii Java Virtual Machine. Programátor se nemusí starat o uvolňování paměti...

IBM se zapojuje do open-source J2SE 5 Harmony

Na nedávno oznámené (i u nás na Jabloku zmíněné) chystané zbrusu nové implementaci J2SE 5 s názvem Harmony od minulého týdne podle zprávy zveřejněné na C|Net News už pracuje jeden vyčleněný zaměstnanec IBM.

Pisces - komplexní testovací scénáře

Pisces je nástroj rozšiřující možnosti frameworku jUnit, tak aby bylo možné pouštět unit testy mimo lokální VM. Když jsem na začátku týdne ladil chyby v Luntclipse (Eclipse plugin pro Luntbuild), byl jsem vystaven do situace, do které se dostane většina vývojářů. U mě vše samozřejmě fungovalo, ale několik lidí mi hlásilo opravdu zvláštní chyby...

Formátované dokumenty a tiskové sestavy v Javě (3)

V poslední části miniseriálu věnovaného vytváření formátovaných dokumentů a tiskových sestav pomocí aplikací napsaných v programovacím jazyce Java bude popsán systém POI, který je v současné době možné použít pro načítání, programovou změnu a uložení sešitů ve formátu aplikace Microsoft Excel. Kromě toho je ve vývojářské verzi možné načítat a...

Java 6.0 Mustang - nové vlastnosti ve znamení JSR

J2SE 5.0 se ani pořádně nezaběhlo a už s pilně pracuje na J2SE 6.0 s kódovým označením Mustang. Mustang je vyvíjen pod speciálním typem licence Java Research License (JRL), která umožňuje komukoliv ovlivnit vývoj. Dokonce bych řekl, že Mustang a přístup k jeho vývoji je velice liberální.

Formátované dokumenty a tiskové sestavy v Javě (2)

V dnešní části miniseriálu o vytváření formátovaných dokumentů a tiskových sestav pomocí programů napsaných v programovacím jazyce Java se zaměříme na popis systému FOP, zejména na způsob jeho instalace, zprovoznění a tvorby jednoduchých dokumentů zapsaných ve formátu FO-XSL.

Formátované dokumenty a tiskové sestavy v Javě (1)

V tomto článku a na něj navazujících pokračováních jsou popsány dva poměrně rozsáhlé systémy, které jsou určeny pro vytváření formátovaných dokumentů a tiskových sestav. Oba popisované systémy jsou založeny na "čistém" programovacím jazyku Java, což přispívá k jejich snadné portaci na různé platformy. Díky použití Javy je také možné funkce těchto...

Do pranice: Přejít na Javu 5.0, ANO či NE?

Už je to přes půl roku, kdy jsem spotem Migrace na Javu 5.0, realita nebo utopie? polemizoval nad přechodem na Javu 5.0. Půl roku je v IT příšerně dlouhá doba, ale můj skeptický postoj k přechodu stále trvá.

Myslíme objektově v jazyku Java 5.0 - recenze publikace

desky knihy Myslíme objektově v jazyku Java 5.0
Rudu Pecinovského jsem poprvé potkal v době, kdy jsme oba studovali na Jaderné fakultě ČVUT v Praze. Doopravdy jsme se ale poznali až mnohem později, když jsme na počátku devadesátých let spolupracovali na překladu manuálů k jistému dodnes populárnímu programovému prostředí. Brzy jsme zjistili, že máme jeden společný zájem – učit lidi, jak...

Balíky sun.*

Tentokrát si dáme něco malého a krátkého pro začátečníky. Na Yahoo news se objevila zpráva o problémech vývojářů kancelářského balíku OpenOffice.org. Ti se těsně před vydáním verze 2.0 svého produktu dostali do nesnází, souvisejících s použitím java tříd z balíků sun.*, a po stížnostech zastánců free software byli nuceni ohlásit zpoždění vydání...

Export dat do Excelu pomocí jExcelApi

Minulý týden jsem dostal úkol předělat data z plain textu do nějakého uživatelštějšího formátu. Měl jsem na výběr z několika možností jako jsou HTML, CSV, Excel, mbd apod. Jelikož to byla jednorázová off-line akce, řekl jsem si, proč to neudělat v Javě a nenaučit se tak něco nového. Vybral jsem si tedy Excel a našel knihovnu jExcelApi. Něvěděl...

GUI alternativa ke Keytool

Také milujete command line utility s milion a jedním přepínačem? Já tedy ne, ač na druhou stranu, uznávám fakt efektivity práce. Keytool je command line nástroj pomocí kterého v Jave spravujete keystore. Keystore představuje úložiště klíčů a asociovaných certifikátů. S Keytoolem můžete generovat klíče, importovat/exportovat certifikáty, generovat...

J2SE jako open-source

Zajímavá informace se objevila na TheServerside.COM. Apache Software Foundation se rozhodla sjednotit roztříštěné spektrum snah o implementaci alternativní verze JRE s otevřeným kódem a rozjet projekt s názvem Harmony. Jeho cílem je open-source implementace běhového prostředí specifikace Java 2, Standard Edition, využívající licenci Apache Licence...

Multimetoda a Java

Multimetoda je pojem známý hlavně z Common Lisp Object System. Tento výraz ve stručnosti znamená určení volané metody v závislosti na skutečném typu jí předávaných parametrů. Následující článek se zabývá tím, jak podobnou funkcionalitu implementovat v programovacím jazyce Java.

Dalších par ukázek z Javy 5

Co třeba takovýto (svou jednoduchostí už na úrovni skriptovacích jazyků) kód vypisující řádky textového souboru: System.out.printf("%6d: %s%n", ++lineNumber, line);

Průvodce SVG - Java a SVG

Tento článek o grafickém formátu SVG bude tak trochu specializován na platformně nezávislé aplikace běžící v prostředí Java. Začneme kupříkladu zajímavým grafickým editorem formátu SVG-XML a skončíme návodem, jak umožnit návštěvníkům webových stránek prohlížet SVG grafiku bez nutnosti instalovat prohlížeč.

Java a výjimky - pokročilé techniky

Cílem článku bude nastínit techniky, které práci s výjimkami usnadňují a dovolují nám výjimky efektivně využívat. Ukážeme si řetězení výjimek (exception chaining), rozšíření Java API ve verzi 1.4 a standardní běhové výjimky Javy.

Java a 3D grafika - světla

Scéna bez světel bývá většinou nudná a plochá. Pomineme-li drátěné modely, tělesa, která mají různě obarvené stěny, a tělesa pokrytá texturami, není u neosvětlených objektů prakticky možné poznat, že jsou trojrozměrné. Aby naše scény napříště nevypadaly ploše, seznámíme se v tomto článku s osvětlovacím modelem v Javě 3D.

 
strana 1/1celkem 110 položek