Z Javy do Javascriptu? (2) Komunita

Java a JavaScript majú toho okrem podobného názvu veľa spoločného aj rozdielneho. Na oboje sa pozerám nielen ako na programovací jazyk, ale ako na platformu. Majú svojich skalných prívržencov aj zarytých odporcov. Na internete sa o nich už popísalo veľa, ja by som sa im chcel povenovať v krátkej sérii článkov. Nebude to príliš technické, nebudem...

Aby test neselhal na první­ assert (JUnit 5)

Už jsem psal o tom, jak v JUnit 4 dosáhnout toho, aby test neselhal na první assert. JUnit 5 již dosáhl milestone 2, tak je potřeba se podívat, jak s novou verzí API dosáhnout téhož.

Mockování a úskalí času v Javě 8

Rozhodl jsem se, že začnu používat java.time.* místo java.util.Date. Jednak kvůli API a taky proto, že jsou nové třídy immutable. Chtěl bych se podělit o to, jak jsem se při tom nachytal.

Vybrané kapitoly z Groovy

Dočetl jsem druhé vydání knihy Groovy in Action (čekali jsme na druhé vydání této bible dlouhých 6 let). Udělal jsem si pár poznámek, které by se mohly hodit i vám, ať už s Groovy začínáte nebo ho už nějakou chvilku používáte.

Refactoring: HashMapové peklo

Proč je používání map místo pojo objektů špatné? Jak moc? Co se s tím dá dělat?

Nechápu, proč je Scala tak populární

Nechápu, proč je Scala tak populární. Samozřejmě jsem koketoval s myšlenkou, že se Scalu naučím. Ale rozmyslel jsem si to, aniž bych se v ní pokusil cokoliv napsat (dokonce ani Hello World). Tento příspěvek jsem pojal jako obhajobu, proč se Scale nehodlám věnovat. Jak už psal Paul Graham v kritickém příspěvku Přebal Javy: „Musíte se naučit...

Formio, lightweight knihovna pro snadnou tvorbu formulářů

Formio, lightweight knihovna pro zpracování formulářů v Javě, si klade za cíl, co nejvíce usnadnit tvorbu formulářů, a to pomocí API, které je snadno použitelné, konfigurovatelné a minimalizuje prostor pro případné chyby.

Záhada jménem Groovy

Již dávno jsem si zamiloval Groovy. Přemýšlel jsem, proč není tak skvělý jazyk rozšířenější. Odpověď mi dal článek The Groovy Conundrum, který napsal Andrew Binstock. S jeho laskavým svolením jsem text přeložil.Groovy je jeden z nejzajímavějších jazyků běžící na JVM, ale jeho dlouhodobé potíže s výkonem mu trvale bránily v rozšíření ze specifických...

Google Guava – bilancování v předvečer releasu Javy 8

V článku shrnuji své zkušenosti z používáním utility knihovny Google Guava a rozebírám její podobnost s přicházející Javou 8. Začněte stahovat JDK8 a až článek dočtete do konce, bude už určitě stahování dokončeno! :-)

Hotswap Agent - neomezený reload tříd a resource za běhu

HotswapAgent je open source/zdarma alternativa k JRebel. Pomocí DCEVM rozšiřuje možnosti standardního Java hotswap mechanismu a obsahuje podporu pro refresh konfigurace oblíbených frameworků (Spring, Hibernate...). Článek popisuje historii, motivaci ke vzniku a odkaz k instalaci.

Czech Scala Enthusiasts: ScalaZ Stream Coding Dojo

Workshop, na kterém si můžete prakticky vyzkoušet knihovnu scalaz-stream představenou na únorové přednášce.Zanechala ve vás únorová přednáška od scalaz-stream spoustu otázek? Máte pochyby o tom, jak byste jí prakticky využili? Nebo jste se jenom nemohli zúčastnit? Přijďte si scalaz-stream vyzkoušet naživo pod vedením chlapců ze Spinoco, kteří s ní...

Anormálně funkcionální parsování dat z databáze

Na jednom projektu jsem použil Anorm, vrstvu pro přístup k relační databázi, která se jednoduše integruje s Play! frameworkem. Co znamená "Anorm"? "Anorm is Not an Object Relational Mapper" (rekurzivní akronym).

Czech Scala Enthusiasts: ScalaZ Stream

Kdy: 25.2. 18:30Kde: Fakulta informačních technologií ČVUT v Praze, Thákurova 9, 160 00 Praha 6, místnost 111Povídání o ryze funkcionálním programování ve Scale a konkrétně o knihovně scalaz-stream.Milan Raulím a Pavel Chlupáček ze Spinocco Czech Republic nám představí knihovnu scalaz-stream, kterou používají ve své práci.Uvidíme, že Scala není...

Czech Scala Enthusiasts: StepDance - Functional Iterators in Scala

Kdy: 26.11. 18:00Kde: Fakulta informačních technologií ČVUT v Praze, Thákurova 9, 160 00 Praha 6, místnost 111Představení open-source Scala knihovny vyvinuté v AVAST Software.

Testování v Groovy

Na našem prvním Radaru jsme se rozhodli nasadit Groovy jakožto jazyk pro psaní unit testů. Jaké s tím máme zkušenosti po roce používání jsem shrnul v tomto článku.

Czech Scala Enthusiasts: Scala from the Trenches

Kdy: 29.10. 18:30Kde: Fakulta informačních technologií ČVUT v Praze, Thákurova 9, 160 00 Praha 6Přijďte si poslechnout praktické zkušenosti českých firem se Scalou.

Jak se naučit základy Python

Mnohokrát jsem se setkal s tvrzením, že programátor by se měl každý rok naučit jiný jazyk. Osobně si myslím, že nemusí jít pouze o nový programovací jazyk, ale stejnou váhu a přínos má třeba složení certifikace a s tím spojené prohloubení znalostí a nebo ovládnutí technologie spojené s používaným jazykem, SQL, NoSQL DB atd. Každopádně loni volba...

Scala in Depth - recenze publikace

Scala in depth
Joshua Suereth vytvořil v podobě své knihy Scala in Depth perfektní kuchařku, sadu best practices, která poskytuje "kuchtíkům ve Scale" tolik potřebný rámec a ideje pro využití mnoha zajímavých vlastností jazyka, který přirozeně kombinuje vlastnosti objektově orientovaného (OOP) i funkcionálního programování - dvě dosud typicky odděleně používaná...

Inherit javadoc

Jak píšete javadoc u implementací rozhraní nebo u překrytých metod? Léta jsem používal výchozí generovaný javadoc v Eclipse (non-Javadoc) @see, později jsem přešel na standardní {@inheritDoc} Nedávno jsem si na twitteru stěžoval, že v Intellij Idea není možné si potřebnou šablonu upravit. Připadám si jak z té historky, ve které dcera celý život...

Letní Scala Coding Dojo

Přijďte se společně s Czech Scala Enthusiasts v těchto horkých letních dnech zchladit do klimatizovaných prostor FIT ČVUT.Kdy: 6.8. 18:30Kde: Fakulta informačních technologií ČVUT v Praze, Thákurova 9, 160 00 Praha 6Účastníci se rozdělí na menší skupinky, které budou řešit nějakou konkrétní úlohu odpovídající jejich znalostem Scaly. Jsou tedy...

Czech Scala Enthusiasts v Brně

Czech Scala Enthusiasts je největší komunitou Scala programátorů a nadšenců v České Republice. Byla založena v červenci 2011 a od té doby uspořádala řadu setkání, přednášek a coding dojos. Dosud se všechny akce odehrávaly v Praze, to se však toto léto změní. Jeden z organizátorů a zakladatelů, Karel Smutný, se na léto přestěhoval za prací do Brna a...

Akka: Actor model a use cases pro výkonné paralelní systémy

V tomto článku se podíváme na základní principy aktorů a příklady aplikací, ve kterých se  mohou aktoři uplatnit.

Type class pattern ve Scale

Jedním z příkladů na květnovém Scala Coding Dojo byla demonstrace type class patternu. Jedná se o užitečnou techniku, pomocí které lze implementovat velmi flexibilní přizpůsobení (již existujících) typů pro jejich použití v nově vytvářených operacích/algoritmech.

Play! framework při zátěži

Jak identifikovat nadměrné zatížení aplikace napsané v Play! frameworku a jak se aplikace při přetížení chová? Podívejme se na to prakticky při zátěžovém testu jednoduché aplikace.

Přebal Javy

Eseje Paula Grahama jsou tak úžasné čtení, že jsem se rozhodl (s jeho laskavým svolením), že některé přeložím do češtiny. Začínám esejí ještě z pravěku Javy. Sami posuďte, na kolik je text Java's Cover po dvanácti letech (možná i s přihlédnutím k tanečkům ohledně další verze) aktuální.Tato esej vznikla z diskuse s několika dalšími programátory o...

Thread pooly v Play! frameworku, šité aplikacím na míru

Play! framework se chlubí vysokou škálovatelností, za kterou vděčí implementaci poolu obslužných vláken. Aby bylo možné nasadit framework s klidným svědomím i na produkci, je potřeba mj. hlouběji proniknout právě do použití thread poolů a jejich konfigurace.

GeeCON – Krakow 2013

Forrestí výprava opět vyrazila do Polska na Java konferenci GeeCON a nebyl bych to já, kdybych vám nepřinesl detailní reportáž o věcech, které mne tam zaujaly. Letos byl můj výlet sponzorován brněnskou firmou YSoft, která byla platinovým sponzorem celé konference a které bych chtěl prostřednictvím tohoto článku také poděkovat. Na společnou výpravu...

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

Anonymné vnútorné triedy vyzerajú v Jave strašne, ale je to otázka zvyku. Koniec koncov, nič iné ani neostáva, používajú sa na každom rohu. Ako to funguje? Ako sa možno vysomáriť z ich zápisu?

Májové akce Czech Scala Enthusiasts

V květnu pořádají Czech Scala Enthusiasts dvě setkání na půdě FIT ČVUT: "Scala Coding Dojo" a "Java 8 "pod kapotou" a novinky ve Scale 2.10".

Scala: Pattern matching - 2. část

V tomto článku se podíváme na speciálnější případy použití pattern matchingu a srovnání s polymorfismem, který může být alternativním přístupem k tvorbě operací nad nějakou hierarchií tříd.

Pattern matching - 1. část

Scala podporuje obecný způsob, kterým lze identifikovat jednotlivé typy objektů z hierarchie/kompozice tříd a dostat z nich potřebná data: Pattern matching, tzv. "switch na steroidech".Pattern matching představuje vlastně reverzní postup ke konstrukci objektů. Typicky potřebujeme z objektů extrahovat stejná data, která se předávala do konstruktoru...

Scala - pro a proti

I tak by se dal shrnout obsah přednášky Czech Scala Enthusiasts komunity v rámci informatického večera na FITu.Přednáška byla zamýšlena především jako motivační úvod do širokého spektra možností, které Scala přináší, poukázala na zajímavé konstrukce jazyka, které mohou ulehčit každodenní práci, redukovat boilerplate kód a snižovat prostor pro...

Dvě Scala akce ve dvou dnech

Příští týden budou v prostorách FIT ČVUT dvě akce zaměřené na Scalu. Shodou okolností termíny vyšly na pondělí 8.4. a úterý 9.4.Kdy: 8.4. od 18:00 a 9.4. od 18:30Kde: Fakulta informačních technologií ČVUT v Praze, Thákurova 9, 160 00 Praha 6V pondělí 8.4. od 18:00 bude přednáška Scala: What makes the difference v rámci cykluInformatických večerů...

Play! Iteratees pro realtime streamování dat - 2. část

V druhé části miniseriálu o realtime streamování dat v Play! frameworku se podíváme blíže na adaptování (transformace) dat a iteratees si demonstrujeme na jednoduchém příkladu streamování textu.

Java 8 - Je tu konečně revoluce?

O Javě 8 tento rok ještě hodně uslyšíme a možná se i dočkáme jejího vydání. Byla jedním z témat na posledním setkání CZJUG a i my jsme si před nedávnem udělali interní prezentaci, o kterou se s vámi chceme podělit.

Play! Iteratees pro realtime streamování dat - 1. část

Iteratee je immutable abstrakcí pro konzumenta dat, který iteruje přes skupiny dat za použití neblokujícího asynchronního přístupu. V tomto článku se podíváme blíže na zoubek konzumentům a producentům dat v Play! frameworku, v druhém navazujícím článku si potom představíme možnosti adaptování a filtrování dat a iteratees si demonstrujeme prakticky...

Czech Scala Enthusiasts spustili blog

Česká komunita Scala nadšenců sdružená ve skupině na meetup.com spustila blog czechscala.com. Zatím je ještě v plenkách, ale jeho první ambicí na jednom místě prezentovat použitelný návod, jak začít se Scalou. Postupně tam bude vznikat rozcestník na zdroje užitečné především pro začátečníky a budou přibývat vlastní články ze seriálu představujícího...

Scala case classes, třídy nejen pro líné programátory

V Etneteře proběhl další z workshopů pro zájemce o Scalu. Tématem byly case classes a pattern matching. V článku si shrneme poznatky o "case" třídách, šikovných třídách, které nám ušetří nejeden úhoz do klávesnice, na pattern matching se blíže podíváme v některém z budoucích příspěvků.

Glassfish JMS broker perzistující zprávy do Sybase ASE

How-to připojení Glassfish JMS Broker k Sybase ASE.

Scala Essentials: Pattern matching and case classes

Kdy: 26.3.2013, 19:00Kde: Fakulta informačních technologií ČVUT v Praze, Thákurova 9, 160 00 Praha 6Počínaje březnem zahajují Czech Scala Enthusiasts seriál přednášek Scala Essentials, které se budou konat každý druhý měsíc. Jsou určené pro Scala začátečníky a jejich obsahem budou tedy základní a mírně pokročilé vlastnosti Scaly. 

Úspornost Scaly

Příběh odtučňovací kúry jedné Java třídy.Nedávno jsem potřeboval v Play aplikaci vyrobit klasický stránkovaný seznam položek:Neměl jsem zrovna náladu znovu objevovat kolo, takže jsem sáhnul po existujícím řešení z našeho webového frameworku pro Javu. Díky tomu, že v Play používáme stejný (náš vlastní) šablonovací systém jako v našich Java řešeních,...

Scala Collections Workshop

V Etneteře se konal v pořadí druhý workshop zaměřený tentokrát na základní principy a techniky Scala Collections API, do kterých nás zasvěcoval agilní kouč a školitel Scaly Karel Smutný. Společně jsme kódovali příklady manipulující se seznamem modelů automobilů a poctivě testovali v duchu Test Driven Development. Co zajímavého nám Scala kolekce...

Dependency Injection ve Scale na tři způsoby

Minulé úterý se konalo setkání Czech Scala Enthusiasts Group za účelem představení Dependency Injection (DI) frameworků a technik, které lze použít ve Scale.Na půdě Fakulty informačních technologií ČVUT v Praze přivítal komunitu prof. Pavel Tvrdík, děkan fakulty, a popřál členům komunity i příznivcům funcionálního programování a Scaly z řad...

Skriptování ve Scale

Scalu jako škálovatelně navržený jazyk lze používat jak pro tvorbu velkých systémů (jako čistě objektový jazyk s bohatým typovým systémem), tak pro psaní různých skriptů (díky expresivnosti a funkcionálním konstrukcím). Psaní skriptů si představíme prakticky na příkladu dumpu dat z velké databázové tabulky do více souborů, s jejichž velikostí si...

Slick

Světy in-memory kolekcí a relačních databází se vždy velice rozhcházely. Expresivní jazyky jako Scala mám umožňují s kolekcemi pracovat skoro až deklarativně. Na druhou stranu práce s databázemi byla vždycky odlišná. Buď to byly neohrabané SQL řetězce nebo touha všechno schovat za závojem ORM a zapomenout.SLICK je knihovna, která spojuje tyto dva...

Proč bychom se báli rekurze a Scaly

Jedním z témat probíraných v kurzu funkcionálního programování Functional Programming Principles in Scala bylo použití rekurze. V tomto článku se blíže podíváme na přirozený soulad rekurze s funkcionálním stylem programování a optimalizaci rekurze ve Scale. Celý článek je k dispozici zde.

Proč jsme se v Etneteře nedávno pustili do Scaly (Proč jsme se pustili do Scaly)

Chcete svobodu se vyjádřit a posouvat (se) dopředu i za cenu občasného šlápnutí vedle nebo vám jde o eliminování chyb? Možná jednodušeji, chcete prgat podle pravidel nebo podle sebe?Scala nám zatím připadá jako pokrokový a moderní programovací jazyk. Je to esence přístupu, kterému věříme a který aplikujeme na prostředí programovacích jazyků.

RuleChain - pořadí JUnit interceptorů

Již dvakrát jsem psal o tom, jak na interceptor JUnit testů. Mojí motivací byly screenshoty Selenium testů, ale jen když selžou. Prvním způsobem je vlastní anotace @AfterFailure, což mimo jiné vyžaduje i vlastní test runner. V pozdější verzi JUnit se objevila třída TestWatchman (již deprecated). Největší nevýhodou bylo, že se volá až po metodě...

Quartz Scheduler a dynamické plánování úloh

Na zákaznickém projektu bylo potřeba umožnit asynchronní spouštění různých handlerů, registrovaných jako Spring bean. Typicky jde o případ, kdy uživatel iniciuje vykonání nějaké činnosti, která může trvat desítky sekund nebo dokonce minut. Zároveň jsme potřebovali, aby řešení bylo persistentní, a tedy aby se naplánované úlohy neztrácely při pádu...

Pohled pod kapotu JVM (1.část - prohlížení a modifikace bajtkódu)

V osmnácté části poněkud nepravidelně vycházejícího seriálu o programovacím jazyce Java i o vlastnostech JVM se budeme zabývat prohlížením a modifikací bajtkódu, do něhož jsou překládány zdrojové texty psané (nejenom) v Javě. Modifikace bajtkódu je často používána nástroji typu Cobertura, EMMA či AspectJ....

Párovacie algoritmy

K napísaniu tohoto príspevku ma priviedla potreba prepísať kus kódu tak aby bol rýchlejší. Keďže som sa už s podobným problémom stretol viackrát, tak ho považujem za celkom všedný, ale nechcem ho popisovať všeobecne, preto som si vymyslel príklad s faktúrami a platbami. Všeobecný popis problému by znel asi takto: Máme dve množiny...

Pokročilé integrační buildy

Pevně veřím, že continuous integration je již zažitý standard na všech, nebo alespoň na těch jednodušších, projektech. Chtěl bych rozptýlit případné obavy z konfigurace složitějších projektů. Ukážeme si, jak pouhým mvn clean verify nastartujeme celou SOA platformu a nad ní spustíme selenium testy.

Groovy namísto shell skriptů

Groovy Logo
Pár shell skritpů jsem už napsal – jak pro Windows tak pro Linux, ale v tomto směru se považuji za naprostou lamu a to se ještě nějakou dobu nezmění. Proto jsem fascinovaně naslouchal Dierk Königovi, který na přednášce pražského CZJUGu zmiňoval použití Groovy pro psaní shell skriptů. Vyměnit jazyk proprietárního shellu, ve kterém toho moc...

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.

Ako na refaktoring kódu v Jave?

Indikátorom či kód je potrebné zrefaktorovať sú situácie, kedy sa v kóde prestávame orientovať. Najčastejšie problémy a ich riešenia uvádzam v tabuľke....

Využití komprimovaných ukazatelů na objekty v JVM

V dnešní části seriálu o novinkách, které můžeme najít v syntaxi a sémantice programovacího jazyka Java i v jeho virtuálním stroji, si popíšeme vlastnost, která sice byla původně plánována až pro oficiální verzi JDK 7, ale nakonec ji mohou využít i programátoři a uživatelé používající JDK 1.6.0 14 a samozřejmě také OpenJDK 6. Jedná se o zavedení...

Otevřená Java 2: OpenJDK, IcedTea a Java wars

Projekt OpenJDK se poměrně rychle etabloval u většiny distribucí. Něktěří možná zaslechli zmínku o projektu IcedTea - je to, či není fork OpenJDK? A co jsou to Java wars?

Novinky v JDK 7 (5) – projekt Lambda a anonymní funkce v příkladech

V páté části seriálu o nových vlastnostech programovacího jazyka Java i jeho virtuálního stroje budeme pokračovat v popisu použití anonymních funkcí, které jsou implementovány v rámci projektu Lambda. Mezi typické možnosti využití anonymních funkcí patří implementace komparátorů, filtrů a podobně...

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

Tentokrát si předvedeme lokální, globální a slabé globální reference na javovské objekty.

Novinky v JDK 7 aneb mírný pokrok v mezích zákona – projekt Lambda

Ve čtvrté části seriálu o nových vlastnostech jazyka Java si řekneme o projektu Lambda, který sice není – a po přijetí plánu „B“ ani nebude – oficiální součástí JDK 7, ovšem tento projekt je možné poměrně snadným způsobem doinstalovat a odzkoušet i na současné verzi JDK 7 nebo OpenJDK 7.

Novinky v JDK 7 aneb mírný pokrok v mezích zákona (2)

Ve druhé části seriálu o nových vlastnostech programovacího jazyka Java i jeho virtuálního stroje, které jsou zařazeny do JDK 7, si popíšeme další rozšíření syntaxe a sémantiky Javy. Jedná se především o nový operátor nazvaný „diamant" a taktéž o rozšířené možnosti bloku try-catch-delete.

Jak vytvořit java web aplikaci s podporou Spring a JPA

Nedávno se kolega ptal na to jak vytvořit a nakonfigurovat jednoduchou aplikaci využívající Spring IoC a JPA. Aplikace má sloužit jako platforma pro jednoduché testování a jedinou úlohou bylo ukládání a čtení několika málo entit. Potřeboval přidávat nové třídy do business logiky, psát testy a výstup na web. Namísto obvyklého RTFM jsem se...

Kdo s čím zachází, s tím také schází

Lukáš Křečan nedávno napsal o tom co ho štve na Javě. Já bych ho trošku podpořil, protože občas mám pocit, jako bych roztlačoval parní lokomotivu. V poslední době jsem rozcházel několik Java projektů pro pár vývojářů, kteří chtěli nastartovat webový vývoj a musel jsem se tedy hluboce stydět. Přestože mi Maven říká pane, tak rozběhnout plnohodnotný...

Jak to bude s Javou 7?

Poslední informace o aktuálním vývoji vypustil minulý týden ve svém blogu Mark Reinhold. Kupodivu stále mají problém s closures (projekt Lambda) a s modularitou (projekt Jigsaw). Kdo by to byl čekal. Jestli to nebude tím, že jsou to oboje dost zásadní změny. Přitom třeba slavný Jigsaw mi ještě letos na jaře připadal stále dost nedomyšlený. V zásadě...

Automatický update knihoven Ehcache a Quartz

Zdá se, že automatický update se stává populárním i mezi Java knihovnami. Co si myslíte vy o automatické kontrole aktuálnosti knihovny Ehcache a Quartz od firmy Terracotta?

Selenium a návrhový vzor Page Objects

Selenium používáme úspěšně už několik posledních projektů. Vždycky byly automatizované testy přínosem pro kvalitu aplikace a ušetřily obrovské množství rutinní práce testerům. Představa, že lze vytvořit Selenium test tak, že se "nakliká", a pak ho už budeme jen dokola pouštět, vezme hodně rychle za své. Je jasné, že některé části testů bude potřeba...

Jazyk Vala - lepší Java

Jazyk Vala bude zřejmě další programovací jazyk, který se naučím po večerech, nebo když mě nebude bavit program běžící v TV. Naposledy jsem si přečetl knížku o jazyku Scala, který se překládá do Java bytekódu a ke svému běhu tedy potřebuje runtime Javy. Docela nedávno jsem se pak díval na dílko společnosti Google -- jazyk Go. Příliš se mi ale...

Jak na porovnávání Comparable objektů či pomocí Comparatou

Nemít přetěžování operátorů skutečně považuji za velký problém Javy. Proč? Např. proto, že porovnávání objektů pomocí instance třídy Comparator či porovnání objektů implementující rozhraní Comparable je boj, který pernamentně prohrávám. Mějme např. dva datumy d1 a d2. Pokud chci zjistit, zda platí d1 <= d2, pak mám následující...

JUnit anotace @AfterFailure

Na automatické testování GUI našeho produktu Orinoco používáme framework Selenium. Pro identifikaci a opravu chyby je často klíčové vědět, co uživatel(respektive selenium test) v okamžiku chyby viděl. Selenium umí uložit snímek obrazovky, ale jak definovat okamžik, kdy ho má vytvořit? Nechtěli jsme mít přesně definované, které obrazovky má pokaždé...

Java na webovém serveru: porovnání Javy a PHP

Dnes na chvíli vybočíme z praktické linie tohoto seriálu a budeme se místo další práce na naší aplikaci věnovat obecnějšímu srovnání Javy na webu s jiným používaným jazykem, a to konkrétně PHP. Podíváme se na oba jak z hlediska jazyka, tak i z pohledu nasazení na server a dostupnosti hostingu.

Selenium remote control – testování AJAXu a další finty

Na posledním projektu jsem dělal větší část práce na GUI a nehodlal jsem stále dokola klikat jak cvičená opice a raději jsem si dal trochu práce s nasazením Selenium remote control. Nešlo ani tak o jednotkové testy jako spíš o integrační a regresní testování. Zvolil jsem remote control a ne plugin do firefoxu (Selenium IDE), protože takto jsem měl...

Java, I/O a performance?

Vezměme si jednoduchý kousek kódu, který po řádcích čte data ze standardního vstupu a bez velkých cirátů je přeposílá na standardní výstup: import java.io.*; public class StreamEcho { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for (String...

Statické metódy a ich úskalia v Jave

V nasledovnom článku sa bližšie pozrieme na prekrývanie statických metód a na dôsledky, ktoré z toho vyplývajú. Nie tak dávno som bol pred problémom refaktoringu DB objektov. Aplikácia stará viac ako 7 rokov bola vyvíjaná ľuďmi čo sa na tom učili. Nikoho isto neprekvapí, že z času na čas je v takýchto aplikáciách potrebné urobiť trošku prievan...

Univerzální jazyk, děkuji nechci

Stále více sa utvrzuji v tom, že nelze navrhnout a uspět s jedním univerzálním jazykem použitelným pro všechny programové domény a cílová prostředí. Java jako jazyk si prošel dlouhým obdobím vývoje a nebojím se jej označit za jazyk zralý. Dlouhou dobu mluvím o tom, že snahy o jeho rozšíření v konečném důsledku spíše uškodí jednak ztrátou zpětné...

Assertions, takové malé připomenutí

Když byly v Jave 1.4 představeny Assertions, tak kde kdo asi očekával, že se klíčové slovo assert stane běžnou součástí zdrojových kódů. Nevím jak vy, ale jak pátrám v paměti, tak jsem snad assert nepoužil. Můžete namítnout, že to vůbec nic neznamená, ale co hůř, já jsem použití assert snad ani neviděl ve zdrojácích open source knihoven.

Rhino: na rozhraní JavaScriptu a Javy

V předchozích dílech našeho seriálu jsme si popisovali implementace JavaScriptu uvnitř webových prohlížečů. Dnes jejich svět opustíme a podíváme se na Rhino, implementaci JavaScriptu v Javě. Představíme si její interpret a kompilátor a především si popíšeme, jak JavaScript umí díky Rhinu spolupracovat s Javou.

Vyšší divčí anotací

Pokud budete v Jave definovat vlastní anotaci, tak asi určitě narazíte na to, že anotace má zvláštní syntaxi a omezení co do objektových typů, které můžete v anotaci použít. To vede k tomu, že ve vlastní anotaci můžete použít i jinou anotaci. Vrchol zápisu aneb to jak může být anotace definovaná jsem zatím viděl v Bean Validation specifikaci (JSR...

Do pranice: dokumentační anotace

Vždycky když pracuju na nějakém API v Jave 5 a vyšším tak mi chybí několik anotací, kterými bych jednoduše zdokumentoval základní rysy API, abych to nemusel znovu a znovu opisovat do javadocu. Výhodou anotací by navíc oproti javadoc verzi bylo to, že s nimi mohou pracovat nástroje a IDE. Úplně klasickým příkladem je, když chci o nějaké třídě...

Java 7, dobré zprávy z Devoxxu

ak a teď budu Sun jen chválit a nic než chválit. Dopoledne jsem byl na keynote o novinkách v Javě 7.  Nejvíc mě potěšila informace o tom, že Java 7 bude modulární. Tzn. JDK a JRE nebudou jen veliký navzájem propojený monolit, ale bude rozděleno na víc modulů. O tom už se mluvilo dlouho...

Mistrovství v C++ - recenze publikace

Obálka
Tohle je učebnice jazyka C++, , kterou mohou používat jak samouci, tak i lektoři při organizované výuce. Začíná opravdu u základů a pokračuje až po poměrně pokročilé techniky.Autoři samozřejmě začnou obecnými informacemi o jazyce C++, jeho historii a o implementacích na různých platformách, o překladu a podobně. Pak už napíší první program – co...

G1 nový grbage collector pro Javu 7

Pro Javu 7 je připraven zbrusu nový typ garbage collectoru (dále GC) nazývaný G1 (Garbage First), který slibuje přiblížení chování GC k soft real-time. Kromě předpovídatelnějších přerušení běhu aplikace by mělo být dalším cílem omezení častého úplného uklizení heapu (po tuto dobu aplikace nemůže reagovat) a třetím je snížení vlivu GC na výkon...

Spring nabyl Groovy a Grails

Rod Johnson právě oznámil akvicizi společnosti G2One stojící za dynamickým jazykem Groovy a Grails.

Problém "Božského objektu"

Setkal jsem s ním snad v každé aplikaci, ale teprve teď jsem proto našel ten správný výraz - God object. Mluvím o objektu, který plní stěžejní úlohu v celé aplikaci, něco jako centrální mozek lidstva ze seriálu Návštěvníci. Problém tohoto objektu je v tom, že neustále bobtná, výsledkem je, že máme interface s dvaceti a více metodami, což jednoduše...

jOpenSpace 2008 - Java vs. dynamické jazyky - více návratových hodnot v Javě

V záznamu z jOpenSpace na téma Java vs. dynamické jazyky jsem zaznamenal postesknutí: jediné co mi v Javě chybí je možnost, aby metoda měla více návratových hodnot. Ovšem je nutné si přiznat, že to je možné již nyní. Správný název pro objekt, který je de facto kolekcí s tou vlastností, že každý prvek je jiného typu.Simulovat tuto funkcionalitu...

Nové API pro práci (nejen) se soubory

Tak už jsem si myslel, že nám tu zůstane java.io.File na věky věků jako jediná abstrakce pro práci se souborovým systémem v Jave. Dlužno dodat trochu nepovedená abstrakce. Naštěstí za hlavu se nechytali, jenom všichni jenž byli nuceni toto API používat a tak nám vzniklo JSR 203 More New I/O APIs for the Java Platform ("NIO.2"), které bude...

Java puzzlers

Tušíte správně, dneska vás čeká pidirecenze známé knihy Java Puzzlers od Joshuy Blocha a Neala Gaftera. Kniha obsahuje 95 krátkých hříček, rébusů a hádanek, které pěkně prozkouší vaši pozornost a znalosti temných zákoutí Javy. Kniha je to zajímavá, člověk si toho hodně připomene, popřípadě naučí. Když má dost trpělivosti a nepřeskakuje rovnou...

Záludnost jménem clone

Dneska jsem s hrůzou v očích zjistil, že jsem měl základní nedostatek v tom, jak by se měla správně překrývat metoda clone(). Psát zde, že i mistr tesař se někdy utne, není na místě, protože se rozhodně za mistra nepovažuji. Pojdmě se tedy podívat na to kde leží zakopaný pes

Proč používat anotaci @Override

Jednou z nejužitečnějších anotací, kterou představila Jave 1.5, je bezesporu anotace @Override. Tuto anotaci je důležité použít pokaždé, když překrýváte metodu, kterou deklaruje předek vaší třídy. Díky tomu budete kompilátorem upozorněni, a to ne varováním jak si mnozí mylně domývají, ale rovnou kompilační chybou, ve chvíli kdy kompilátor nenajde...

Kdy je Enum roven

Když jsem včera prolétnul článek Neater Java, ve kterém je ukázána zajimává prace s Enum konstruktem/typem, tak mě překvapilo, že se pro porovnání dvou instancí enum používá equals metoda a přemýšlel jsem jestli není možné použít přímo test identity ==, když se vlastně jedná o konstantu.

Hledáme inspiraci v dynamických jazycích

Dlouhou dobu jsem, a teď použiju možná silné slovo, opovrhoval dynamickými jazyky jako je Groovy či Ruby. Postupem času mi v nich ovšem, některé věci přijdou kouzelné. Část jejich oblíbenosti určitě vychází z toho jak je výsledný kód čitelný. Můžete namítnout, že to je dané jejich syntaxí, kterou budeme v Javě těžko měnit, ale ono to není jenom tou...

Paralelní svět

V poslední době se hodně mluví o Erlangu. No a protože jsem slaměný vdovec a u žehlení se nudím, pustil jsem si přednášku od otce Erlangu Joe Armstronga. V tomto zápisku se chci o své dojmy z této přednášky podělit s vámi, mými oddanými fanoušky.

Proč je Ant generátorem špaget

Dagi napsal zajímavý článek o jeho zkušenostech z programováni v Antovi. Ano, XML nebylo nikdy určeno k programování a je jedno, že se hojně používá. A to není jenom Ant, dokonce je i XSH. I ono krásné deklarativní XSLT je zprocedurovatelné a pak se v tom prase vyznej :-(Co se ale týká mravence, tak tam je historie naprosto jasná. Na Apachi hledali...

Složené, fousaté, kudrnaté?

{}… neboli složené závorky. S Tomuchou v MA jsme jim říkali “fousaté”, Jakub Podlesak je v osmnáctém Java podcastu nazývá “kudrnatými”Jak jim říkáte vy?

Nádherný kód

Původně jsem chtěl psát o svých pokusech se Spring OSGI modulem, ale přišlo mi lepší počkat si, až se ve středu něco poučím na CZJUGu. Takže vás dneska čeká další z mých minirecenzí knih. Tentokrát budu psát o hardcore koderské knize s názvem Beautiful Code

Effective Java - druhé vydání

Kdo by z javovských programátorů neznal kultovní knihu Effective Java (v českém překladu Java efektivně - 57 zásad softwarového experta,) Joshuy Blocha. Dneska jsem narazil na rozhovor s jejím autorem v rámci letošní JavaOne, který se točil nejen kolem jejího druhého vydání, které bylo rozšířeno vzhledem k syntaktickým a API novinkám Javy 5.

Prošlá data v Javě

Asi je pořád dost programátorů, kteří chápou problém více vláken jako pokročilé téma vyhrazené pro autory operačních systémů a vědátory na školách. Možná ještě víc programátorů bere principy z jednovláknovných aplikací za platné i ve vícevláknových aplikacích - s tím, že občas je někam potřeba přihodit kouzelné slůvko synchronized (většinou...

Ještě více statická

Ač jsem velkým příznivcem dynamických jazyků namísto násilného, alespoň z mého pohledu, rozšiřování Javy, tak jsou návrhy, které mají moje sympatie. Jedním z nich je JSR 308: Annotations on Java Types, které se snaží rozšířit možnost deklarace anotace u libovolného užití typu.

Algoritmus topologického triedenia v Jave

Topologické triedenie je algoritmus, ktorý umožňuje určiť správne poradie vykonávania úloh, ktoré na sebe závisia. Príkladom je správne poradie zapisovania predmetov na univerzite, alebo určenie poradie vykonávania úloh v Ante. Ukážeme si ideu tohto algoritmu, demonštrujeme klasickú dátovú štruktúru, ktorá je výhodná pri jeho použití...

Prehľadávanie stromov do šírky v Jave

Prehľadávanie stromu do šírky je klasický algoritmus, s ktorým sa možno v praxi nestretneme až tak často, ale v rámci všeobecného prehľadu je dobré o ňom vedieť. Prinášame popis algoritmu, návrh dátových štruktúr a klasické pozorovanie, že v Jave je už aj tento algoritmus naimplementovaný (aj keď na nečakanom mieste).

Vše co jste chtěli vědět o složených závorkách, ale báli jste se zeptat

Stejně jako každý ninja musí prokázat, že dokáže zabít i roličkou toaletního papíru, i já předvedu stupeň své nezměrné zvrhlosti tím, jak dokážu používat složené závorky. Složené závorky asi používáte všichni, ale všichni před ně určitě amatérsky píšete něco jako jméno třídy, metody, if, for nebo něco podobného. To já už jsem dosáhl vyšší úrovně...

Jak pracovat s logovací knihovnou

Tento zápisek se krátce věnuje logovacím knihovnám v Javě a práci s nimi – konkrétně commons-logging a log4j. Shrnul jsem několik poznámek na toto téma.

Používáte v equals metodě getClass a nebo instanceof?

Jak jinak začít, než střelbou do vlastních řad. Tak jsem byl pro změnu zase jednou za blbce... V několika třídách jednoho modulu jsme měli následující implementaci equals metody.

List nebo Iterable?

Dnes budu psát o jedné prkotině, kterou jsme včera řešili s jedním kolegou. Zajímal by mě váš názor na to. Je to opravdu jednoduché. Představte si, že máte následující metodu:Jak vidíte dostane na vstupu nějaký seznam, ten proiteruje a na základě vstupních dat vrátí nějaký výsledek. Otázka je, jaký typ zvolit pro parametr a potažmo i návratovou...

Hledám další velkou věc

Taky hledáte další velkou věc, do které stojí za to investovat čas? Hodně lidí se v poslední době svezlo a nebo veze na vlně Ruby a Ruby on Rails. Ač jsem měl k obojímu určité výhrady, tak jsem na druhou stranu nemohl upřít inovaci, které Ruby či Ruby on Rails přineslo. Na Ruby mi vadí syntaxe a některé zkazky (zdravím Zeda Shawa) o RoR ve mě...

Nová Java: Jak z toho ven ...

Nová Java: nápadů a myšlenek je přehršel, ale je na čase se věc pokusit uzavřít a dobrat se nějakého závěru, nebo snad výsledku?

NIH podle Sunu

Zkratka NIH znamená Not Invented Here, česky by se dalo snad říci „nevymyšleno u nás“. Používá se, když někdo vymýšlí něco co už bylo dávno vymyšleno, jenom proto, že to nevymyslel on. Přesně v tomto duchu se nesla prezentace Glassfishe.

a += b vs a = a + b v Javě

Často se setkávám s tvrzením, že v Javě přiřazení a += b je to samé jako a = a + b. Také si to myslíte? Ano? Jste si tím skutečně jisti?

Groovy v příkladech: objektově orientované programování

Dnešní díl seriálu Groovy v příkladech věnujeme objektově orientovanému programování v Groovy. Ukážeme si, jak na tvorbu tříd a objektů, jaké jsou možnosti objektového programování v Groovy a podobně. A protože nejlépe se učí na příkladech, bude tento díl hlavně o nich.

Closures: opravdu děkuji, ale nechci

Po přečtení výborného článku Java: Evolutionary Dead End z pera Bruce Eckela a prohlédnutí prezentace Closures controversy Joshuy Blocha ve mě definitivně uzrálo přesvědčení, že closures opravdu, ale opravdu v Jave nechci.

Nová Java: Chceme ji? - podruhé

Je více než správné vést diskusi o tom, kam bychom chtěli, aby se "náš" jazyk posunul v blízké budoucnosti. A je-li to na sklonku roku ... proč nechtít změny realizovat v roce přicházejícím.

Nová Java: Chceme ji?

Je více než správné vést diskusi o tom, kam bychom chtěli, aby se "náš" jazyk posunul v blízké budoucnosti.

Odháčkování

Snad každý český programátor narazil na problém odstranění diakritiky z textu (tzv. odháčkování). Pro tyto účely jsem si kdysi vytvořil jednoduchou mapovací tabulku pro znaky v kódování ISO-8859-2. Nyní jsem v Javě potřeboval něco podobného a našel jsem lepší řešení

Groovy v příkladech: úvod do jazyka

V prvním díle našeho miniseriálku o Groovy se podíváme na základní datové struktury Groovy, na systém typování Groovy, na cykly, boolovské hodnoty a operátory, na komentáře, vyhodnocování proměnných v řetězcích a také na zápis víceřádkových řetězců. A co že to Groovy vlastně je? Jedná se o mladý skriptovací jazyk běžící pod JVM.

Neměňte jazyk, změňte infrastrukturu

Lehce jsem se orosil při poslechu posledního Javaposse podcastu. Pánové tam probírali změny do syntaxe a rozšiřování sémantiky jazyku Java. Nechci říkat, že mi všechny ty syntaktická cukrátka nejsou sympatická, ale vidím plno jiných oblastí, které by mohla Java 7 či 8 pokrýt a vývojáři by to dozajista ocenili také. Jednou z těchto oblastí je...

Jak na metody equals a hashCode

Chyby v metodách hashCode a hlavně equals jsou velmi zákeřné a mohou se v některých případech projevovat doslova až po nasazení programu u zákazníka; kolekce se více zaplní, konflikty v hash tabulce zapříčiní volání metody equals, ve které může být skrytá chyba. Proto je vhodné věnovat implementacím těchto metod náležitou pozornost.

Rozlucka s Macem?

Dneska mi Michal Smrz poslal link na Javalobby clanek, kde Michael Urban (pro me neznamy) horekuje nad spatnou podporou javy pod Mac OS.  Aby se Stevu Jobsovi nespalo dobre, vyhrozuje navic odlivem developeru (vcetne sebe sama - to bude ovsem ztrata!).Tematu se venuje i Roumen zde.Musim rici, ze je to opravdu skoda, ze Apple

Synchronizovat nebo označit nestálou proměnnou?

Java nabízí několik prostředků synchronizace, když pomineme Java Core API, pak jazyk samotný má v podstatě dvě klíčová slova pro účely synchronizace: synchonized a volatile. Ale kdy který použít?

Groovy: Java má vzdáleného bratrance

Když se řekne "skriptovací jazyk", většina lidí si téměř povinně vybaví jazyky jako jsou Perl, PHP, Python nebo Ruby. Skriptovacích jazyků je však celá řada a jedním z nich je právě i Groovy. Byť je Groovy kvantitativně jen jedním z mnoha jazyků, kvalitativně mezi nimi rozhodně vyniká.

Život s OC4J

Pokud mi někdo řekne, že moje aplikace má běžet v aplikačním serveru OC4J naskočí mi husí kůže. Tento reflex se mi už dostal do podvědomí kvůli řadě bezesných nocí řešením řady chyb ukrytých v kódu, ke kterým člověk nemá zdrojové kódy. Nedá se ovšem nic dělat, náš zákazník, náš pán...

OSGi klíč k rozšiřitelnosti aplikací?

Většina aplikací, na kterých jsem pracoval, vyžadovala jistou míru rozšiřitelnosti (customization) podle potřeb zákazníka a naopak, některé vlastnosti bylo potřeba přidat/odebrat podle zakoupené verze. Tyto požadavky vedou k potřebě jisté modulárnosti aplikace. Na tu se již myslelo při návrhu, to je ten lepší případ a nebo se ad hoc dodělávala,...

Neměnitelné třídy

Dnes bych chtěl psát o jedné technice, která se mi celkem osvědčuje – o neměnitelných třídách (immutable classes). Kdo četl knihu od Joshuy Blocha Java Efektivně, pro toho to nebude žádná novinka. Pro ty, kteří ji nečetli nebo si ji nepamatují připomenu. Neměnitelná třída je taková třída třída, jejíž instance nejde změnit.

Synchronizace, JMM a další špeky - díl druhý

V prvním díle našeho povídání jsme si řekli něco málo k změnám paměťového modelu v Jave, který byl představen v rámci verze 5.0. Dnes se trochu blíže podíváme na zoubek tomu, co vězí za novými třídami v package java.util.concurrent.

Synchronizace, JMM a další špeky - díl první

Nejsem si úplně jistý, kolik z Vás zaznamenalo všechny změny kolem problematiky konkurenčního zpracování, které představila Java 5. Byla to skutečně Java 5, která představila některé nové vlastnosti, které umožňují efektivní práci multithread aplikací. Pokud jste novinky v této oblasti nesledovali, pak Vám tento článek poslouží jako takové malé...

Unit testy a čistota návrhu

I když si myslím, že mám s unit testy dost zkušeností, stále ještě mě dokáží dost překvapit. Kromě toho, že se překvapuji tím jak často je „zapomínám“ psát, překvapují mě většinou pozitivně. Zrovna nedávno mě překvapily znovu. Psal jsem program, který mimo jiné prohledává adresář na disku, poté nalezené soubory zpracovává, přesouvá jinam,...

Java Module System

Pro Javu 7 se chystá vylepšení v oblasti nasazení (deploymentu) aplikací z hlediska modularity, verzovatelnosti a správy. To byla ta příznivější část sdělení, ta druhá méně potěšitelná je, že to zatím nevypadá na kompatibilní řešení se specifikací OSGi - The Dynamic Module System for Java, na kterém stojí například produkty z rodiny Eclipse...

Dáte si džus? Máme Google Guice.

Pod křídly, která poskytla firma Google, vzniknul velice zajímavý projekt inversion of control frameworku postaveného na vlastnostech Javy 5 - anotacích a generikách. Framework nese název Guice, celým názvem Google Guice a vzniknul na základě potřeb aplikace AdWords. Další zajímavostí je, že se Guice hrdě hlásí k Spring frameworku.

Syntaktická cukrátka v Javě 7

Je libo a nelibo synataktická cukrátka? Java se po vzoru dalších jazyků vydala na cestu přidávání nových syntatktických cukrátek. Podle zveřejněných informací verze 7 zřejmě tento trend jenom potvrdí. Pokud mají syntaktická cukrátka něco společného, pak je to fakt, že rozdělují komunitu ve dví. Co je dni vítají s otevřenou naručí, druzí nemohou...

Proč se Microsoftu nedaří porazit Javu?

Jak jsem již psal ve spotu TIOBE: Java 6x populárnější než .NET a ve spotu Java skutečně poráží .NET?, tak je Java stále mnohem populárnější než technologie .NET a navíc rozdíl se stále zvyšuje. Podle TIOBE je rozdíl dokonce 6x. Jak je to možné?

Java skutečně poráží .NET?

Dnes bych chtěl navázat na svůj článek TIOBE: Java 6x populárnější než .NET, kde jsem komentoval aktuální výsledky TIOBE index populárnosti programovacích jazyků. Dostal jsem mnoho emailů, z nichž některé snižovali význam nebo kritizovali vlastní TIOBE index. Hledal jsem tedy další zdroj, který by TIOBE výsledky potvrdil nebo vyvrátil. Podařilo...

TIOBE: Java 6x populárnější než .NET

TIOBE Programming Community Index je velmi zajímavá služba podle které lze orientačně zjistit, jaké programovací jazyky jsou na na světě nejpopulárnější a v jakém jsou vzájemném pořadí. Služba funguje již od roku 2001 a její výsledky jsou někdy překvapující. K dnešnímu měsíci, březen 2006, je nejrozšířenějším programovacím jazykem na světě Java s...

Komu zvoní hrana

Bylo to jako píchnutí do vosího hnízda… Že netušíte, o čem mluvím? Bruce Tate autor několika bestselleru o Jave se v jednom z rozhovorů nechal slyšet, že jave v konfrontaci s nestupujícími technologiemi jaksi dochází dech. To byla rozbuška, v kontextu vosího hnízda spíše vržený kámen, která vyvolala bouřlivou diskusi.

 
strana 1/1celkem 131 položek