Posted by: Ivko | November 15, 2009

Избор на седмицата (46/09)

Днес имаше доста интересни събития: Йорданка Фандъкова стана кмет на София, а джакпотът в Тото 2 падна. Освен това, станах лекичко на 30 години. При този водовъртеж от случки, ето какво реших да ви представя за край на 46-тата седмица.

Beautiful code with Goggle Collections and Guava, part 4

Това е posting от миналата седмица, но тогава нямах време да му обърна внимание, пък и имаше друго какво да представя по темата (а именно третата част). Не бих искал обаче да пропускате тази серия, защото там са представени някои доста интересни неща.

В началото авторът ни представя няколко интересни операции (сечения, обединения, разлики и пр.), които можем да правим със Set-ове и Map-ове и които ни спестяват значително количество код. Следва най-интересната функционалност поне за мен: validation на дадени променливи. С използването на static imports се постига валидация на данни подобна на JUnit assert-ите и assert ключовата дума в java-та, като даже тази валидация може да става при присвояване на даден входен параметер (в конструктори да речем). Не е споменато конкретно, но най-вероятно, ако валидацията не мине, се хвърля unchecked exception.

Остатъкът от статията е посветен на една доста интересна структура – Multimap. Това е стандартен Map, на който value-тата са колекции. Това, което въпросният Multimap ни дава вповече са по-лесни методи за достъп и добавяне на конкретни елементи във въпросните колекции без да се налага да се викат няколко getter-а и да се правят излишни проверки за null. Другата възможност на Multimap-овете е да се разбиват списъци на базата на даден критерий, като този критерий се задава в познатия ни от миналата седмица Funtion предикат.

Using Java CDI in JSF 2.0 application

След като в миналия брой ви представих започналата на TheServerSide поредица за Java Contexts and Dependency Injection (CDI), ето още една кратка статия по темата, този път на sun.com.

Представено ни е едно сравнително просто Web приложение, което колкото и да е просто, успява да ни демонстрира мощта на CDI и на няколко други feature-а. Можем съвсем спокойно да дефинираме функционалността на приложението в даден клас, да го обявим за Managed bean и след това да го извикваме от кода в HTML страничката. Показано е и как да си създадем собствени анотации, които да използваме в dependency injection процеса както и кода, който стои зад тях.

Simplify Native Code Access with JNA

В тази статия на java.net може да видите как по много прост начин може да извиквате native функции от Java. За целта просто трябва във вашия classpath да сложите jna.jar и библиотеките, които искате да ползвате (dll или so). Самият Java Native Access (JNA) се базира на създаването на proxy-та на native функциите, като за целта трябва да дефинирате интерфейс, чиито методи да са с абсолютно същите имена, параметри и връщани типове като native-ите. Mapping-ът между простите типове е лесен. Авторът обаче показва как може да симулираме структури, указатели и null-terminated string-ове в Java. Направена е и съпоставка между JNA и Java Native Interface (JNI). Накрая е разгледан един от проблемите, които има при съответствието на C структурите и тяхното Java представяне.

Project of the week

Тази седмица съвсем случайно ми попадна едно доста интересно предложение качено на kenai.com – YouDebug. По всичко изглежда, че автор на приложението е Kohsuke Kawaguchi, познат повече със своя Hudson Continuous Integration продукт.

YouDebug е нещо, което би ни било от страхотна помощ, ако се налага да debug-ваме нашите приложения, но нямаме техническата възможност да го направим (примерно, когато програмата е вече при клиенти и няма как да осъществим remote-на сесия). YouDebug ни предлага с помощта на скриптов език (Groovy) да указваме на кои точно места в кода искаме да сложим breakpoint и какво искаме да проверим там. Breakpoint-ите могат да са както на определен ред от даден клас, така и в случай на хвърлен Exception. След като сме указали при какви условия искаме да има breakpoint, имаме възможност във въпросните точки да видим съдържанието на променливи, да изчисляваме стойността на прости или сложни изрази, да правим thread dumps и пр.

Единственото, което трябва да направи клиентът в случая, е да пусне YouDebug с въпросния Groovy script. Приложението се закача за вашата програма по същия начин, както и средата ви за програмиране – по Java Debug Interface.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: