JDK (Java Development Kit)

TODO: Videoilla ohjeet on Java 11 varten! Käytä kuitenkin aina 13 sen tilalla.

#

Asennusurakka

#
#

Please to interact with this component

{"ra": "asennusurakka", "rd": "113992"}

Kurssin työkalukimaran asentaminen aloitetaan varmistamalla, että koneessa pyörii sopiva JDK.

Termejä:

  • JDK = Java Develoment Kit, Javan kehitysympäristö. Tämä pitää olla että voi kääntää Java ohjelmia (.java).
  • JRE = Jave Runtime Environment, Javan ajoympäristö, Java tulkki. Tämä pitää olla jotta voi ajaa Java-ohjelmia (.class, .jar). Tämän voi asentaa erikseen tai se asentuu kun asentaa JDK:n.

Alta löydät asennusohjeet niin Windowsille, Macille kuin Linuxille.

Jos jokin on epäselvää tai käytäntö poikkeaa ohjeesta, kommentoi toki marginaaliin tai tee täsmennyksiä itse ohjeeseen.

#

1. Asentaminen

Ainakin Windowsissa voi olla varmin veto ensin poistaa kaikki Javat, jotta ei tule ristiriitaa eri Java-versioiden kanssa. Tosin oikein asetettujen systemimuuttujien kanssa tätä pystyy hallitsemaan ilmankin poistoja.

#

1.1 Windows

Selvitä aluksi onko Windows versiosi 32- vai 64-bittinen. Windows on 64-bittinen, mikäli löytyy hakemisto:

C:\Program Files (x86)
  • Mikäli tätä ei löydy, on sinulla on vain 32 bit Windows, jolloin joudut tyytymään Java 1.8:aan Kurssin asiat saa tehtyä silläkin. Sen voi ladata:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Muut voivat asentaa Java JDK jdk-13.0.1. Versionumero voi olla muukin kuin jdk-13.0.1, eli tee mielessäsi tarvittavat muutokset ohjeisiin jos versionumero on eri.

  1. Mennään lataamaan JDK 13 Oraclen sivuilta:
  1. Tarkoitus on ladata JDK 13 tai uudempi (jos haluat urheilla, niin lataa Java EE xxx)

  2. Valitse JDK oikean käyttiksen kohdalta (Windows x64 on 64 bit) ja lataa koneelle

  3. Pura Admin-käyttäjänä .zip-tiedosto hakemistoon C:\Program Files\Java.

  4. Sitten lisää polkuun tuo asennushakemiston bin-polku (muuten esim. komento javac tai jshell ei toimi). Windowsissa (katso myös ympäristömuuttujat):

    1. Kirjoita komentoriviltä control (suom. Ohjauspaneeli)

    2. System (suom. Järjestelmä)

    3. Advanced system settings (suom. Järjestelmän lisäasetukset)

    4. Environment Variables (suom. Ympäristömuuttujat)

    5. Etsi user variables kohdasta Path, jos ei ole, luo sellainen

    6. Edit (suom. Muokkaa)

    7. New

    8. Lisää rivi:

      C:\Program Files\Java\jdk-13.0.1\bin
    9. OK riittävän monesti

  5. Lisää/korjaa JAVA_HOME (tarvittaessa katso):

    1. Kirjoita komentoriviltä control (suom. Ohjauspaneeli)

    2. System (suom. Järjestelmä)

    3. Advanced system settings (suom. Järjestelmän lisäasetukset)

    4. Environment Variables (suom. Ympäristömuuttujat)

    5. Etsi user variables kohdasta JAVA_HOME, jos ei ole, luo sellainen

    6. Edit (suom. Muokkaa)

    7. Lisää/muokkaa rivi:

      C:\Program Files\Java\jdk-13.0.1
    8. OK riittävän monesti

    Tarkista myös System variables että siellä ei ole JAVA-HOME tai siellä on samat arvot.

Minulta tuota Java kansiota ei löydy Program Files kansiosta, mutta löytyy kyllä tuolta Program Files (x86) kansiosta. Luodaanko siis uusi Java kansio, pitäisikö se olla siellä valmiina vai siirränkö Java kansion Program Files kansioon?


VL: parempi päästä eroon siitä 86 Javadta ja tehdä oikeaan paikkaan se uusi.

07 Jan 20 (edited 07 Jan 20)
#

1.2 Mistä tiedän että toimii

  1. avaa uusi komentoikkuna

  2. Kirjoita komentoriviltä

     javac -version 
  3. pitäisi tulostaa:

     javac 13.0.1

Kokeile myös seuraavaa (kirjoita aina väkäsen > perässä oleva teksti):

C:\MyTemp\vesal\ohj2>jshell
|  Welcome to JShell -- Version 13.0.1
|  For an introduction type: /help intro

jshell> System.out.println("Hello")
Hello

jshell> /exit
|  Goodbye

Nyt saat ruksia asennetuksi kohdan: Java JDK.

Komennosta jshell voit lukea lisää Oraclen dokumentatiosta.

Mitä jos tulostaakin jotain muuta? Löytyykö ohjeita vanhan javan poistamiseen?

21 May 19

Javani käyttää jostain syystä vanhempaa versiota. Jos poistan vanhan kansion, valittaa jostain viitteestä vanhaan kansioon. Ei jostain syystä tunnista uutta javapakettia

05 Jun 19 (edited 05 Jun 19)

Videolla taidetaan kertoa ratkaisu tähän ongelmaan.

14 Jun 19

Kokeile myös kohta Käyttäminen komentoriviltä.

1.3 macOS

  1. Hae JDK Java-sivulta

    • Valitse JDK 13 oikean käyttiksen kohdalta (macOS/x64).
  2. Tuplaklikkaa ladattua tiedostoa ja se purkautuu Lataukset- kansioon (Downloads lontoonmurteella tai komentoriviltä)

  3. Avaa terminaali ja anna komennot (~ tulee Macissa Suomi-layoutilla alt+¨ ja Suomi - laajennettu -layoutilla alt+k tai alt+command+¨)

    cd ~/Downloads       
    sudo mv jdk-13.0.1.jdk /Library/Java/JavaVirtualMachines/
    java -version
    javac -version
  4. Jos tulostaa tyyliin:

     ohjmac:~ vesal$ java --version
     openjdk 13.0.1 2019-10-15
     OpenJDK Runtime Environment (build 13.0.1+9)
     OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
     ohjmac:~ vesal$ javac --version
     javac 13.0.1

    niin homma on valmis asennuksen osalta :-)

  1. Jos ei anna ajaa Java, niin voit joutua antamaan sille oikeuksia:

    • xattr -r -d com.apple.quarantine /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk
Mac asetukset
Mac asetukset

Nuo ’lue tästä lisää’-linkin ohjeet ovat vaaralliset. En suosittele kokeilemaan niitä, ellette halua avata tietokonetta kaikenlaisille haittaohjelmille.

27 Dec 19 (edited 27 Dec 19)

1.4 Linux

  • TODO: Osin päivittämättä ja testaamatta Java 13

Katso ohjeet: https://openjdk.java.net/install/

Useimpiin linuxdistroihin JDK:n saa asennettua suoraan pakettienhallinnasta

Vanhaa tietoa (saa päivittää jos löytää parempaa):

  • Näköjään 18.04 asentaa JDK 10, vaikka halutaan 11. OpenJDK 11:n saa asennettua tallentamalla seuraavan skriptin tiedostoon ja ajamalla sen “sudo sh skripti.sh” tai ajamalla jokaisen komennon erikseen, jos haluaa.

    Vaihda seuraavassa tarvittavat: 13.0.1

      #!/bin/sh
    
      wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz -O /tmp/openjdk-11.0.1_linux-x64_bin.tar.gz
      sudo tar xfvz /tmp/openjdk-11.0.1_linux-x64_bin.tar.gz --directory /usr/lib/jvm
      rm -f /tmp/openjdk-11.0.1_linux-x64_bin.tar.gz
      update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11.0.1/bin/java 1111
      update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-11.0.1/bin/javac 1111
      update-alternatives --auto java
      java -version
    • Ubuntu (18.10)

      sudo apt update && sudo apt install openjdk-11-jdk openjdk-11-jre-headless openjdk-11-doc

1.4.1 Mistä tiedän että toimii

java -version
javac -version

molempien pitäisi näyttää 13.0.1

Jos on asennettuna vanhempi Java valmiiksi eikä tunnista uutta, auttaa: sudo apt-get install oracle-java13-set-default

07 Jan 20
#

2. Käyttäminen komentoriviltä

Seuraavissa esimerkeissä käynnistetään tekstieditori. Sen kohdalla voit toki käynnistää muunkin editorin kuin ohjeessa on.

Editorilla on tarkoitus kirjoittaa tiedosto, jonka sisältö on:

// Ohjelma tulostaa tekstin Hello world!
public class Eka {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}

Eli esimerkkien siinä kohdassa kun muokataan tiedostoa Eka.java, kirjoita tämä sisältö.

2.1 Windows

  • Esimerkiksi Windowsista puuttuu kokonaan nykyhakemiston käsite. Siksi on huomattavasti helpompi käyttää konetta kun pitää aina vähintään yhden Command Prompt (tai PowerShell)-ikkunan auki ja käynnistää ohjelmat siitä.

  • Kannattaa tehdä itselleen yksi hakemisto, joka on ohjelmien hakupolussa ja johon kaikki tarvitavat apuohjelmat lisätään. Itselläni tuo apuhakemisto on aina c:\bat ja yllä JDK:n kohdalla on ohje kuinka hakemisto lisätään hakupolkuun Windows XP/W7/W8-järjestelmässä. Agoran mikroluokissa vastaava polku on n:\bin.

  • Jos halutaan työskennellä jossakin tietyssä hakemistossa, siirrytään Command promptissa ensin cd-komennoilla haluttuun työhakemistoon Näin menetellen ja edellisten ohjeiden jälkeen ohjelmat käynnistyvät komentoriviltä seuraavasti: (// ja sen jälkeinen osa ovat kommenttia jota ei kirjoiteta)

      cd c:\MyTemp             // siirrytään MyTemp-hakemistoon
      mkdir ohj2               // luodaan uusi ohj2-hakemisto
      cd ohj2
      mkdir demo1
      cd demo1                 // siirrytään demo1-hakemistoon
       ...
      cd c:\MyTemp\ohj2\demo1  // siirrytään suoraan demo1 hakemistoon jos tämä on olemassa
      npp Eka.java             // käynnistää Notepad++ editorin ja avaa tai luo uuden Eka.java -tiedoston
      javac Eka.java           // käännetään Java-tiedosto
      java Eka                 // ajetaan Java-ohjelma
       ...
      ee1912                     // käynnistätään Eclipse Java-IDE mikroluokissa
  • Komentorivillä on kätevä täydennysominaisuus. Esimerkkejä käytöstä:

      cd c:\My[Tab]    => cd c:\MyTemp
      ja[F8]           => hakee edellisen ja-alkavan komennon, esim. java Eka
  • Debuggaus komentoriviltä

Mitä tuo nykyhakemistoproblematiikka tarkoittaa?
- VL: sitä että et voi määritellä että nyt kaikki ohjelmat käynistyvat esim hakemistoon ohj2, vaan kukin ohjelman käynistyy ihan minne lystää.

17 Jan 16 (edited 03 Jan 18)

Asensin Notepad 7.8.2 64-bittisen ja kokeilin komentoriviltä tuota mutta tuli ilmoitus että npp is not recognized

VL: Ei toimikkaan ellet itse tee vastaavia komentoja: Käynistys komentoriviltä

07 Jan 20 (edited 07 Jan 20)
#

2.2 macOS

  • Tee kotihakemistoosi hakemisto (kansio) Code ja sen alle hakemisto Java, johon teet kaikki ohjelmasi omiin hakemistoihinsa. Hakemistot voit tehdä Finderissa GUI:lla tai komentoriviltä komennolla mkdir. Muista, että hakemistoerotin on macOS:ssä Unixin mukainen kauttaviiva / !

    cd ~                             # siirrytään kotihakemistoon
    mkdir -p Code/java/ohj2/demo1    # luodaan demo-hakemisto
    cd Code/java/ohj2/demo1          # siirrytään demo-hakemistoon
    
    emacs Eka.java         # käynnistää editorin ja avaa tai luo Eka.java
    javac Eka.java         # käännetään Java-tiedosto
    java Eka               # ajetaan Java-ohjelma
    
    open -a eclipse        # käynnistetään Eclipse IDE
  • Voit käyttää Code-hakemiston tilalla MyTemp-hakemistoa, jos se tuntuu tutummalta.

  • Emacsin GUI-versiossa menut toimivat kuten olettaa sopii, ”komentoriviversiossa” menut aktivoituvat F10-näppäimellä.

  • Nimen täydennys toimii sarkaimella (Tab) kuten Windowsissa, mutta jos ensimmäisen painalluksen jälkeen ei täydennystä ilmesty, paina sarkainta toisen kerran, jolloin kaikki vaihtoehdot listataan komentorivin yläpuolelle. Aiemmat komennot löytyvät kursorinäppäimillä ylös ja alas, ja niitä voi etsiä näppäilemällä C-r eli r-näppäin control-näppäin alaspainettuna, jonka jälkeen aletaan kirjoittamaan etsittävää tekstiä, C-r uudelleen painaminen etsii edeltävän ja C-g keskeyttää etsimisen. Kursorinäppäimet lopettavat etsimisen ja rivinvaihto suorittaa löydetyn komennon. (Innokkaimmat voivat lukea lisää antamalla komennon man bash.)

  • Emacsin graafinen versio löytyy osoitteesta: http://emacsformacosx.com Asennuksen jälkeen voit aukaista Emacsiin komentorivin komennolla M-x eshell <ret>, eli paina esc-näppäintä, sitten x-näppäintä, kirjoita eshell ja paina rivinvaihto-näppäintä, ja Emacsissa on komentorivi käytössä. Sama toimii komentoriviversiossa, joka tulee oletuksena käyttöjärjestelmän mukana, mutta on tympeämpi käyttää.

2.3 Linux

Luodaan kurssille hakemisto, jonka alle saa kätevästi kaikki demot ja harkkatyön. Tehdään yksinkertainen Java-ohjelma:

cd ~                                          # siirrytään kotihakemistoon
mkdir -p mytemp/ohj2/demo01                   # luodaan demokansio
cd mytemp/ohj2/demo01                         # siirrytään demokansioon

emacs Eka.java                                # kirjoitetaan java-ohjelma
javac Eka.java                                # käännetään tavukoodiksi (.class)
java Eka                                      # ajetaan virtuaalikoneessa (JVM)

Ubuntu (18.04.1) asentaa Emacs (25.2.2) komennolla sudo apt install emacs25 Voit myös käyttää Emacsin tilalla jotain muuta tekstieditoria (Vim, Geany, Visual Studio Code, Nano).

3. Ongelmia

Jos asennettaessa tulee virheilmoitus:

Another Java installation is in progress. 
You must complete that installation 
before you can run this installer

niin tuhoa tiedostot:

C:\ProgramData\Oracle\Java\JAVA_INSTALL_FLAG 
%USERPROFILE%\AppData\LocalLow\Sun\Java\JAVA_INSTALL_FLAG

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