Posted by: Ivko | December 20, 2009

Избор на седмицата – 51/2009

Straw-man proposal for closures

Спомняте си преди време, когато Mark Reinhold обяви на Devoxx голямата новина, че ще има closures в Java? Closure-ите, или както официално ги наричат lambda expressions, представляват най-грубо казано блокове от код, които могат да бъдат предавани като параметри и да бъдат присвоявани на променливи.

След еуфорията, мненията за и против и т.н. дойде ред и за истинската работа. Тъй като самите closures ще влязат в JDK 7, който е open source, те естествено влязоха там като стандартен проект.

Пак там може да бъде разгледан и т.нар. straw-man proposal. Това е стандарно наименование за най-груб прототип на нещо. В този случай може да видите какво ще представляват closure-ите, как ще се дефинират, какво ще е позволено да се прави с тях и т.н. Доста интересно четиво за хората, които пишат на езици, където тези lambda expression-и са нещо нормално.

Java EE 6 observer pattern

Java шампионът Adam Bien продължава с кратките си статийки, с които ни демонстрира какво можем да правим в Java EE 6 и по-важното – как да го направим. Тази седмица дойде ред на класически observer pattern.

За тези, които не са чели книгата на GoF, набързо. В observer pattern-а имаме едно събитие, което се генерира от единият участник в програмата. Имаме и група от други участници, които са се регистрирали следят за това събитие.

За да стане по-ясно, още малко пояснения. Всички сте виждали progress bar при изпълнението на дълги операция (като инсталиране или разархивиране да речем). Ако зад този progress bar стои някаква логика, то обикновено тя е изпълнена посредством observer pattern-а. Имаме модулче, което върши работата и при всяка успешна стъпка (инсталиран или разархивиран файл) генерира събитие. Имаме и модулче (нашият progress bar), което се е регистрирало за това събитие. Когато получи поредното такова, модулчето прави нещо (в нашия случай линията на прогреса се премества леко вдясно).

След това опресняване, може да видите как Adam Bien ни предлага да осъществим това нещо със средствата на Java EE 6.

DataSource resource definition in Java EE 6

Въпреки че имаме технологии като JPA, в нашите приложения все може да ни се наложи отвреме навреме да изпълняваме чист JDBC код. За целта ни трябва достъп до базата данни. Този достъп се осъществява посредством DataSource обект.

В тази статийка може да видите как да инициализирате нужния обект (даже по два начина) и след това как да си го вземете на мястото, на което мислите да го ползвате.

Новина на седмицата

След няколко milestone-а и release кандидата Spring 3.0 е вече globally available. Новите неща във framework-а може би се знаят наизуст от феновете на Spring, но за тези от вас, които не си лягат и стават с речите на Rod Johnson, ето отново техния списък.

За мен лично най-впечатляващи са няколко неща:

  • Още повече се ограничават XML конфигурациите и се въвеждат някои стандартни dependency injection анотации (като познатата от Guice @Inject)
  • Поддръжка на JSR 303 – Bean validation. Вече може да укажете във вашите bean-ове кое не трябва да е null, колко трябва да са минималните и максималните стойности на полетата и много други такива и по-сложни constraint-и. След това всички слоеве нагоре си знаят тези неща и не ви се налага да ги кодирате отново във вашите web форми да речем. Това е много добре познато от Hibernate 4.0
  • Поддръжка на REST web service-и

С нетърпение чакаме и излизането на третото издание на Spring in Action.

За край, бих искал да ви напомня да си дадете мнението за тази рубрика (ако не сте го направили) в нашия poll.


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: