Programowanie w języku Java

Pytania w tym artykule pojawiły się podczas szkolenia Programowanie w języku Java realizowanego w dniach 26-30.06.2017 r.


Czy jest sens wyciągać przed pętlę wywołanie bądź wyrażenie, które określa limit pętli? Np. int n = nodeList.getLength(); for(int i=0; i<n; i++){...}

Generalnie: tak. Jeśli tego nie zrobimy, kompilator javac wygeneruje taki bajtkod, w którym wywołanie metody getLength() (przykładowo) będzie wykonywane za każdym razem, łatwo to zaobserwować. Optymalizacje może wykonać już podczas wykonania maszyna wirtualna, ale ich efektów tak łatwo nie zobaczymy i nie możemy ich być pewni. Znanym faktem jest jedynie optymalizacja w przypadku, gdy limitem jest długość tablicy (t.length). Ja rekomenduję po pierwsze używanie pętli for-each, gdy tylko się da, a kiedy się nie da (i nie chodzi o długość tablicy), wyciąganie wyliczenia limitu przed pętlę i zapisanie go na zmiennej final; to na pewno nie pogorszy, a może podnieść wydajność.


Czy parametry zapytania SQL w JDBC można ustawiać używając symbolicznej notacji :parametr i nazwy zamiast ? i numeru pozycji?

W „gołym” JDBC takiego rozwiązania nie przewidziano. Jest ono natomiast dostępne w ramach JPA ("Hibernate") kiedy zapisuje się własne zapytania w JPQL.

Jakie są korzyści z używania narzędzi do budowania projektów?


  1. Wygoda uruchomienia procesu budowania i możliwość jego automatyzacji. Jeśli mamy odpowiednio zainstalowane narzędzia i odpowiednio przygotowany projekt, wystarczy w konsoli wpisać "ant" albo "mvn package" i już. Nie tracimy przy tym możliwości pracy w IDE - środowiska też „rozumieją” konfiguracje wpisywane dla narzędzi do budowania.
  2. (dotyczy głównie Maven-a) Ustalenie standardowej struktury projektu i sprawienie, że będzie dostępny (otwieralny) w różnych narzędziach.
  3. Deklaratywne opisanie „zależności” projektu (czyli innych projektów, z których on korzysta) i pobieranie ich w tle przez narzędzie zamiast ręcznego kopiowania plików.