Archive for the ‘Java EE’ Category

Lazy Loading nie ma sensu?

W najnowszym artykule z serii Receptury projektowe – niezbędnik początkującego architekta, Sławek Sobótka traktuje o mapowaniu relacyjno-obiektowym prawdziwych obiektów na kanwie DDD i JPA. Udowadnia 3 tezy:

  • Lazy Loading nie ma sensu,
  • Mapowanie @OneToMany z wykorzystaniem tabeli linkującej (domyślne zachowanie hibernate) nie ma sensu,
  • Blokowanie Optymistyczne oparte jedynie na @Version nie ma sensu

Artykuł tradycyjnie dostępny jest za darmo w wersji pdf na stronie Autora.

Wyraź siebie dzięki adnotacjom

Wujek Bob prawi, że nadmierne komentowanie to zło (czasem zło konieczne?). Google Annotations Gallery to ciekawa biblioteka, pozwalająca wyrazić nie tylko komentarz, ale także intencję autora, poczucie humoru, stosunek do kodu, a może i coś więcej?:)

Poniżej kilka ciekawych adnotacji:
Read the rest of this entry »

Zarządzenie złożonością przez trójpodział logiki – Open/closed principle w praktyce

Open/closed Principle to jedna z zasad SOLID.

Kod powinien być otwarty na rozbudowę jak kwiat lotosu o świcie i zamknięty na zmiany jak kwiat lotosu o zmierzchu

Jednak jak w praktyce zastosować tą zasadę? Czy aplikuje się ona jedynie na poziomie Object Oriented Design czy również na poziomie architektury aplikacyjnej?
Read the rest of this entry »

4C – Zwinne podejście do odkrywania i dokumentowania architektury

W kwietniowym wydaniu magazynu Programista ukazała się trzecia część artykułu z cyklu Receptury projektowe – niezbędnik początkującego architekta. Tym razem Sławek Sobótka odpowiada na pytanie: W jaki sposób dokumentować architekturę systemu?
Read the rest of this entry »

Zagadka: hackujemy kalkulator

Dawno nie było zagadki! Dziś łamigłówka dla hackerów:)
Poniżej znajduje się klasa Calculator implementująca metodę add. Metoda działa poprawnie (o ile nie przekroczy się zakresu inta, ale to nie jest przedmiotem zagadki). Należy tak zhackować kalkulator, aby źle dodawał:)
Read the rest of this entry »

How to create a Memory Leak

Krótki artykuł pokazujący – na podstawie dwóch przykładów – jak łatwo można spowodować wycieki pamięci w Javie. Pierwszy przypadek dotyczy elementów kolekcji, które mają nieprawidłowo zaimplementowane metody equals()/hashcode(). Natomiast drugi traktuje o zachowaniu klasy String w pewnych sytuacjach.

Memory Leak

Mock czy Stub? Command-query Separation prawdę ci powie

W lutym pisałem o Czterech smakach odwracania (i utraty) kontroli – pierwszym artykule z cyklu Receptury projektowe – niezbędnik początkującego architekta. Dziś zachęcam do lektury drugiej części pt. Mock czy Stub? Command-query Separation prawdę ci powie.
Read the rest of this entry »

Do You Really Get Classloaders?

Jevgeni Kabanov (ZeroTurnaround) opowiada o niuansach pracy nad JRebel, skupiając się na aspekcie przeładowania kodu aplikacji bez restartu serwera. Mechanizm ładowania klas omawia zarówno od strony JVM jak i programisty. Każdy problem (np. NoClassDefFoundError, LinkageError) przedstawia na przykładzie i podaje rozwiązania. Wyjaśnia jak obiekty, klasy i classloadery są ze sobą powiązane.
Read the rest of this entry »

Jak zamienić wartości 2 zmiennych bez zmiennej tymczasowej?

Pamiętacie pewnie z Algorytmów czy Metod Programowania, jak trzeba było zamieniać wartości zmiennych miejscami, np. w algorytmach sortujących. Pisało się wtedy kod w stylu:

tmp = i
i = j
j = tmp 

Poniżej prezentuje znalezione przeze mnie sposoby, jak zamienić wartości dwóch zmiennych bez użycia zmiennej pomocniczej.
Read the rest of this entry »

Nie polegaj (tylko) na testach jednostkowych

Tomasz Nurkiewicz w swoim artykule pisze, aby nie polegać tylko i wyłącznie na testach jednostkowych. Przekonuje, że 100% pokrycie kodu testami nie wystarcza. Złożony system klasy enterprise wymaga testów integracyjnych, testów komponentów a nawet testów całego systemu.