IntelliJ IDEA
IntelliJ Idea on yksi vaihtoehto Eclipselle.
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
—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!
- Rullaa kohtaan
- itse asensin Windowsissa
C:\devel\intelij
-hakemistoon
3.1 Luodaan kurssin projekti
Projekti Ideassa on suurinpiirtein sama kuin Workspace Eclipsessä. Sovella seuraavassa Linuxin ja Macin tapauksessa hakemistoja "luovasti":
- Klikkaa
File
jaNew Project...
- Valitse vasemmalta
Java
(ei esimJavaFX
) 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
- jos sitä ei näy, niin valiste alasvedosta
- 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
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 tuoAlt+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
- lataa johonkin
- Windows/Linux: fxmlpackageIDEA.zip
- Mac Intel: fxmlpackageidea.zip
- Mac M1: fxmlpackageM1.zip
- Mac M2: fxmlpackageM2.zip
File/Manage IDE settings/Import
- etsi lataamasi zip-tiedosto ja open
- IDEA käynnistyy uudelleen
- testataan tämä kun on kurssin kirjastot laitettu ja testattu
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.
—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 seuraavilla ohjeilla:
Ota
File/Settings/File and Code Templates
Aloitetaan uusi, eli se iso +
Name:
FXMLPackage
Extension:
java
File name:
/fx${NAME}/${NAME}Main
Sisältö:
package fx${NAME}; #if (${PACKAGE_NAME} == "PACKAGE_NAME")package fx${NAME};#end import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.fxml.FXMLLoader; /** * @author ${USER} * @version ${DATE} * */ public class ${NAME}Main extends Application { @Override public void start(Stage primaryStage) { try { FXMLLoader ldr = new FXMLLoader(getClass().getResource("${NAME}View.fxml")); final Pane root = ldr.load(); //final KerhoController kerhoCtrl = (KerhoController) ldr.getController(); Scene scene = new Scene(root); scene.getStylesheets().add(getClass().getResource("${NAME.toLowerCase()}.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.setTitle("${NAME}"); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } /** * @param args Ei käytössä */ public static void main(String[] args) { launch(args); } }
Apply
Sitten tehdään tällä kolme lapsi-templatea, eli
- css:
Paina sitä ikonia jossa on sivunkuva ja +
File name:
fx${NAME}/${NAME.toLowerCase()}
Extension:
css
Sisältö:
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
Apply
- View:
Paina sitä ikonia jossa on sivunkuva ja +
File name:
fx${NAME}/${NAME}View
Extension:
fxml
Sisältö:
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.BorderPane?> <BorderPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="fx${NAME}.${NAME}Controller"> <!-- TODO Add Nodes --> </BorderPane>
Apply
- Controller:
Paina sitä ikonia jossa on sivunkuva ja +
File name:
fx${NAME}/${NAME}Controller
Extension:
java
Sisältö:
package fx${NAME}; #if (${PACKAGE_NAME} == "PACKAGE_NAME")package fx${NAME};#end /** * @author ${USER} * @version ${DATE} * */ public class ${NAME}Controller { // TODO }
Apply
- css:
OK
Voit vaulta Exportata tämän zip-tiedostoksi jos joudut tekemään uudestaan:
File/Manage IDE Settings/Export Settings...
- Ota kaikki ruksit pois
- Ruksi molemmat
File Templates
-kohdat - laita hyvä nimi ja paikka
OK
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:
File/New Module...
Name:
jarkoe
Create
- Mene kursorilla syntyneen
jarkoe
modulin nimen päälle klikkaa ja valitsesrc
- Klikkaa
src
hiiren oikealla. New/Pacakage
ja nimeksijarkoe
- Mene
src/jarkoe
päälle ja hiiren oikealla New/Java Class
ja nimeksiJarDemo
- Kopioi sisällöksi
- Tulee paljon virheitä, pitää lisätä kirjasto
- Mene
jarkoe
-modulin nimen päälle ja paina hiiren oikealla. Open module settings
- Valitse
Modules
(tod.näk valittu) ja valitsejarkoe
(tod.näk valittu) - Valitse oikealta
Dependensies
. - Paina isoa
+
-merkkiäDependensies
-kohdassa ja valitseLibrary...
. - Valitse aikaisemmin luotu
ohj2
-kirjasto jaAdd selected
. - Muista ruksia kirjasto ja
OK
. - Virheiden pitäisi hävitä.
- 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 :-)
—4.4.2 JarDemo2
Tee vielä samaan moduuliin ja packageen toinen luokka nimeltä JarDemo2
ja sen sisällöksi:
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.
4.4.3 FXMLPacakage
Testataan vielä fxmlpackagea
harjoitustyön tekemistä varten
- Tee uusi moduli
ht
:- mene projektin (esim se
ohj2
) kohdalle ja hiiren oikeallaNew/Module...
- Valitse
Java
ja nimeksiht
Build system
pitää ollaIntelliJ
- Katso
JDK
tarkakan että siihen tulee sejdk-22-JavaFX
- mene projektin (esim se
- Mene syntyneen
ht/src
-hakemiston päälle, paina hiiren oikeaa jaNew/FXMLPackage
. - Kirjoita isolla alkukirjaimella nimi, esim
Kerho
- 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ä taiSceneBuilderillä
- sitten kun
- 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.
- Nyt aja main, pitäisi tulla tyhjä ikkuna.
- Lisää vielä jatkoa varten
ohj2
-kirjasto, eliht
-modulin päällä hiiren oikeallaOpen Module Settings
Module SDK
alapuolella olevasta+
-merkistäLibrary...
ohj2
jaAdd 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
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
IntelliJ IDEA: Scene Builderin integrointi
Avaa projektisi IntelliJ IDEA:ssa.
Siirry kohtaan:
File > Settings
(Windows/Linux) taiIntelliJ 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
Asenna plugin JavaFX:ää varten:
File/Settings/Plugins
- Etsi
Marketplace
-kohdastaJavaFX Runtime for Plugins
ja asenna se - Käynnistä Idea uudelleen
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.
—5.1 Pluginin asentaminen
Avaa IntelliJ IDEA.
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:
Valitse Marketplace-välilehti ja syötä hakupalkkiin ComTest
Valitse Install löytyneestä
ComTest Runner
-pluginista ja anna pluginin asentuaKäynnistä IntelliJ IDEA uudelleen
5.2 Käyttöesimerkki
Testataan vielä, että plugin toimii.
Mene
jarkoe/src
päälle (modulijarkoe
joka on tehty edellä):Lisää
src
-kansioon uusi pakkaus (eli hiiren oikealla New Package)example
ja siihen uusi luokka (hiiren oikealla paketin )Laskuja
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)); } }
Tulee yksi varoitus
@example
, lisää se omiin tageihin:- oikean yläkulman huutomerkki
- alhalla varoituksen päällä
Quick Fix
Add Custom Tags
Avaa kontekstivalikko (klikkaa editorissa hiiren oikealla painikkeella) ja valitse ComTest | Run in Current File
Ensimmäisellä kerralla IDEA kysyy JUnit-kirjaston asentamisesta. Jos näin käy, paina OK avautuvasta valikosta muuttamatta asetuksia:
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:
Lisää dokumentaatio funktioon, jolle kirjoitat testit. Jätä
@return
-määreen jälkeen vielä yksi rivi, jossa on vain*
. EsimerkiksiSiirrä kursori
@return
in jälkeiselle riville ja kirjoitacomt
. Paina lopuksi koodin täydennysyhdistelmää (yleensäCtrl + Space
), jolloin snipetti ilmestyy valittavaksi:Paina
Enter
, jolloin dokumentaatioon ilmestyy ComTest-testauspohja:
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:
Valitse projektinäkymässä testattava pakkaus (tai koko
src
)-kansio ja avaa kontekstivalikko (yleensä hiiden oikea klikkaus)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:
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
taiImport...
jaEclipse
- klikkaile loppuihin oletuksilla
- lisää mahdollisesti tarvittavat kirjastot kuten edellä
7. FXMLPackage kokeilu
Oletetaan että meillä on alkuesimerkkienmukaan ohj2
-niminen Idea-projekti.
- Luodaan uusi Module, esim
kerho
:- mene hiirellä projketin nimen
ohj2
päällä - hiiren oikealla
- mene hiirellä projketin nimen
8. Ajettavan .jar-tiedoston luominen
Seuraavana tekoälyn tekemät ohjeet, joku voisi korjata tarvittaessa
Avaa IntelliJ IDEA ja siirry projektiisi.
Valitse "File" (Tiedosto) ylävalikosta ja sitten "Project Structure" (Projektirakenne).
Valitse "Artifacts" (Artifaktit) -välilehti vasemmasta valikosta.
Napsauta "+" -painiketta ja valitse "JAR" -> "From modules with dependencies" (Moduuleista riippuvuuksineen).
Valitse moduuli, jonka haluat sisällyttää JAR-tiedostoon. "Main Class:" kohdasta voit määrittää mistä löytyy ohjelman käynnistettävä main luokka.
"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"
Klikkaamalla ok voit vielä vaihtaa asetuksia, kuten .jar tiedoston nimi ja sijainti, tarkennuksia class-pathiin, main luokkaan tai manifest tiedostoon.
Kun olet valmis, napsauta "OK" ja sitten "Apply" (Käytä).
Lopuksi, valitse "Build" (Rakenna) ylävalikosta ja sitten "Build Artifacts" (Rakenna artifaktit), ja valitse haluamasi vaihtoehto, esimerkiksi "Build".
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/'".
—These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.