Silläkin uhalla, ettette jaksa enää kuunnella juttujani Java-kehityksestä, sanon pari asiaa, jotka olen oppinut:
Olen ensimmäisen kerran ymmärtänyt, miksi ihmiset käyttävät IDEjä. Se johtuu siitä, että Javan tyyppimääritykset ovat oikeasti tosi tosi pitkiä kirjoittaa. Toisin kuin C:ssä, jossa tyyppimääritys on esim. "int" tai "ini_map *", Javan tyypillinen tyyppimääritys on "ParameterMapCrunchyDto" tai "ImmutableList<CachingQuantumLeapLandingSite>", jonka lisäksi tulee vielä jokin import, jossa on package-polku pitkä kuin nälkävuosi. Eli siis, pitkiä, tuskaisia nimiä, joita on mahdotonta muistaa. Ja sitten vielä kulttuuri, jossa ei tietenkään voi (tai "kannata") käyttää samaa luokkaa sisäiseen tiedon esittämiseen ja rajapintamäärityksiin, vaan kirjoitetaan oma structi kaikkeen (JSON-tietue, tietokantatietue, sovelluksen sisäinen tietue) ja sitten siirrellään tietoja niiden välillä. Ja tietenkin kirjastoissa kaikissa käytetään eri tapoja esittää esim. päivämääriä, HTTP-kyselyitä, jne, ja sittenhän voi mukavasti konvertoida näiden välillä jne jne...
Sitten opin, miksi Java-kehittäjät niin mielellään käyttävät debuggereita. Debuggerihan on kätevä, paitsi että sen komennot ovat vähän pitkiä kirjoittaa ja/tai joutuu käyttämään hiirtä, mikä on hidasta. Sen sijaan on hyvin nopeaa kokeilla erilaisilla syötteillä, mitä mikin funktio palauttaa, ja lisätä erilaisia debug-printtauksia, joista saa tietää, missä tilassa mikin muuttuja on ohjelman suorituksen eri vaiheissa. No, Javassa ei ole koskaan ollut järkevää REPLiä, jossa niitä funktioita voisi kokeilla, ja muutenkin ne funktiot on jaettu erilaisiin singleton-komponentteihin, joihin pitää saada jostain referenssit (eli REPLiin tarvittaisiin jonkinlainen jälki-inject-tuki). Sitten print-debuggaus on hankalaa Javassa, koska ohjelmien uudelleenkäynnistys on tosi hidasta, ja kaikenlaisten olioiden oletus-toString on kamala eikä kerro yhtään mitään. Eli joutuu kirjoittamaan vähän paljonpuoleisesti koodia saadakseen ajonaikaisesti tulostetuksi jonkin lausekkeen tuloksen, ja sittenkin kestää, ennen kuin saa nähdä tulokset.
Eli käytännössä, Java-koodaajat käyttävät debuggereita, koska ne osaavat reflektiolla näyttää, mitä ohjelman tietorakenteet oikeasti sisältävät.