Drukuj - Vavatech.pl

Transkrypt

Drukuj - Vavatech.pl
Vavatech.pl
Programowanie w języku Java - 3 pytania i odpowiedzi ze szkolenia
(wrzesień 2016)
2016-09-02
Pytania w tym artykule pojawiły się podczas szkolenia Programowanie w języku
Java realizowanego w dniach 29.08-02.09.2016r.
Patryk Czarnik
SENIOR JAVA DEVELOPER AND TRAINER
W naszej pracy mamy do czynienia z projektami w starszych wersjach
Javy. Jakie są ograniczenia w Javie 1.6??
"W Javie 6 najbardziej dokuczliwy może być brak konstrukcji "try with resources", czyli
eleganckiego sposobu na skuteczne zamykanie plików i innych zasobów. Do Javy 6 porządne
zamykanie plików, połączeń itp. wymagało użycia bloku finally i dosyć skomplikowanego
zapisu, który prezentuję też na szkoleniu. Oczywiście w każdej wersji Javy pojawiały się nowe
rzeczy w bibliotece ("Java API"). W Javie 6 było to m.in. wsparcie dla webserwisów i niektóre
technologie XML-owe, w Javie 7 dużą nowością było java.nio.file ułatwiające korzystanie z
plików dyskowych. Java 8 wprowadza całą tę "funkcyjność", ale to już dużo poważniejsza
zmiana."
A Java 1.4??
"W Javie 1.4 przede wszystkim zupełnie inaczej korzysta się z kolekcji. Nie ma mechanizmu
"genericów", a więc kolekcje mogą zawierać dowolne obiekty i sami musimy pilnować tego,
czy umieszczamy w nich obiekty właściwych klas. Przy pobieraniu z kolekcji konieczne jest
rzutowanie. W JAvie 1.4 nie ma też pętli for-each i dla tablic trzeba używać tradycyjnej pętli z
licznikiem, a dla kolekcji - trzeba używać iteratorów: Iterator it = kolekcja.iterator();
while(it.hasNext()) { ..."
Czy jest jeszcze sens używać JDBC skoro jest Hibernate / JPA?
"Odpowiedź subiektywna: nie jestem wielkim miłośnikiem nakładek i ""frejmłorków"", chociaż
szczerze doceniam fakt, że Hibernate/JPA to naprawdę zaawansowana maszyneria, dzięki
której można sprawniej tworzyć projekty; ma i inne zalety jak choćby niezależność od rodzaju
bazy danych. Jednak zazwyczaj wolę widzieć co się dzieje w aplikacji, dlaczego działa,
dlaczego nie działa. Odpowiedź obiektywna: są sytuacje, gdy świadomie chcemy skorzystać
z zaawansowanej możliwości konkretnej bazy danych (np. Oracla, który ma swoje
rozszerzenia w temacie agregacji), której nie wspiera ogólny z założenia JPQL; chcemy mieć
pełną kontrolę nad połączeniem i zmieniać jego ustawienia w trakcie sesji... w tego typu
sytuacjach bezpośredni dostęp po JDBC może okazać się niezbędny. Ostrzegam też, że
naiwne korzystanie z możliwości JPA może prowadzić do pisania nieefektywnych aplikacji.
Nie chodzi mi o to, że JPA jest niewydajne, bo narzut jest niewielki, tylko o to, że leniwy
programista może użyć go niewłaściwie i np. zamiast filtrować bądź grupować po stronie bazy
danych, wczyta wszystkie dane do pamięci Javy i dopiero będzie je przetwarzał - tak się nie
robi!"