Olen vanhana jääränä koodaillut toistaiseksi aina kaiken pelkällä editorilla. Nuoruusvuosina QBASIC (no, se on periaatteessa IDE…), sitten UltraEdit-32, siitä eteenpäin vim. Projekteja on ollut erikokoisia, ei kuitenkaan isoja. Isojen projektien puute lienee se syy, miksen ole “joutunut” adaptoitumaan isojen poikien IDE-leikkeihin. Vimillä pystyy toteuttamaan varsin hyvin melkoisia järkäleitäkin, mutta nyt olen pysähtynyt miettimään, onko siinä mitään järkeä.
Ensimmäinen vaatimus IDE:lle on tietenkin, että sen saa joko käyttämään vimiä editorinaan tai ainakin tukemaan vi-näppäimiä. Kielinä pitäisi olla javaa. Eclipse on aina valintana, mutta päätinkin ottaa NetBeansin.
Olen IDE:jä karsastellut monesti ihan sen takia, että Vimin monet hienot puolet, kuten kiva täydennys ja helppo kustomoitavuus, jäävät pois. Pelkät näppäimet ja modaalisuus ei vielä tee Vimiä. Toimivatko tekstioliot, entä visual-mode; makrot? Jäämme jännäämään: pannullisella kahvia luulisi pääsevän Walla-Wallaan asti. Jos NetBeans ei nappaa, voin poistaa sen.
Emergen suorituslistaus näyttää tylyltä. Valtava määrä paketteja dev-java
-osiosta ja 560 megatavua ladattavaa. Mahtaa olla iso siivous edessä, jos haluaisi joskus päästä eroon turhasta kuonasta. Muistelin, ettei Eclipse noin paljoa vaatinut. Myös NetBeans on javalla kirjoitettu IDE, joten odotettavissa on raskaita käynnistysaikoja.
Kääntelyn valmistumista odotellessa mietitään Javaa
Javalla kirjoittelemiani projekteja muistellen pysyy välttämättä mielessä sen tympeys, raskaus. Kaikki vaatii luokan luokan luokkia, organisoituna ties minkälaisissa rakenteissa. Hyvänä puolena on toki se JVM, eli tuloksena on yllättävän nopeata ja porttautuvaa koodia. Näen tämän vahvana tekijänä, miksi ylipäätään teen Javalla mitään harrastepohjalta. Python ja siihen graafinen puoli, vaikkapa wxPython, tekee heti loistavasti javalle vastusta, ja on myös portattava, mutta se vaatii sitten jo paljon vähemmän käytettyjä palikoita kohdekoneillansa. Javaa tuputetaan muodossa jos toisessa.
Niin, miten tämä liittyy mihinkään? Javallehan on hyviä vastineita, jotka pyörivät JVM:n päällä, näin ollen kytkeytyen Javan laajaan kirjastoon ja porttautuen. Miltä kuulostaisivat funktionaaliset ja joustavat JVM-kielet, kuten multiparadigmainen Scala ja puhtaasti funktionaalinen, S-lausekkeita käyttävä Clojure? Pikaisella tutkimisella NetBeansin saa “tukemaan” molempia näistä, joten jos joskus jaksan opiskella näitä kieliä (mikä perus-Javan raskauden tuntien ei olisi mikään paha nakki), olisi sitten kiva toteuttaa itseään hyvien kirjastojen ja yhteensopivuuden parissa. Mitä tekee vaikka Common Lispillä, jos lähin rajapinta, mihin sen saa kytkettyä, on C-moduuli? Haskellkin kääntyy vain natiiviksi, joten sen levittämisessä on haasteensa. Clojure voi hyvinkin olla se S-lausekieli, jonka tulen opiskelemaan. Ellei se Emacs-kärpänen muni silmään, ja opiskelenkin elispin, muodostaen kaikenkattavan käyttöjärjestelmän.
Plugineja
Käännös on vasta kolmasosassa. Netbeansin sivuilta löytyy Plugin Portal ja en näekään yllätyksenä, että Vi-näppäimet toteuttava jVi on toiseksi “paras” plugari joukossa tummassa.
Ja NetBeans ei edes tarvitse pluginia hienolle Swing-suunnittelijalle. NetBeansia sanotaankin RAD:ksi, vaikka yleensä on jäänyt paha maku suuhun valmisbuildereista. Järjestäisiköhän avoin AMK NetBeans-kursseja? Nämä softat ovat aivan liian isoja oppia optimaalisiksi.
Pizzaa väliajalla
Käännöstyö jätetään taustalle, nyt pidetään ansaittu pizzatauko. Opera special. Musiikkina Les Claypoolin näkemys Floydin Animals-levystä. Elämä hymyilee!
NetBeans
Viimein, NetBeans käynnistyy. Starttiaika on varsin nopea, joten ei siinä mielessä hätää. Ohjelman ulkoasu on varsin sliipattu, ja vaikka hyvin javainen onkin, näen sen varsin tehokkaana. Näppäinyhdistelmiä on mietitty ja paiskottu riittävästi ympäriinsä.
Yhdistelmän C-i
takaa löytyy eräänlainen spotlight-haku, johon näppäilin satunnaisia tekstejä, ja tuloksena tuli eri kirjaston luokkia ja osia, ilmeisesti dokumentointiin. Erittäin hyvä homma. Tavallisempi C-f
toimi sitten hakuna senhetkisestä ikkunasta. Vimin tavoin hakuteksti jäi highlightattuna puskuriin.
Mutta mitäs sitten kävikään? Yritin raahata Tasks-paneelia alaspäin, ja koko laitos rojahti kasaan. Segfault, vanha kunnon segfault. Ellen väärin tulkitse logia, natiivi libX11-kirjasto faulttasi — kenties vääriin arvoihin? Yöksi jätän päivittämään paputölkkiä uusimpaan versioon.
Asensin tuon jVi:n. Toimii saatanan upeasti. Jopa erikoisemmat, kuten gUip
, toimivat sellaisenaan. Hidas tämä kyllä on, sitä ei käy kieltäminen. Vimin ydintoiminnot on siis käännetty javaksi, jotta maksimaalinen toimivuus taattaisiin. Otan toki mieluummin saumattoman toimimisen kuin epävarman kikkailun nopeammalla moottorilla.
Mutta outo ongelma nousee esille, voi liittyä vaikkapa Xmonadiin. Ikkunoita availlessa ja takaisin tekstieditorin puolelle siirryttäessä se lakkaa ottamasta mitään vastaan. Ei näppäimiä, ei syötettä. Hiirellä voi sohia sinne, muuta ei.
Näihin ongelmiin luultavasti vastataan helpommin, kun olen päivittänyt sekä NetBeansin että jVi:nkin, joka näyttää toimivan vain uusimmalla NB:llä. Hassusti en saa tätä kiinni — File-valikko ei aukea ja mikään tavanomainen sulkeminen ei onnistu. Vain kill
auttaa. Aikamoinen peli.
Päivitin softan 6.9:iin ja jVi:n versioon 1.3.0. Kivoja muutoksia, mutta näppäimistöongelma näyttääkin johtuvan Xmonadista. Käynnistellessä sitä suoraan dmenun kanssa ongelmaa ilmenee, mutta kun pakotin AWT_Toolkitiksi MToolkitin, (vanha Xmonad-kikka javaongelmille), näyttäisi toimivan. Kokeilin vain lyhyesti. Tuon toolkitin uudelleenvalinta hämää, sillä minulla on jo kyseinen exportti .xsession
-tiedostossa. Olisiko muuttuja resetoitu jossain yhteydessä tahi muuta ikävää.
Pelkkä AWT_Toolkitin uudelleenasetus ei riittänyt, kuten vähän ounastelin. Uusin yritys on nostaa export _JAVA_AWT_WM_NONREPARENTING=1
, ja nyt näyttää toimivan vakaammin. Olen vekslaillut ikkunasta pois ja takaisin monta kertaa. Jos ei mikään, viimeisenä keinona on ottaa tuorein Xmonad repoista ja laittaa patchia siihen, minkä on sanottu hoitavan homman kotiin. Täytyy sanoa, että NetBeans tekee paljon hienoja asioita koodaajan puolesta. Vielä kun valmiiksi listattavat javadocit, funktiorungot sun muut saisi vaikka tabilla hypeltäväksi kuten Snipmaten kanssa.
No, eipä tuo pitkään näyttänyt auttavan.
Tuo NetBeansin GUI-suunnittelu näyttää todella herkulliselta. Minulla olikin eräs projekti, johon ajattelin suunnitteluguin tehdä. *Hieroo käsiään… * Ja asennetaan muuten tuo nbGit
, joka tuo Git-tuen.
Raportoidaan huomenna tai tässä viikonlopun mittaan lisää.