Data race

V tomto článku se podíváme na data race. Data race je synchronizační chyba, která se objevuje ve vícevláknových programech. Řekneme si, kdy tato chyba nastává, ukážeme si pár příkladů a představíme si nástroj, kterým lze data race detekovat. Pokud dvě vlákna přistupují ke sdílené proměnné, alespoň jedno vlákno zapisuje a mezi přístupy není žádné uspořádání […]

Učebnice jazyka Java

Jste na střední a chystáte se na techniku? Nebo začínáte s programováním a zajímá vás Java? Pak je tu pro vás zdarma učebnice tohoto programovacího jazyka. Výukový text je rozdělen do 24 kapitol a je doplněn 100 interaktivními cvičeními v JavaFX. Celá učebnice je k dispozici pod licencí Creative Commons (CC-BY-NC), která vám dává právo […]

Uklízíte po sobě?

V tomto článku se podíváme se na to, jak je možné pomocí nástroje BTrace sledovat vytváření a úklid oken v javovském programu. Budeme sledovat konstruktory a metodu dispose, která provádí úklid. Pokud programátor zapomene zavolat metodu dispose, nastává memory leak. Dále si ukážeme, jak sledovat otevřené soubory. BTrace nás bude informovat o každém otevření či […]

Silvestrovská hádanka

Jsem přesvědčen, že všichni čtenáři mého blogu umějí sčítat a ovládají šestnáctkovou soustavu a věřím, že si poradí i se sčítáním v šestnáctkové soustavě. V tomto článku se na jedno takové sčítaní podíváme. Pro sčítání použijeme třídu Summator. Sčítance budou v atributech x a y a výsledek v atributu result. Samotné sčítání probíhá v metodě […]

Optimalizovat či neoptimalizovat?

Tento článek se zabývá otázkou zda a kdy optimalizovat javovský kód. Podnětem pro jeho napsání byla diskuze v javovské konferenci na java.cz a podobně zaměřený, avšak obsahově odlišný, článek na serveru interval.cz. Nejprve trochu historie: v začátcích byla Java často kritizována za to, že je pomalá. Rychlost Javy se tenkrát dala těžko srovnávat např. s […]

Evoluce API

Navrhli jste API, chcete v něm provést změny a děsí vás, co to způsobí s programy, které toto API používají? V tomto článku si na jednoduchém příkladu ukážeme, jak vám může pomoci RefactoringNG. Mějme třídu Ship s metodou dock: public class Ship { public void dock() { … } … } V rámci evoluce API […]

RefactoringNG

V dnešním článku se seznámíme s novým nástrojem pro refaktorování javovského kódu. Jmenuje se RefactoringNG a jde o modul do NetBeans 6.9. Ve srovnání s jinými nástroji nabízí RefactoringNG velkou flexibilitu, protože refaktorizační pravidla si zde definujeme sami. Každé refaktorizační pravidlo popisuje transformaci nějakého abstraktního syntaktického stromu na jiný. Např. pravidlo pro přepis výrazu x […]

(Ne)bezpečná Java

Pokud se zajímáte o Linux, nebude pro vás patrně akce InstallFest neznámá. Letošního ročníku, který byl zaměřen na sítě a bezpečnost, jsem se zúčastnil i jako přednášející. Záznam mojí přednášky “(Ne)bezpečná Java” můžete najít na stránkách InstallFestu. internetové odkazy: http://www.installfest.cz/if10

Java versus C

Položili jste si někdy otázku, jak by dopadlo výkonové srovnání Javy a C? V tomto krátkém článku si jedno výkonové srovnání ukážeme. Nepůjde však o komplexní srovnání Javy a C, protože budeme testovat jen jednu funkci: výpočet obsahu kruhu. V Javě bude obsah kruhu počítat metoda obsah: public static double obsah(double r) { return 3.141592 […]

Ostře sledovaná okna

K napsání tohoto článku mě inspiroval Ondra Medek svými maily v javovské konferenci v lednu 2010, v nichž se podivoval nad tím, že Java automaticky neuklízí zavřená okna. Pokud okno nemá nastaveno DISPOSE_ON_CLOSE, je při zavření pouze schováno a nadále zabírá paměť. K jeho dealokaci dojde až při zavolání metody dispose(). V tomto článku si […]

Ukazatelová aritmetika

V tomto krátkém článku si ukážeme, že i v Javě (přesněji Sun JDK) můžeme používat ukazatelovou aritmetiku. Nehledejte v tom však něco praktického. Jde spíše o exkurzi do méně známých končin JDK. Celé kouzlo je schováno ve tříde sun.misc.Unsafe. Tato třída umožňuje např. přímý přístup do paměti, atomické operace s pamětí (Compare and Swap), kopírování […]

České řazení

Tento článek vznikl jako reakce na diskuzi v javovské konferenci konference@java.cz v listopadu 2009. Předmětem diskuze zde bylo řazení podle ČSN 97 6030. V dalším textu se nebudeme této normy striktně držet. Cílem článku není popsat implementaci řazení podle normy, ale spíše ukázat možnosti, které máme v Javě k dispozici pro abecední řazení řetězců. Chceme-li […]

Žádný strach z JSF

Rozumíte servletům, umíte JSP a rádi byste se pustili do JavaServer Faces? Zkuste začít tímto videem. Bohužel, prvních pět minut jsem neměl mikrofon, takže to vypadá, jako kdyby záznam začínal v půlce. Ale je to téměř od začátku. internetové odkazy: http://video.google.com/videoplay?docid=7065059320019137778

Java Server Faces: vytváříme komponentu

JSF komponenta Tento článek popisuje vývoj jednoduché komponenty v Java Server Faces (JSF) verze 1.2. Nejprve si ukážeme, co tvoří JSF komponentu a pak jednoduchou komponentu naimplementujeme. Technologie JSF je postavena nad Java Server Pages (JSP), jejichž znalost dále předpokládám. Ukázková komponenta bude generovat posloupnost náhodných čísel, která bude sloužit jako nápověda pro sázkaře. Pokud […]

Dokáže tohle váš webový framework?

V tomto článku se podíváme na možnosti několika komponent knihovny RichFaces, která je postavena nad Java Server Faces (JSF). Článek není míněn jako tutorial, ale spíše jako seznámení s JSF a RichFaces, které dnes patří k tomu nejlepšímu, co je mezi webovými frameworky k dispozici. Pokud si chcete RichFaces vyzkoušet, doporučuji nainstalovat NetBeans a tento […]