IntelliJ IDEA

IntelliJ Idea on yksi vaihtoehto Eclipselle.

# asennusedistyy20

Ohjeet ovat vielä keskeneräiset. Täydennä niitä sitä mukaan kun käytät.

Alla ohjeet videona, mutta seuraa kuitenkin samalla itse tekstiä. Jos tekstissä on virheitä, ne korjataan ja videoon virhe voi jäädä, eli usko tekstiä.

1. Erot Eclipseen

Ihan aluksi on huomattava pieni terminologiaero Eclipsen ja IntelliJ IDEAn välillä. Isoimpana tuo Projektin merkitys:

Eclipse IntelliJ IDEA
Workspace Project
Project Module
Facet Facet
Library Library
JDK SDK
Classpath variable Path variable

IDEA:ssa ei myöskään ole perspektiivejä Eclipsen tapaan. Perspektiivit on pyritty korvaamaan automaattisesti vaihtuvilla näkymillä. Tästä on omat hyvät ja huonot puolensa.

Lue tarkemmin eroista JetBrainsin sivuilta.

JRE = Java Run-time Environment, JDK = Java Development Kit, SDK = Software Development Kit

27 Jan 23 (edited 07 Jan 24)

2. JetBrains-opiskelijalisenssi

TODO: Tähän miten hankitaan.

3. Asentaminen

  • jos sinulla ei ole JetBrainsin opiskelijatunnuksia, hanki ne (ks. edellä), niin voit rekisteröidä Ultimaten ilmaiseksi käyttöösi.
  • olethan asentanut ensin JDK:n?
  • mene sivulle Asennusohjeet
    • Rullaa kohtaan Install using the Toolbox App
    • lataa oikean käyttöjärjestelmän asennustyökalu
    • käynnistä se
    • valitse IntelliJ IDEA Ultimate
      • Community-versiokin kelpaa, mutta opiskelijana saa myös Ultimaten ilmaiseksi
      • älä ota EDU-versiota!
  • itse asensin Windowsissa C:\devel\intelij -hakemistoon
# kurssinprojketi

3.1 Luodaan kurssin projekti

Projekti Ideassa on suurinpiirtein sama kuin Workspace Eclipsessä. Sovella seuraavassa Linuxin ja Macin tapauksessa hakemistoja "luovasti":

  • Klikkaa File ja New Project...
  • Valitse vasemmalta Java (ei esim JavaFX)
  • Name: ohj2
  • Location: c:\kurssit (Mac ja Linux: ~/kurssit)
  • Tarkista että JDK:na on se uusin 22 mikä tehtiin JavaFX-ohjeissa.
    • jos sitä ei näy, niin valiste alasvedosta Add JDK from Disk...
    • jos tuolla on huono nimi (esim vain 23), niin sen voi käydä jälkeenpäin (kun projekti on tehty) nimeämässä paremmin seuraavasti:
      • File/Project Structure...
      • SDK-kohdassa klikkaa edit ja etsi sellainen jossa näkyy nuo JavaFX-jutut
      • sellaisen Name-kohtaan jdk-22-JavaFX
      • Apply
      • muut voitkin poistaa niin ei aiheuta sekannuksia
  • Ruksi pois kohdasta Add sample code
  • Create
  • Voit vasemmasta reunasta syödä src-hakemiston pois.

Tähän samaan projektiin voi moduuleina tehdä sitten harjoitustyötä, demoja jne. Esimerkiksi demot on minulla modulissa demot ja sen paketteina on src-hakemiston alla tyyliin

# mallirakenne
c:\kurssit    mac/Linux:  ~/kurssit
  ohj2
    .idea
       ...
    ohj2.iml
    out
       ...                  - kääntyneet tiedostot
    ht                      - tänne harjoitustyö (ht projekti=moduli)
      .git                  - hakemisto joka tuli versionhallinnan myötä
      ht.iml
      kuvat                 
         avaa.png
         paaikkuna.png
      src                   - tänne harjoitustyön lähdekoodit
         fxKerho            - tänne käyttöliittymäkoodit
         kanta              - yleiskäyttöiset apuluokat
         kerho              - tänne käyttöliittymästä riippumattomat koodit
  
    paate                   - tänne pääteohjaukset (projekti)
      paate.iml
      paate1                - hakemisto pääteohjausta 1 varten
      paate2                - projekti pääteohjausta 2 varten
      paate3cmd             - hakemisto komentorivikääntämistä varten
         jarj               - paketti Java-tiedostoille
            Jarj2.java
    demot
      demot.iml
      src
         demo
             d1
                Karkit.java
                Koksqrt.java
                ...
             d2
                Etusuku.java
                Kissat.java
                ...
             d3
                ...

Tuon rakenteen ansiosta eri demoista on helppoa viitata toisiin demoihin.

3.2 Asetuksia

  • oikoluku pois:
    • File/Settings... (kannattaa tuo Alt+Ctrl+S opetella ulkoa :-)
    • laita hakusanaksi proof
    • valitse Editor/Inspections
    • ruksi Proofreading pois päältä

4. Käyttö

Jos kurssilla käsketään tehdä uusi Workspace Eclipseen, niin sitä vastaa IDEAssa projekti.

  • File/New/Project...
  • muista valita JDK:ksi se, missä on JavaFX

4.1 Uuden modulen luominen

Muista että IDEAssa Eclipsen projektia vastaa moduli. Eli jos kurssilla käsketään luoda uusi projekti, niin luo uusi moduli

  • File/New/Module...

4.2 FxmlPackageIDEA

M2 Macilla zip-tiedostot aukesi normaalisti, mutta ei toiminut. Täytyy siis tehdä manuaalisesti.

VL: Tuohon on nyt kokeeksi laitettu M2:lla tehty zip, kokeilkaa toimiiko ja kuitatkaa miten kävi.

17 Jan 24 (edited 17 Jan 24)

M2 Macilla vaikka zip-tiedosto avautui normaalisti, niin FxmlPackage ei toiminut. Täytyy tehdä manuaalisesti.

Jos nuo zipit eivät toimi, voi ne tehdä itsekin näillä ohjeilla

4.3 Kurssin jar-kirjastot

Sovella seuraavassa Maciin ja Linuxiin C:\devel\jar tilalle ~/devel/jar.

Omassa koneessa hae hakemistoon jar (ks. edellä suositeltu hakemistorakenne, eli esim c:\devel\jar, älä vain käytä Microsoftin selainta...) Ole tarkkana että tallentuvat nimelle.jar jos tulee.zip, niin vaihda tarkennin.jar:

Tehdään näistä kirjasto (Library):

  • File/Projet Structure...\Global Libraries
  • Paina keskimmäisen osan +
  • Valitse Java
  • Käy etsimässä ja valitse kaikki c:\devel\jar kaikki .jar-tiedostot
  • Klikkaa sitten kunkin .jar-tiedoston kohdalla ikonia jossa on + ja maapallo (Specify Documentation URL...)
  • Lisää kuhunkin vuorollaan oma Help URL-osoitteensa:
  • ali.jar:      https://kurssit.it.jyu.fi/TIEP111/ohj2/ali/doc/
    FXGui.jar:    https://kurssit.it.jyu.fi/TIEP111/ohj2/FXExamples/FXGui/javadoc
    graphics.jar: https://kurssit.it.jyu.fi/TIEP111/ohj1/graphicsdoc/
    music.jar:    https://kurssit.it.jyu.fi/TIEP111/ohj1/musicdoc
  • Vaihda kirjaston nimeksi ohj2

4.4 Kokeillaan toimiiko

4.4.1 JarDemo

Luodaan luotuun kurssin projektiin uusi moduli jarkoe, jossa kokeillaan toimiiko em asetukset:

  1. File/New Module...
  2. Name: jarkoe
  3. Create
  4. Mene kursorilla syntyneen jarkoe modulin nimen päälle klikkaa ja valitse src
  5. Klikkaa src hiiren oikealla.
  6. New/Pacakage ja nimeksi jarkoe
  7. Mene src/jarkoe päälle ja hiiren oikealla
  8. New/Java Class ja nimeksi JarDemo
  9. Kopioi sisällöksi
The referenced paragraph does not exist.
  1. Tulee paljon virheitä, pitää lisätä kirjasto
  2. Mene jarkoe-modulin nimen päälle ja paina hiiren oikealla.
  3. Open module settings
  4. Valitse Modules (tod.näk valittu) ja valitse jarkoe (tod.näk valittu)
  5. Valitse oikealta Dependensies.
  6. Paina isoa +-merkkiä Dependensies-kohdassa ja valitse Library....
  7. Valitse aikaisemmin luotu ohj2-kirjasto ja Add selected.
  8. Muista ruksia kirjasto ja OK.
  9. Virheiden pitäisi hävitä.
  10. Paina lähdekoodin päällä hiiren oikeaa ja Run jardemo.Main().

ohj-2 kirjaston tekemisen ohjeet videolla, itse en löytänyt tekstistä

VL: Joku oli näköjään vuosi sitten syönyt sen pois, palautin. Eipä kukaan aikaisemmin olut sanonut :-)

10 Jan 25 (edited 12 Jan 25)

4.4.2 JarDemo2

Tee vielä samaan moduuliin ja packageen toinen luokka nimeltä JarDemo2 ja sen sisällöksi:

# jardemo2
package jarkoe;
import javafx.application.Application;
import javafx.stage.Stage;
import fi.jyu.mit.fxgui.Dialogs;
/** Toinen jar kokeilu */
public class JarDemo2 extends Application {
    @Override
   public void start(Stage stage) {
       Dialogs.showMessageDialog("Oliko äsken soiva peli?");
   }
   
   /** @param args ei käytössä  */
   public static void main(String[] args) {
       launch(args);
   }
}

Aja tämä ohjelma.

# fxmlpackagetest

4.4.3 FXMLPacakage

Testataan vielä fxmlpackagea harjoitustyön tekemistä varten

  1. Tee uusi moduli ht:
    • mene projektin (esim se ohj2) kohdalle ja hiiren oikealla New/Module...
    • Valitse Java ja nimeksi ht
    • Build system pitää olla IntelliJ
    • Katso JDK tarkakan että siihen tulee se jdk-22-JavaFX
  2. Mene syntyneen ht/src-hakemiston päälle, paina hiiren oikeaa ja New/FXMLPackage.
  3. Kirjoita isolla alkukirjaimella nimi, esim Kerho
  4. Tulee paketti fxKerho ja sen alle neljä tiedostoa. Valitse päätiedosto.
    • sitten kun SceneBuilder on asennettu, voit avata .fxml-tiedoston tuplaklikkaamalla niin, että se näkyy tekstinä tai SceneBuilderillä
  5. Siinä on pari virhettä, saat ottaa ne pois käytöstä:
    • klikkaa oikeassa ylänurkassa huutomerkkiä niin että alhaalla näkyy virheet
    • valitse virhe ja hiiren oikealla Show Quick-Fixes
    • sen oikeassa laidassa on pystyssä kolme pistettä, klikkaa sitä
    • valitse Disable inspection
    • toista toiselle virheelle
    • ET SAA TEHDÄ tätä ilman lupaa, sillä on myös kurssin kannalta tärkeitä virheitä ja varoituksia ja ne pitää ottaa tosissaan.
  6. Nyt aja main, pitäisi tulla tyhjä ikkuna.
  7. Lisää vielä jatkoa varten ohj2-kirjasto, eli
    • ht-modulin päällä hiiren oikealla Open Module Settings
    • Module SDK alapuolella olevasta +-merkistä
    • Library...
    • ohj2 ja Add selected
    • OK

Jatkossa esimerkiksi demoja varten luo vastaavasti uusi FXMLPacakge kutakin fx-tehtävää varten kyseisen demot demo/d3 (tai vastaava) kohdalta. Jos käytät TIDEä, tehtävien fx-tiedostot tulevat automaattisesti.

Kaiken tämän aika on saattanut oikeaan ylänurkkaan tulla kilikellon kuvan päälle merkki ilmoituksista, klikkaa sitä ja jos siellä on ilmoitus MS:n virustarkistuksesta, niin valitse automaattinen.

4.5 SceneBuilder

  1. Valitse Gluonin SceneBuilder-lataussivulla oikea käyttöjärjestelmä kohdasta SceneBuilder-21.0.0 (videolla taisin valita väärästä) lataa asennustiedostot ja asenna SceneBuilder. Windows saattaa antaa suojausvaroituksen.

    • Windows: Voit asentaa muuhunkin kuin oletushakemistoon, esimerkiksi:
      C:\devel\SceneBuilder

    • OS X: Pudota normaalisti Ohjelmat/Applications -kansioon.

    • Debian-pohjaisissa Linuxeissa (esim. Ubuntu) paras tapa asentaa on avata ladattu tiedosto Software Center:lla. Vaihtoehtoisesti alla olevat komennot voi syöttää terminaaliin.

      sudo dpkg -i SceneBuilder*.deb

      Jos valittaa että libffi7 puuttuu, niin tee (bugi, ks github:

      wget http://es.archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi7_3.3-4_amd64.deb
      sudo dpkg -i libffi7_3.3-4_amd64.deb        
    • Fedora/CentOS (esim. Red Hat Enterprise Linux) käyttää

      sudo rpm -i SceneBuilder*.rpm
      

      tai vaihtoehtoisesti voi extractata SceneBuilderin .rpm-tiedostosta toimimaan standalonena (ei kokeiltu)

      sudo dpkg -i scenebuilder-9.0.1.deb
      sudo apt-get -f install
    • Arch Linuxin tapauksessa voit tehdä

      git clone https://aur.archlinux.org/javafx-scenebuilder.git
      makepkg -sr
      sudo pacman -U javafx-scenebuilder*.pkg.tar.zst
  1. IntelliJ IDEA: Scene Builderin integrointi

    • Avaa projektisi IntelliJ IDEA:ssa.

    • Siirry kohtaan: File > Settings (Windows/Linux) tai IntelliJ IDEA > Preferences (macOS).

    • Etsi asetuksista: Languages & Frameworks > JavaFX.

    • Aseta Path to Scene Builder Executable -kenttään Scene Builderin suorituskelpoisen tiedoston sijainti:

      • Esimerkiksi Windowsissa se voi olla:

          C:\devel\SceneBuilder\SceneBuilder.exe
      • macOS:ssa:

          /Applications/Scene Builder.app/Contents/MacOS/SceneBuilder
  2. Asenna plugin JavaFX:ää varten:

    • File/Settings/Plugins
    • Etsi Marketplace-kohdasta JavaFX Runtime for Plugins ja asenna se
    • Käynnistä Idea uudelleen
# ideacomtest

5. ComTestin käyttäminen IntelliJ IDEA:ssa

ComTest-testien generoimiseksi ja ajamiseksi on käytössä myös IntelliJ IDEA -plugin. Pluginin käyttöön tarvitaan

  • IntelliJ IDEA (Community tai Ultimate) versio 2023 tai uudempi

Kaikki muut tarvittavat vaatimukset asentuvat automaattisesti pluginin tai IDEA:n kanssa.

IntelliJ IDEA päivittyi ja ilmoittaa ettei Comtest plugin toimi vaan vaatii vanhemman IntelliJ IDEAn

DZ: Kiitos tiedosta. ComTest Plugin on nyt päivitetty tukemaan uusinta IDEAn versiota. Päivitä plugin seuraamalla alla olevat asennusohjeet.

29 Mar 23 (edited 30 Mar 23)

5.1 Pluginin asentaminen

  1. Avaa IntelliJ IDEA.

  2. Avaa pluginien latausnäkymä:

    • Jos sinulle avautuu Welcome to IntelliJ IDEA -ikkuna, klikkaa sen vasemmassa reunassa oleva Plugins-painike:

    • Jos sen sijaan sinulle avautuu koko IDE, mene File | Settings | Plugins:

  3. Valitse Marketplace-välilehti ja syötä hakupalkkiin ComTest

  4. Valitse Install löytyneestä ComTest Runner -pluginista ja anna pluginin asentua

  5. Käynnistä IntelliJ IDEA uudelleen

5.2 Käyttöesimerkki

Testataan vielä, että plugin toimii.

  1. Mene jarkoe/src päälle (moduli jarkoe joka on tehty edellä):

  2. Lisää src-kansioon uusi pakkaus (eli hiiren oikealla New Package) example ja siihen uusi luokka (hiiren oikealla paketin ) Laskuja

  3. Lisää Laskuja.java -luokkaan testikoodi:

    package example;
    
    /** Kokeillaan testejä */
    public class Laskuja {
        /**
         * @param a eka summattava 
         * @param b toka summattava
         * @return a+b
         * @example <pre name="test">
         *   summa(2,3) === 5;
         *   summa(-5,5) === 0;
         *  </pre>
         */
        public static int summa(int a, int b) {
            return a + b;
        }
    
        /** @param args ei käytössä */
        public static void main(String[] args) {
            System.out.println("Summa = " + summa(3,2));
        }
    }
  4. Tulee yksi varoitus @example, lisää se omiin tageihin:

    • oikean yläkulman huutomerkki
    • alhalla varoituksen päällä Quick Fix
    • Add Custom Tags
  5. Avaa kontekstivalikko (klikkaa editorissa hiiren oikealla painikkeella) ja valitse ComTest | Run in Current File

  6. Ensimmäisellä kerralla IDEA kysyy JUnit-kirjaston asentamisesta. Jos näin käy, paina OK avautuvasta valikosta muuttamatta asetuksia:

  7. Jos kaikki oli tehty oikein, testien ajo käynnistyy koodin kääntämisen jälkeen ja näet lopputuloksen IDEA:n alalaidassa:

5.3 comt-snipetin käyttö

Pluginissa on valmis snipetti testien kirjoittamiseksi.

Käyttöohje:

  1. Lisää dokumentaatio funktioon, jolle kirjoitat testit. Jätä @return-määreen jälkeen vielä yksi rivi, jossa on vain *. Esimerkiksi

    /**
     * Kertoo luvut keskenään.
     * 
     * @param a Luku a
     * @param b Luku b
     * @return Lukujen a ja b tulo
     * 
     */
    public static int tulo(int a, int b) {
        return a * b;
    }
  2. Siirrä kursori @returnin jälkeiselle riville ja kirjoita comt. Paina lopuksi koodin täydennysyhdistelmää (yleensä Ctrl + Space), jolloin snipetti ilmestyy valittavaksi:

  3. Paina Enter, jolloin dokumentaatioon ilmestyy ComTest-testauspohja:

    /**
     * Kertoo luvut keskenään.
     *
     * @param a Luku a
     * @param b Luku b
     * @return Lukujen a ja b tulo
     * @example <pre name="test">
     *  
     * </pre>
     */
    public static int tulo(int a, int b) {
        return a * b;
    }

5.4 Kaikkien testien ajaminen pakkauksessa

Demokäytössä riittää usein testien ajaminen vain yhdelle luokalle kerrallaan. Isommissa projekteissa testit saattavat löytyä useasta luokasta, jolloin nouse tarve ajaa kaikki testit kerrallaan.

Kaikkien testien generointi ja ajaminen:

  1. Valitse projektinäkymässä testattava pakkaus (tai koko src)-kansio ja avaa kontekstivalikko (yleensä hiiden oikea klikkaus)

  2. Valitse ComTest | Run in Current Package

Testeistä luodaan automaattisesti JUnit-ajokonfiguraatiot (katso Run | Edit Configurations), eli testit voi ajaa myös nopeasti generoimatta niitä uudelleen.

5.5 Pikanäppäimet

Voit tehdä ComTestille (ja mille vaan toiminnolle) pikanäppäimen seuraavasti:

Keyboard shortcut
Keyboard shortcut
  • File
  • Settings...
  • kirjoita hakulaatikkoon comtest
  • valitse Keymap
  • mene haluamasi toiominnon kohdalle
  • paina hiiren oikealla
  • valitse Add Keyboard Shortcut
  • mene aukeavaan kohtaan ja paina halumaasi näppäinyhdistelmää (esim Ctrl-Q)

5.6 Lisää ComTest-esimerkkejä

Katso ComTestin edistynyttä käyttöä alkuperäisistä ComTest-ohjeista.

6. Olemassa olevan Eclipse-projektin lisääminen moduliksi

  • File/New/Module from Existing Sourcess...
  • Etsi projekti ja se kansio, jonka alla on src-hakemisto
  • Create module from exixsting sources tai Import... ja Eclipse
  • klikkaile loppuihin oletuksilla
  • lisää mahdollisesti tarvittavat kirjastot kuten edellä

7. FXMLPackage kokeilu

Oletetaan että meillä on alkuesimerkkienmukaan ohj2-niminen Idea-projekti.

  1. Luodaan uusi Module, esim kerho:
    • mene hiirellä projketin nimen ohj2 päällä
    • hiiren oikealla
# luojar

8. Ajettavan .jar-tiedoston luominen

Seuraavana tekoälyn tekemät ohjeet, joku voisi korjata tarvittaessa

  1. Avaa IntelliJ IDEA ja siirry projektiisi.

  2. Valitse "File" (Tiedosto) ylävalikosta ja sitten "Project Structure" (Projektirakenne).

  3. Valitse "Artifacts" (Artifaktit) -välilehti vasemmasta valikosta.

  4. Napsauta "+" -painiketta ja valitse "JAR" -> "From modules with dependencies" (Moduuleista riippuvuuksineen).

  5. Valitse moduuli, jonka haluat sisällyttää JAR-tiedostoon. "Main Class:" kohdasta voit määrittää mistä löytyy ohjelman käynnistettävä main luokka.

  6. "JAR files drom libraries" kohta "extract to the target JAR" tallentaa oletussijaintiin, "copy to the target output..." voi itse määritellä META-INF/MANIFEST.MF: sijainnin esimerkiksi harjoitustyön "bin kansioon"

  7. Klikkaamalla ok voit vielä vaihtaa asetuksia, kuten .jar tiedoston nimi ja sijainti, tarkennuksia class-pathiin, main luokkaan tai manifest tiedostoon.

  8. Kun olet valmis, napsauta "OK" ja sitten "Apply" (Käytä).

  9. Lopuksi, valitse "Build" (Rakenna) ylävalikosta ja sitten "Build Artifacts" (Rakenna artifaktit), ja valitse haluamasi vaihtoehto, esimerkiksi "Build".

  10. Tämä syntynyt .jar tiedosto pitää pakottaa erikseen lisäytymään Gitiin, koska muuten .jar on kielletty laittamasta sinne. Esimerkiksi (hakemistossa johon teit .jar):

    git add -f kerho.jar
    git commit -m "lisatty jar" 
    git push

Jos koko on yli 100-200kb, mukaan on päätynyt tarpeetonta sisältöä esim. Graphics.jar ja Music.jar. Project Structure / Artifacts -valikossa voit yksinkertaisesti poistaa turhat, ne näkyvät esim. nimellä "Extracted 'Ali.jar/'".

13 Feb 24

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.