{"id":473,"date":"2020-10-29T14:53:06","date_gmt":"2020-10-29T12:53:06","guid":{"rendered":"https:\/\/coursepages.uta.fi\/tiep5-1\/?page_id=473"},"modified":"2020-12-14T23:10:43","modified_gmt":"2020-12-14T21:10:43","slug":"java-jdk","status":"publish","type":"page","link":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/syksy-2020\/java-jdk\/","title":{"rendered":"Java JDK"},"content":{"rendered":"\n<p>Java-ohjelmointiin tarvitaan Java-k\u00e4\u00e4nt\u00e4j\u00e4 ja -tulkki (java- ja javac-ohjelmat). N\u00e4m\u00e4 kuuluvat ohjelmistoon, joka tunnetaan nimell\u00e4 <strong>Java Development Kit<\/strong> <strong>(JDK)<\/strong>.<\/p>\n\n\n\n<p>Vaikka omalla koneellasi on todenn\u00e4k\u00f6isesti valmiina <strong>Java Runtime Environment (JRE)<\/strong>, joudut asentamaan my\u00f6s JDK:n, koska JRE:st\u00e4 puuttuu Java-k\u00e4\u00e4nt\u00e4j\u00e4.<\/p>\n\n\n\n<p>Alla annetut asennusohjeet on pyritty kirjoittamaan mahdollisimman pitk\u00e4lti k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4st\u00e4 riippumattomiksi, vaikka esimerkkin\u00e4 k\u00e4ytet\u00e4\u00e4n Windows-j\u00e4rjestelm\u00e4\u00e4. Applen oma versio Javasta on asennettu valmiiksi Mac OS X k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4n versioon 10.6 saakka. Uudempiin OS X -versioihin Java on asennettava itse.<\/p>\n\n\n\n<p>Asennettavaksi suositellaan uusinta vakaata Javan versiota. N\u00e4m\u00e4 ohjeet k\u00e4sittelev\u00e4t Java-tuotemerkin omistajan (Oracle) Java-toteutusta. Oracle muutti hiljan k\u00e4ytt\u00f6ehtojaan, mutta onneksi <strong>Oraclen JDK:n k\u00e4ytt\u00f6 yksityisesti omalla koneella on edelleen ilmaista<\/strong>. Yliopiston koneille on asennettu t\u00e4ysin ilmainen <a rel=\"noreferrer noopener\" href=\"https:\/\/openjdk.java.net\/\" data-type=\"URL\" data-id=\"https:\/\/openjdk.java.net\/\" target=\"_blank\">OpenJDK<\/a>, joka toimii samoin kuin Oraclen versio.<\/p>\n\n\n\n<p>Kurssilla k\u00e4ytet\u00e4\u00e4n JDK:ta, jonka versio on v\u00e4hint\u00e4\u00e4n 1.8 eli kahdeksan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Onko JDK jo koneellani?<\/h2>\n\n\n\n<p>Voit tarkistaa onko koneellasi JDK antamalla <a href=\"https:\/\/coursepages2.tuni.fi\/tiep1-1\/syksy-2019\/ohjelmointivalineita\/komentoikkuna\/\">komentoikkunassa<\/a> komennon javac -version. JDK on asennettu, jos ikkunaan tulostuu versiorivi, joka on Windows-k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4ss\u00e4 t\u00e4m\u00e4n tapainen:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"102\" src=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/javac_version.png\" alt=\"\" class=\"wp-image-58\" srcset=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/javac_version.png 580w, https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/javac_version-300x53.png 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/figure>\n\n\n\n<p>Tulosteesta n\u00e4hd\u00e4\u00e4n koneella olevan JDK:n versio 13.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Onko Java tietoturvariski?<\/h2>\n\n\n\n<p>Javasta on l\u00f6ydetty hy\u00f6kk\u00e4yksen mahdollistavia virheit\u00e4. Javaa voi kuitenkin k\u00e4ytt\u00e4\u00e4 huoletta kurssin ohjelmointiteht\u00e4viin. Tietoturvasi voi vaarantua vain, jos selaat ep\u00e4m\u00e4\u00e4r\u00e4isi\u00e4 verkkosivuja vanhemmalla selaimella, jossa on Javan lis\u00e4osa. Omalle koneelle kannattaa p\u00e4ivitt\u00e4\u00e4 s\u00e4\u00e4nn\u00f6llisesti Javan uusin versio, koska uusimmassa versiossa on korjattu aiemmissa versioissa ilmenneit\u00e4 haavoittavuuksia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java JDK:n asennus kotikoneelle<\/h2>\n\n\n\n<p>Siirry <a rel=\"noreferrer noopener\" href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/index.html\" target=\"_blank\">JDK:n t\u00e4rkeimpien versioiden p\u00e4\u00e4sivulle<\/a> ja klikkaa uusimman version linkki\u00e4 (t\u00e4ll\u00e4 hetkell\u00e4 15.0.1) ja valitse avautuvalta lataussivulta koneesi k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4lle tehty JDK. Windows-k\u00e4ytt\u00e4j\u00e4t saavat JDK:n koneelleen helpoiten asennusohjelmalla (<em>exe<\/em>-p\u00e4\u00e4teinen tiedosto). My\u00f6s Mac-k\u00e4ytt\u00e4jille suositellaan helpointa vaihtoehtoa: valitse levykuva (<em>dmg<\/em>-p\u00e4\u00e4tteinen tiedosto). 32-bittisille koneille ei ole julkaistu JDK:\u00e4 sitten <a rel=\"noreferrer noopener\" href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/jdk8-downloads-2133151.html\" target=\"_blank\">Java 8 JDK:n<\/a>, joka alkaa olla melko vanha.<\/p>\n\n\n\n<p>JDK:n asennusohjeet saa nopeiden luettavaksi klikkaamalla p\u00e4\u00e4sivulla <em>Installation Instructions<\/em>-linkki\u00e4. JDK:n asennusohjeet Windowsiin samoin kuin ohjeet muihin j\u00e4rjestelmiin ovat valitettavasti saatavilla vain englanniksi. Asennus onnistuu kuitenkin suomenkieliseen j\u00e4rjestelm\u00e4\u00e4n, kun huomaa, ett\u00e4 kielen muuttuessa useimpien k\u00e4ytt\u00f6j\u00e4rjestelmien valikoiden ja ikkunoiden rakenne pysyy samana.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java-k\u00e4\u00e4nt\u00e4j\u00e4 (javac) ei k\u00e4ynnisty?<\/h2>\n\n\n\n<p>Tarkista aluksi, ett\u00e4 olet varmasti asentanut JDK:n, koska JDK ja JRE on helppo sekoittaa kesken\u00e4\u00e4n.<\/p>\n\n\n\n<p>Windows kertoo hukassa olevasta k\u00e4\u00e4nt\u00e4j\u00e4st\u00e4 n\u00e4in:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"102\" src=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/javac_missing.png\" alt=\"\" class=\"wp-image-61\" srcset=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/javac_missing.png 580w, https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/javac_missing-300x53.png 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/figure>\n\n\n\n<p>Jos JDK on asennettu ja k\u00e4\u00e4nt\u00e4j\u00e4 ei l\u00f6ydy, niin syy on todenn\u00e4k\u00f6isesti Path-ymp\u00e4rist\u00f6muuttujassa eli niin sanotussa polussa. Komentoikkunassa k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4n toiminnot ovat saatavilla ilman lis\u00e4toimia, mutta kaikki muut ohjelmat suoritetaan ilman tarkempaa hakemiston m\u00e4\u00e4rittely\u00e4 vain, mik\u00e4li ohjelmatiedoston sis\u00e4lt\u00e4v\u00e4 hakemisto on mukana Path-muuttujassa.<\/p>\n\n\n\n<p>Asennetun Java-k\u00e4\u00e4nt\u00e4j\u00e4n ja -tulkin sis\u00e4lt\u00e4v\u00e4 hakemisto <strong>saattaa<\/strong> olla tarpeen lis\u00e4t\u00e4 Windows-j\u00e4rjestelmien polkuun k\u00e4sin. Vaikuttaa silt\u00e4, ett\u00e4 ainakin Javan uusimman version 15 asennusohjelma osaa p\u00e4ivityksen joissain tilanteissa, vaikka t\u00e4t\u00e4 mahdollisuutta ei ole dokumentoitu asennusohjeisiin. Polun tulisi p\u00e4ivitty\u00e4 automaattisesti Mac-j\u00e4rjestelm\u00e4\u00e4n asennettaessa. Polun pit\u00e4isi asettua my\u00f6s, kun Java asennetaan paketinhallinnalla Linux-j\u00e4rjestelm\u00e4\u00e4n.<\/p>\n\n\n\n<p>JDK:n Windows-version asennusohjeiden <em>Setting the PATH Environment Variable <\/em>-luku kertoo kuinka ymp\u00e4rist\u00f6muuttujaa tulisi muuttaa ja my\u00f6s kuinka toimia, jos ymp\u00e4rist\u00f6muuttujan arvoa ei halua syyst\u00e4 tai toisesta muuttaa.<\/p>\n\n\n\n<p><strong>T\u00e4ydent\u00e4v\u00e4t ohjeet polun p\u00e4ivitt\u00e4miseen Windows-k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4lle<\/strong><\/p>\n\n\n\n<p>Polkuun lis\u00e4tt\u00e4v\u00e4n hakemiston nimen p\u00e4\u00e4ttely JDK:n asennusohjeita k\u00e4ytt\u00e4en vaatii pient\u00e4 pohdintaa ja kirjoittaessa tulee my\u00f6s helposti virheit\u00e4. Siksi saattaa olla helpointa kopioida hakemiston nimi resurssienhallinnasta. Navigoi resurssienhallinnassa ensin Java-ohjelmien asennushakemistoon, joka on yleens\u00e4 <em>C:\\Program Files\\Java.<\/em> T\u00e4ss\u00e4 hakemistossa voi olla useamman JDK-asennuksen alihakemistot:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"243\" src=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/java_dir.png\" alt=\"\" class=\"wp-image-65\" srcset=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/java_dir.png 607w, https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/java_dir-300x120.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/figure>\n\n\n\n<p>Alihakemistoista pit\u00e4\u00e4 valita <em>jdk<\/em>-alkuinen hakemisto, jonka nimess\u00e4 on sama versionumero on kuin asentamassasi JDK:ss\u00e4. Yleens\u00e4 viimeisen asennuksen versionumero on suurin. Yll\u00e4 valittaisiin <em>jdk-13.0.1<\/em>. Kun oikea alihakemisto on tunnistettu, voidaan siirty\u00e4 t\u00e4m\u00e4n hakemiston <em>bin<\/em>-alihakemistoon, joka sis\u00e4lt\u00e4\u00e4 k\u00e4\u00e4nt\u00e4j\u00e4n ja tulkin. Kopioitavan hakemisto nimi olisi siis t\u00e4ss\u00e4 esimerkiss\u00e4 <em>C:\\Program Files\\Java\\jdk-13.0.1\\bin. <\/em>Nimen p\u00e4\u00e4see kopiomaan esimerkiksi klikkamalla hakemistonkent\u00e4n &#8221;tyhj\u00e4\u00e4&#8221; osaa.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"243\" src=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/bin_dir-1.png\" alt=\"\" class=\"wp-image-70\" srcset=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/bin_dir-1.png 607w, https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/bin_dir-1-300x120.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/figure>\n\n\n\n<p>Polun p\u00e4ivitt\u00e4minen tehd\u00e4\u00e4n Control panel -ohjelman (ohjauspaneeli) avulla. P\u00e4ivitt\u00e4miseen tarvitaan yll\u00e4pit\u00e4j\u00e4n oikeudet. Uusimmissa Windowseissa ohjauspaneeli on helpointa l\u00f6yt\u00e4\u00e4 hakutoiminnon avulla.<\/p>\n\n\n\n<p>Valitse ohjauspaneelissa <em>System and Security <\/em>| <em>System<\/em> | <em>Advanced<\/em> <em>system settings<\/em> (<em>J\u00e4rjestelm\u00e4 ja suojaus<\/em> | <em>J\u00e4rjestelm\u00e4<\/em> | <em>J\u00e4rjestelm\u00e4n lis\u00e4asetukset<\/em>) ja klikkaa <em>Environment Variables <\/em>(<em>Ymp\u00e4rist\u00f6muuttujat<\/em>) -nappia:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"410\" height=\"467\" src=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/env.png\" alt=\"\" class=\"wp-image-78\" srcset=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/env.png 410w, https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/env-263x300.png 263w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\" \/><\/figure>\n\n\n\n<p>Valitse avautuvan ikkunan <em>System variables <\/em>-listasta <em>Path<\/em>-tekstill\u00e4 alkava rivi ja klikkaa <em>Edit<\/em>-nappia, joka avaa n\u00e4yt\u00f6lle polun hakemistot sis\u00e4lt\u00e4v\u00e4n taulukon. Lis\u00e4\u00e4 taulukon loppuun uusi rivi <em>New<\/em>-napilla ja liit\u00e4 riville kopioimasi hakemiston nimi.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"527\" height=\"501\" src=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/path.png\" alt=\"\" class=\"wp-image-73\" srcset=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/path.png 527w, https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-content\/uploads\/sites\/114\/2019\/10\/path-300x285.png 300w\" sizes=\"auto, (max-width: 527px) 100vw, 527px\" \/><\/figure>\n\n\n\n<p>Hakemiston lis\u00e4yksen yhteydess\u00e4 polusta on syyt\u00e4 poistaa siihen mahdollisesti aiemmin lis\u00e4tyt Java-hakemistot, jotta k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4 l\u00f6yt\u00e4\u00e4 nimenomaan kaikkein uusimman Javan. <strong>Ole varovainen, kun muokkaat polkua<\/strong>, koska polun alussa olevat hakemistot ovat t\u00e4rkeit\u00e4 k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4lle.<\/p>\n\n\n\n<p>Muista tallentaa muutokset OK-nappeja klikkaamalla.<\/p>\n\n\n\n<p>Lopuksi pit\u00e4\u00e4 avata <strong>uusi<\/strong> komentoikkuna, koska ymp\u00e4rist\u00f6muuttujien muutokset eiv\u00e4t p\u00e4ivity avoimiin komentoikkunoihin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java-tulkki (java) ei suorita ohjelmaa?<\/h2>\n\n\n\n<p>Tarkista aivan aluksi, ett\u00e4 olet kutsunut tulkkia oikein. On helppo erehty\u00e4 antamaan tulkille tavukoodin sis\u00e4lt\u00e4v\u00e4n tiedoston nimi, koska k\u00e4\u00e4nt\u00e4j\u00e4lle annetaan l\u00e4hdekooditiedoston nimi. Esimerkiksi komento java HelloWorld.class tuottaa virheilmoituksen, josta ei k\u00e4y selv\u00e4sti ilmi, ett\u00e4 komennon tulisi olla java HelloWorld.<\/p>\n\n\n\n<p>Polussa on todenn\u00e4k\u00f6isesti JRE-hakemisto, jossa on asentamaasi JDK:n Java-tulkkia <strong>vanhempi<\/strong> Java-tulkki, jos saat virheilmoituksen <em>java.lang.UnsupportedClassVersionError: Unsupported major.minor version<\/em>. Voit tarkistaa tilanteen komennoilla java -version ja javac -version. Tulkin versionumero on k\u00e4\u00e4nt\u00e4j\u00e4n versionumeroa pienempi, kun komentoikkuna l\u00f6yt\u00e4\u00e4 JRE:ss\u00e4 olevan vanhan tulkin ennen JDK:n tulkkia.<\/p>\n\n\n\n<p>Eri versioista johtuvan suoritusongelman voi korjata siirt\u00e4m\u00e4ll\u00e4 JDK:n hakemiston polussa ennen JRE:n hakemistoa. Huomaa, ett\u00e4 jotkut ohjelmat, kuten SPSS, sis\u00e4lt\u00e4v\u00e4t JRE:n. SPSS:n pit\u00e4isi toimia, vaikka JDK-hakemisto on polussa ennen SPSS:n omassa asennushakemistossa olevan JRE:n hakemistoa, koska uudempi tulkki osaa suorittaa vanhemmalla k\u00e4\u00e4nt\u00e4j\u00e4ll\u00e4 tuotetun tavukoodin. Tulkkia uudemmalla k\u00e4\u00e4nt\u00e4j\u00e4ll\u00e4 tehty\u00e4 tavukoodia ei voi suorittaa, koska tavukoodissa voi olla sellaisia kielen piirteit\u00e4, joita vanhempi tulkki ei ymm\u00e4rr\u00e4. Java noudattaa ohjelmistotuotannossa yleist\u00e4 periaatetta, jossa ohjelmiston vanha versio on yhteensopiva uuden version kanssa, mutta ei p\u00e4invastoin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java-ohjelmointiin tarvitaan Java-k\u00e4\u00e4nt\u00e4j\u00e4 ja -tulkki (java- ja javac-ohjelmat). N\u00e4m\u00e4 kuuluvat ohjelmistoon, joka tunnetaan nimell\u00e4 Java Development Kit (JDK). Vaikka omalla koneellasi on todenn\u00e4k\u00f6isesti valmiina Java Runtime Environment (JRE), joudut asentamaan my\u00f6s JDK:n, koska JRE:st\u00e4 puuttuu Java-k\u00e4\u00e4nt\u00e4j\u00e4. Alla annetut asennusohjeet on pyritty kirjoittamaan mahdollisimman pitk\u00e4lti k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4st\u00e4 riippumattomiksi, vaikka esimerkkin\u00e4 k\u00e4ytet\u00e4\u00e4n Windows-j\u00e4rjestelm\u00e4\u00e4. Applen oma versio Javasta on &hellip; <a href=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/syksy-2020\/java-jdk\/\" class=\"more-link\">Jatka artikkeliin <span class=\"screen-reader-text\">Java JDK<\/span><\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"parent":408,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-473","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/473","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/comments?post=473"}],"version-history":[{"count":6,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/473\/revisions"}],"predecessor-version":[{"id":480,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/473\/revisions\/480"}],"up":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/408"}],"wp:attachment":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/media?parent=473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}