Języki

Erudis - your road to knowledge
Nowe technologie
Streszczenie: 

 

Java EE 6 zaowocowało wprowadzeniem trzech nowych, bardzo ważnych technologii:

  • Java API for RESTful Web Services (JAX-RS)
  • Contexts and Dependency Injection for the Java EE Platform (CDI)
  • Bean Validation

Pierwsza z nich, JAX-RS, jest ustandaryzowaniem sposobu tworzenia usług sieciowych typu REST – bardzo popularnych i w swoim zakresie zastosowań przydatnych ze względu na prostotę i łatwość użycia.

Konsekwencje wprowadzenia CDI są znacznie poważniejszym, jest to najprawdopodobniej najbardziej znacząca nowość w Java EE 6. Java EE 5 umożliwiała odwoływanie się do zasobów zarządzanych przez serwer aplikacji przy użyciu mechanizmu wstrzykiwania zależności (ang. Dependency Injection), dotyczyło to jednak tylko ograniczonej liczby a priori określonych przez specyfikację zasobów (komponenty EJB, źródła baz danych, czyli obiekty DataSource, EntityManager technologii JPA, itp.).

CDI pozwala na wykorzystanie wstrzykiwania zależności w dowolnych klasach, możemy napisać własną klasę, a jej obiekty będzie nam wstrzykiwał na żądanie serwer aplikacji. Jedyna rzecz, którą trzeba zrobić, to oznaczyć swoją klasą odpowiednią metadaną, javax.annotation.ManagedBean. Jest to funkcjonalność dobrze znana użytkownikom szkieletu aplikacyjnego Spring.

Dodatkowo dla każdego komponentu zarządzanego można zdefiniować jego zasięg (sesji, żądania), ma to szczególne znacznie dla komponentów EJB, gdyż nie są one w żaden sposób świadome zasięgów aplikacji webowych, a dzięki CDI można ich używać na przykład w miejsce zwykłych komponentów zarządzanych JSF.

Walidatory (ang. Bean Validation), czyli ustandaryzowany sposób walidacji danych, jest w sumie dość prostym rozwiązaniem, ale niezwykle pożytecznym. Problemy z walidacją pojawiają się wtedy, gdy musi być ona przeprowadzana w kilku warstwach aplikacji.

Na przykład pewne dane są wprowadzane w warstwie interfejsu użytkownika, następnie przetwarzane przez warstwę logiki biznesowej i wreszcie trwale zapisywane przez warstwę komunikacji z bazą danych. Powinniśmy walidować dane we wszystkich trzech warstwach, co oczywiście może spowodować duplikowanie kodu lub, co gorsza, pojawienie się innych reguł walidacji w każdej z warstw.

Walidatory pozwalają umieścić walidację w jednym miejscu, a odbywa się to poprzez dodanie odpowiednich metadanych, na przykład @NotNull, @Size(min=5). Można również łatwo tworzyć własne metadane walidujące, które pozwalają zdefiniować dowolne reguły walidacji, jakich wymaga nasza aplikacja, na przykład @Pesel, @Nip, itp.