Java-päivitysopas 2026: Suunnittele siirtymisesi Java 25 LTS:ään

11. kesäkuuta 2026
Paavo Pauklin

Päivitetty viimeksi: kesäkuu 2026

Java-päivitykset tuntuvat harvoin kiireellisiltä, kunnes kumppanin SDK, tietoturvapäivitys, framework-muutos tai pilvi-integraatio tekee päivityksestä väistämättömän.

Monille yrityksille kysymys ei ole: ”Pitäisikö meidän päivittää Java?” Parempi kysymys kuuluu: miten etenemme ilman, että rutiininomaisesta alustan päivityksestä tulee riskialtis pelastusprojekti?

Tämä opas tarjoaa johtajille ja teknisille päätöksentekijöille käytännönläheisen katsauksen Java-alustan nykytilanteeseen, turvallisiin versioihin sekä siihen, miten suunnitella päivitys, joka tukee tulevaa kehitystä, tekoälyn käyttöönottoa, pilvipalveluita ja pitkän aikavälin ylläpidettävyyttä.

Tämä artikkeli on nyt päivitetty vastaamaan Java-tilannetta kesäkuussa 2026, mukaan lukien Java 25 LTS, Java 26 ei-LTS-julkaisuna, Spring Boot 4:n vaatimukset, AWS SDK for Java v1 -version tuen päättyminen sekä nykyiset AI-SDK-suositukset.

Miksi tämä on ajankohtaista juuri nyt?

Java noudattaa nykyään ennustettavaa kuuden kuukauden julkaisuväliä. Osa julkaisuista on lyhytaikaisia. Toiset ovat puolestaan pitkäaikaisen tuen versioita, joita kutsutaan yleensä LTS-versioiksi.

Yritysympäristöissä standardointi kohdistuu yleensä LTS-versioihin, koska ekosysteemi on niissä ennustettavampi: tietoturvapäivitykset, pilvi-SDK:t, frameworkit, build-työkalut, sovelluspalvelimet, monitorointityökalut, konttikuvat ja rekrytointi seuraavat LTS-pohjia.

Paikalle jämähtäminen voi vaikuttaa lyhyellä aikavälillä edullisemmalta. Yleensä kustannukset tulevat kuitenkin esiin myöhemmin, kun:

  • pilvipalvelun SDK lopettaa vanhemman ajoympäristön tuen,
  • tietoturvapäivitys edellyttää framework-päivitystä,
  • kumppanin integraatio edellyttää uudempaa TLS- tai HTTP-käyttäytymistä,
  • kehittäjät joutuvat käyttämään aikaa vanhojen riippuvuuksien korjaamiseen,
  • työntekijöiden palkkaaminen vaikeutuu, koska teknologiapino tuntuu vanhentuneelta,
  • Tekoäly- tai pilvipohjaiset työt estyvät alustan rajoitusten vuoksi.

Tavoitteena ei ole juosta jokaisen Java-julkaisun perässä. Sen sijaan tavoitteena on rakentaa rauhallinen päivityskäytäntö, jotta Java ei koskaan muodostu esteeksi roadmapin toteutumiselle.

Johdon tarkistuslista ennen Java-päivitystä

Ennen kuin hyväksyt Java-päivityksen, pyydä lyhyt ja käytännöllinen tilannekatsaus. Sen ei tarvitse olla 40-sivuinen raportti. Usein jo yksi sivu riittää.

Käy läpi seuraavia seikkoja:

  1. Nykyinen ajoympäristö
    Mitä Java-versiota käytämme kehitys-, testaus-, välivarastointi- ja tuotantoympäristöissä?
  2. Toimittaja ja tukiaikataulu
    Mitä Java-jakelua käytämme: Oracle JDK, Eclipse Temurin, Amazon Corretto, Azul, Red Hat, Microsoftin OpenJDK-versio vai jokin muu? Mikä tukiaikataulu koskee juuri meidän toimittajaamme?
  3. Framworkin yhteensopivuus
    Mitä versioita käytämme Spring Bootista, Spring Frameworkista, Quarkuksesta, Micronautista, Jakarta EE:stä, sovelluspalvelimista tai muista keskeisistä frameworkeista?
  4. Riippuvuusriskit
    Ovatko build-työkalut, laajennukset, APM-agentit, tietoturvatarkistimet, pilvipalveluiden SDK:t, tietokantaohjaimet ja kumppanien SDK:t yhteensopivia kohde-Java-version kanssa?
  5. Testien luotettavuus
    Onko meillä liiketoimintatasoisia automaattitestejä, integraatiotestejä ja testausympäristö, joka antaa realistista palautetta?
  6. Käyttöönottosuunnitelma
    Voimmeko toteuttaa käyttöönoton vaiheittain, seurata vaikutuksia ja tarvittaessa laajentaa käyttöönottoa nopeasti?
  7. Tiedonsiirron riskit
    Sisältääkö päivitys muutoksia tietokantaan tai -rakenteeseen? Jos kyllä, voidaanko vanhaa ja uutta koodia käyttää turvallisesti siirtymävaiheen aikana?

Jos jokin näistä vastauksista on epäselvä, selvitä asia ennen päivityksen aloittamista. Suurin osa Java-päivityksiin liittyvistä ongelmista johtuu epäselvyyksistä, ei itse Javasta.

Valitse kohteesi luottavaisin mielin

Vuonna 2026 useimpien organisaatioiden käytännön tavoitteena on jokin seuraavista:

  • Java 25, mikäli tavoitteena on vahvin pitkän aikavälin perusta.
  • Java 21, jos tarvitset vakaan siirtymäversion, jolla on laaja ekosysteemituki.
  • Java 17 ainoastaan jos nykyinen framework-polkusi edellyttää sitä tai se toimii välivaiheena.
  • Java 11 tai vanhempi versio vain, jos joudut ottamaan huomioon vanhojen järjestelmien asettamat rajoitukset ja sinulla on jo modernisointisuunnitelma.

Älä siirry uuteen Java-versioon vain siksi, että sellainen on olemassa. Siirry siihen, koska se vähentää riskejä, parantaa ylläpidettävyyttä ja varmistaa, että alusta on yhdenmukainen tiimiesi ja yhteistyökumppaneidesi tarvitsemien työkalujen kanssa.

Paras päivityspolku löytyy yleensä lyhyen sandbox-harjoituksen kautta:

  1. Rakenna sovellus sillä Java-versiolla, johon olet siirtymässä.
  2. Suorita testisarja.
  3. Tarkista frameworkien ja riippuvuuksien yhteensopivuus.
  4. Suorita smoke-testit tuotantoa vastaavassa ympäristössä.
  5. Selvitä, mitkä ovat todelliset esteet.
  6. Päätä, kumman pitäisi toimia ensin: JVM:n vai frameworkin.

Joskus Java-ajoympäristö voidaan päivittää ensin. Joskus taas kehys on päivitettävä ensin. Välillä turvallisin etenemistapa on Java 11 → Java 17 → Java 21/25. Oikea ratkaisu riippuu kyseisestä sovelluksesta, ei yleisestä versiokaaviosta.

Java tänään: versiokohtainen katsaus

Miksi ohitamme vanhemmat versiot, kuten Java 9, 10, 12 ja 13

Siitä lähtien, kun Java siirtyi kuuden kuukauden julkaisurytmiin, lyhyen aikavälin versiot ovat korvautuneet nopeasti uusilla versioilla. Ne voivat olla hyödyllisiä testaukseen ja varhaiseen käyttöönottoon, mutta ne ovat harvoin sopiva ratkaisu liiketoiminnalle kriittisissä järjestelmissä.

Yritysympäristöissä siirrytään yleensä LTS-versioihin, koska ne tarjoavat pidemmän tukijakson ja paremman yhteensopivuuden ekosysteemin kanssa.

Siksi tässä oppaassa keskitytäänkin Java-versioihin 25, 21, 17, 11 ja 8 tai sitä vanhempiin versioihin.

Java 26 – nykyinen ei-LTS-versio

Java 26 on saatavilla, mutta se ei ole LTS-versio.

Tämä tarkoittaa, että se voi olla hyödyllinen:

  • tulevan yhteensopivuuden testaamiseen,
  • kirjastojen ja sisäisten alustojen valmisteluun,
  • tarkastamaan ovatko build-työkalut ja kontit valmiina,
  • jotta suunnittelutiimit pääsevät tutustumaan tuleviin muutoksiin jo varhaisessa vaiheessa.


Useimpien liiketoiminnalle kriittisten järjestelmien osalta Java 26:ta ei kuitenkaan tulisi käyttää Java 25:n sijaan oletuspäivityskohteena.

Miksi tällä on merkitystä: Java 26 on hyödyllinen valmistautumiseen, mutta ei varsinaisen yrityskäytön kohteena. Jos tavoitteenasi on pitkäaikainen vakaus, Java 25 LTS on parempi oletusvalinta.

Java 25 LTS – paras pitkän aikavälin kohde uusille päivityksille

Java 25 on tällä hetkellä vahvin LTS-versio uusille palveluille ja suunnitelluille modernisointihankkeille.

Tällä hetkellä se tarjoaa tiimeille pisimmän LTS-tukijakson ja asettaa alustan sinne, mihin ekosysteemi on menossa. Ajan myötä yhä useammat pilvipalvelutyökalut, sovelluskehityspaketit (SDK), frameworkit, valvontatyökalut, esimerkit ja konttikuva-tiedostot optimoidaan Java 25:n ja sitä uudemman version ympärille.

Java 25 on erityisen houkutteleva, kun:

  • olet aloittamassa uutta palvelua,
  • olet jo päivittämässä frameworkkejasi,
  • modernisoit pilvi-infrastruktuuriasi,
  • olet kehittämässä uusia tekoälypohjaisia palveluita,
  • haluat välttää uuden Java-päivityksen lähiaikoina.

Java 25:tä ei kuitenkaan pidä ottaa käyttöön hätiköidysti. Joissakin sovelluksissa voi olla riippuvuuksia, frameworkkeja, sovelluspalvelimia tai toimittajien tuotteita, jotka eivät ole vielä täysin valmiita. Tällaisissa tapauksissa Java 21 voi olla turvallisempi ensimmäinen askel.

Miksi tällä on merkitystä: Java 25 tarjoaa parhaat pitkän aikavälin näkymät, mutta päivityksen onnistuminen riippuu edelleenkin frameworkkien ja riippuvuuksien valmiudesta.

Java 21 LTS – vankka tuotantoperusta ja käytännöllinen ponnahdusalusta

Java 21 on edelleen erittäin vakaa tuotantoversio.

Monille organisaatioille Java 21 on käytännöllisin lyhyen aikavälin tavoite, koska se on kypsä, laajasti tuettu ja jo hyvin tunnettu nykyaikaisten Java-frameworkien ja työkaluketjujen keskuudessa.

Java 21 toi mukanaan myös virtuaaliset säikeet, jotka voivat auttaa I/O-intensiivisiä palveluita skaalautumaan pienemmällä säikeiden hallinnointikuormituksella. Kaikki sovellukset eivät tarvitse virtuaalisia säikeitä, eikä niiden pitäisi olla ainoa syy päivittää, mutta ne ovat hyödyllisiä monissa API-, integraatio- ja suoratoistotyökuormissa.

Java 21 on hyvä valinta, kun:

  • Java 25:tä ei vielä tueta täysin keskeisen riippuvuuden osalta,
  • tiimi haluaa riskeiltään pienemmän päivitysvaiheen,
  • sovellus siirretään Java 8:sta tai 11:stä,
  • yritys haluaa modernin lähtökohdan ilman, että se siirtyy heti uusimpaan LTS-versioon.

Riskit, jos viivytät tässä vaiheessa liian kauan: Java 21 on tällä hetkellä vakaa, mutta sen ei pitäisi estää pitkän aikavälin suunnittelua. Jos valitset nyt Java 21:n, pidä Java 25 mukana suunnitelmissasi.

Java 17 LTS – edelleen voimassa, mutta ei enää turvallinen valinta

Java 17 on edelleen laajasti käytössä ja sopii yhä moniin tuotantokäyttöön tarkoitettuihin järjestelmiin. Se on myös monien nykyaikaisten Java-kehysrakenteiden vähimmäisvaatimus.

Mutta vivahteilla on merkitystä: Java 17 on yhä enemmän vähimmäisvaatimus, ei se paras strateginen tavoite.

Spring Boot 3 on jo vienyt Java-ekosysteemin voimakkaasti kohti Java 17:ää. Spring Boot 4 jatkaa tällä tiellä vaatimalla Java 17:ää tai uudempaa versiota. Tämä tarkoittaa, että Java 8:aa tai Java 11:tä käyttävät tiimit eivät voi pitää siirtymistä Spring Boot 4:ään pelkästään framework-päivityksenä. Se edellyttää myöskin Java-ajoympäristön päivittämistä.

Toisaalta Java 17 ei ole enää mikään uutuus. Oracle JDK:ta käyttävien organisaatioiden on kiinnitettävä erityistä huomiota toimittajien tukiaikatauluihin, sillä Oracle Premier Support -tuki Java 17:lle päättyy syyskuussa 2026. Muilla toimittajilla voi olla erilaiset tukimallit, joten on tärkeää tarkistaa juuri käyttämäsi jakelupaketin tukikäytännöt.

Java 17 voi silti olla hyväksyttävä, kun:

  • tarvitset sitä siirtymävaiheena Java 8:sta tai 11:stä,
  • nykyinen framework-polkusi on sidottu Java 17:ään,
  • sovelluksessasi on riippuvuuksia, jotka eivät ole vielä yhteensopivia Java 21:n tai 25:n kanssa,
  • päivitys on jaettava pienempiin, riskeiltään vähäisempiin vaiheisiin.

Uusien modernisointihankkeiden kohdalla Java 21 tai Java 25 on kuitenkin yleensä parempi valinta.

Miksi tällä on merkitystä: Java 17 ei ole ”huono”, mutta se ei enää ole se versio, johon pitkän aikavälin suunnittelun tulisi päättyä. Käsittele sitä väliaikaisena ratkaisuna, ellei teillä ole selkeää syytä pysyä siinä.

Java 11 LTS – legacy-perustaso, jonka käyttöön liittyy yhä enemmän kitkaa.

Java 11 on edelleenkin käytössä monissa yrityksissä, mutta se on nykyään vanhentunut lähtökohta aktiiviselle kehitystyölle.

Jotkut toimittajat ja softakirjastot tukevat sitä edelleen. Jotkin pilvipohjaiset SDK:t toimivat myöskin vielä sillä. Mutta nykyaikainen Java-kehitys on edennyt. Frameworkit, laajennukset, testausvälineet, sovelluspalvelimet, oletusarvoiset suojausasetukset, konttien peruskuvat ja esimerkit edellyttävät yhä useammin Java 17:ää tai uudempaa versiota.

Java 11:n käyttäminen tarkoittaa usein:

  • pysyttelyä vanhemmissa Spring Boot -tai -framework-versioissa,
  • vanhojen riippuvuusversioiden kiinnittämistä,
  • hitaamman turvallisuus- ja yhteensopivuustyön hyväksymistä,
  • laajempaa panostamista build- ja käyttöönottokorjauksiin,
  • tulevista päivityksistä tulee laajempia ja riskialttiimpia.

Java 11 voi edelleen olla hyväksyttävä ratkaisu vakaissa vanhoissa järjestelmissä, joihin tehdään vain vähäisiä muutoksia. Sitä ei kuitenkaan tulisi käyttää perustana uusille tekoäly-, pilvi- tai asiakaspalvelualustoille.

Miksi tällä on merkitystä: Java 11 saattaa vielä toimia, mutta sen ympäristö on siirtymässä eteenpäin. Mitä kauemmin odotat, sitä kalliimmaksi lopullinen päivitys tulee.

Java 8 ja sitä vanhemmat versiot – suuri riski useimmille aktiivisille järjestelmille

Java 8 oli erinomainen versio, ja se on edelleenkin käytössä monissa yritysympäristöissä. Vuonna 2026 Java 8:aa ja sitä vanhempia versioita tulisi kuitenkin pitää suuririskisinä useimmissa aktiivisissa järjestelmissä.

Tämä ero on tärkeä: jotkut toimittajat ja pilvipalvelukirjastot tarjoavat edelleen Java 8:n tukea tietyissä tapauksissa. Se ei kuitenkaan tarkoita, että Java 8 olisi hyvä perusta uusille kehityshankkeille.

Java 8:ssa pysyvät tiimit kohtaavat yleensä seuraavia ongelmia:

  • vanhemmat TLS-versiot ja turvallisuusoletukset,
  • HTTP/2:n ja gRPC:n käyttöönoton vauhdittaminen,
  • heikommat konttikuva-perusmallit,
  • rajoitetut päivitysmahdollisuudet,
  • riippuvuuksien lisääntynyt kiinnittäminen,
  • vähemmän ajankohtaisia esimerkkejä ja oppaita,
  • rekrytoinnin ja perehdyttämisen vaikeutuminen,
  • lisääntyvät kysymykset tarkastuksista ja sääntöjen noudattamisesta

Jos Java 8 -järjestelmä on vakaa, erillinen ja muuttuu harvoin, sitä ei välttämättä tarvitse uudistaa kiireellisesti. Jos järjestelmä on kuitenkin liiketoiminnan kannalta kriittinen, asiakaskäytössä, yhteydessä pilvipalveluihin tai sen on tarkoitus tukea tekoälyominaisuuksia, alustan päivitys tulisi suunnitella ennen uutta, laajempaa kehitystyötä.

Miksi tällä on merkitystä: Java 8:aa voidaan edelleen käyttää hallituissa vanhoissa ympäristöissä, mutta sen pohjalta toteutettavat uudet strategiset hankkeet aiheuttavat vältettävissä olevia riskejä.

Mitä johdon tulisi odottaa hyvältä Java-päivitykseltä

Hyvän Java-päivityksen ei pitäisi tuntua sankarillisesti tekniseltä pelastusoperaatiolta. Sen pitäisi tuntua pikemminkin hallitulta alustan kunnossapidolta.

Odotetut tulokset ovat:

  1. Pienemmät tietoturvariskit
    Uudemmat ajoympäristöt ja tuetut frameworkit vähentävät altistumista vanhoille riippuvuuksille ja tuottamattomille komponenteille.
  2. Nopeampi toimitus
    Tiimit käyttävät vähemmän aikaa vanhentuneiden laajennusten, SDK:iden ja build-prosessien kanssa taisteluun.
  3. Parempi pilvi- ja tekoälyvalmius
    Nykyaikaiset Java-versiot toimivat paremmin nykyisten SDK-pakettien, konttien, suoratoistomallien, seurantatyökalujen ja käyttöönottomallien kanssa.
  4. Rekrytointi paranee
    Kehittäjät ovat halukkaampia työskentelemään alustalla, joka tuntuu ylläpidetystä ja ajantasaiselta.
  5. Ennakoitavammat kustannukset
    Säännölliset päivitykset ovat edullisempia kuin toimittajan, yhteistyökumppanin tai auditointimääräajan aiheuttamat kiireelliset päivitykset.

Voiko Java-versiomme hyödyntää nykyaikaisia tekoälypalveluita?

Kun tiimit sanovat, että ”emme voi integroida tekoälyä”, ongelma ei useinkaan ole tekoälyn toimittajassa. Syynä on yleensä ympäröivä alusta: Java-versio, kehysversio, SDK-tuki, TLS, HTTP/2, gRPC, suoratoisto, havainnoitavuus, verkon hallinta ja käyttöönottoarkkitehtuuri.

Tärkeänä erona on:

”SDK toimii teknisesti” ei tarkoita samaa kuin ”alusta on valmis tuotantokäyttöön tarkoitettuun tekoälyyn”.

Monet tekoäly-SDK:t tukevat edelleen vanhempia Java-versioita. Tuotantokäytössä olevat tekoälytyökuormat vaativat kuitenkin usein muutakin kuin toimivan asiakasohjelmistokirjaston. Niissä tarvitaan luotettavaa suoratoistoa, turvallista todennusta, nykyaikaisia HTTP-asiakasohjelmia, toimivaa aikakatkaisujen käsittelyä, uudelleenkokeiluja, käyttörajoituksia, kustannusseurantaa, lokitietojen keruuta ja valvontaa.

Mitä tärkeimmät Java SDK:t nykyään edellyttävät

OpenAI:n virallinen Java SDK

Virallinen OpenAI Java SDK on luotettavin tietolähde OpenAI-sovellusliittymien kehittämiseen Java-ympäristössä. Uusia OpenAI-integraatioita kehittävien tiimien tulisi tarkistaa tiedot suoraan tästä lähteestä, sillä tekoälyrajapinnat ja sovelluskehityspaketit muuttuvat nopeasti.

Azure OpenAI Java-sovelluksille

Azure OpenAI:lla on ollut oma Java-asiakaskirjastonsa, mutta Microsoftin Azure SDK -arkistossa ilmoitetaan nyt, että nykyinen Azure OpenAI Java -client ei enää päivity tässä muodossa. Uusimpien OpenAI-ominaisuuksien osalta Microsoft ohjaa kehittäjiä käyttämään virallista OpenAI Java -kirjastoa ja tarjoaa tarvittaessa Azure-kohtaisia siirtymisohjeita.

Tämä ei tarkoita, että jokainen olemassa oleva Azure OpenAI Java -integraatio olisi kirjoitettava välittömästi uusiksi. Se tarkoittaa kuitenkin, että tiimien tulisi tarkistaa valitsemansa asiakasohjelma ennen uusien, pitkäaikaisten tekoälytoimintojen kehittämistä.

AWS Bedrock ja SageMaker

AWS:n tekoälypalveluiden osalta tiimien tulisi käyttää ensisijaisesti AWS SDK for Java v2:ta uusissa projekteissaan.

AWS SDK for Java v1:n tuki päättyi 31. joulukuuta 2025. Tämä muuttaa painotuksen muotoilusta “suunnittele ennen kuin se päättyy” kohti ajatusta “käsittele migraatio aktiivisena teknisenä velkana”.

SDK v1:tä käyttävät nykyiset sovellukset saattavat edelleen toimia, mutta niitä ei tulisi käyttää uusien strategisten kehityshankkeiden perustana.

Google Cloud ja Vertex AI

Google Cloudin Java-kirjastot on testattu useilla Java-versioilla, kuten Java 8, 11, 17, 21 ja 25. Myös Google suosittelee Java 25:tä parhaaksi vaihtoehdoksi uusille kehityshankkeille.

Tämä on hyödyllinen vivahde. Vanhempia Java-versioita saatetaan edelleen tukea, mutta uusissa kehityshankkeissa ei pitäisi automaattisesti valita vanhinta tuettua ajoympäristöä. Tuki ei ole sama asia kuin strateginen yhteensopivuus.

Mitä tämä tarkoittaa Java-ajoympäristön kannalta

Java 25 – Vihreä

Parhaiten sopiva kohde uusille AI-pohjaisille palveluille ja alustojen modernisointiin. Se tarjoaa vahvimman nykyisen LTS-aikajänteen ja on hyvin linjassa sen kanssa, mihin pilvikirjastot ja esimerkkiratkaisut ovat siirtymässä.

Java 21 – Vihreä

Edelleenkin erittäin vankka lähtökohta. Monille tiimeille Java 21 on paras käytännön ratkaisu ennen Java 25:tä, etenkin kun päivitetään Java 8:sta tai 11:stä.

Java 17 – Keltavihreä

Java 17 pystyy edelleen tukemaan nykyaikaista tekoälytyötä, etenkin jos kehysrakenteet sitä edellyttävät. Sitä tulisi kuitenkin pitää väliaikaisena tai vähimmäisvaatimuksena, ei ensisijaisena pitkän aikavälin tavoitteena.

Java 11 – Keltainen

Tekoälyn integrointi voi edelleen olla mahdollista, mutta frameworkkien, esimerkkien, laajennusten, konttien ja tietoturva-asetusten suhteen on odotettavissa yhä enemmän ongelmia. Java 11:n käyttöönottoon tulisi yleensä liittää alustan päivityssuunnitelma ennen tekoälyn laajamittaista käyttöönottoa.

Java 8 ja vanhemmat versiot – Punainen uusille tekoälyprojekteille

Jotkin SDK:t ja kirjastot saattavat edelleen tukea Java 8:aa, mutta sen suorituskyky on heikko. Jos aiot tehdä vakavaa tekoälytyötä, päivitä alusta ensin.

Nopea tarkistuslista Java-palveluiden tekoälyvalmiudesta

Ennen kuin aloitat tuotantokäyttöön tarkoitettujen tekoälyominaisuuksien rakentamisen Java-sovellukseen, tarkista seuraavat seikat:

  1. Runtime
    Käytämmekö Java 21:tä vai 25:tä? Jos emme, onko meillä ainakin selkeä suunnitelma, miten siirrymme pois Java 8:sta tai 11:stä?
  2. Framework
    Tukeehan Spring Boot-, Quarkus-, Micronaut-, Jakarta EE- tai sovelluspalvelinversiomme sitä Java-versiota, johon haluamme siirtyä?
  3. SDK-valinta
    Käytämmekö nykyisiä SDK-paketteja, vai kehitämmekö uusia ominaisuuksia asiakkaille, joiden tuenhallinta on jo päättynyt tai päättymässä?

  4. Suoratoisto Toimiiko SSE-, WebSocket-, HTTP/2- tai gRPC-liikenne kuormantasaimien, ingressien, proxien ja tietoturvakerrosten kautta?
  5. Turvallisuus
    Ovatko TLS-asetukset, varmennepaketit, salaisuuksien käsittely ja todennusmallit ajan tasalla?

  6. Seurattavuus Voimmeko seurata viivettä, tunnuksen käyttöä, kustannuksia, palveluntarjoajan virheitä, uudelleenkokeiluja ja aikakatkaisuja?
  7. Suojatoimenpiteet
    Onko käytössä käyttörajoituksia, käytäntöjen tarkistuksia, lokitietoja ja API-rajoituksia? Tekoälypalveluita ei tulisi kutsua suoraan selaimista tai hallitsemattomista asiakasohjelmista.
  8. Rollbackit ja kustannusten hallinta
    Voimmeko poistaa käytöstä, rajoittaa tai ohjata tekoälyominaisuuksia uudelleen, jos kustannukset, viive tai laatu muodostuvat ongelmaksi?

Framework- ja työkalukysymykset

Java-päivitykset tapahtuvat harvoin erillisinä. Java-ajoympäristö on nimittäin vain yksi osa alustaa.

Realistisessa päivityssuunnitelmassa tulisi tarkistaa seuraavat seikat:

  • Spring Boot tai muut frameworkit,
  • Spring Frameworkin vaatimukset,
  • Maven- tai Gradle-versiot,
  • build-laajennukset,
  • testauskehykset,
  • APM ja valvontatyökalut,
  • tietokantaohjaimet,
  • sovelluspalvelimet,
  • konttien peruskuvat,
  • CI/CD-suorittajat,
  • pilvipohjaiset sovelluskehityspaketit,
  • tietoturvatarkistustyökalut.

Spring Boot on hyvä esimerkki siitä, miksi tällä on merkitystä. Spring Boot 4 vaatii Java 17:n tai uudemman ja tukee Java-versioita aina Java 26:een asti. Tämä tekee Java 17:sta vähimmäisvaatimuksen, mutta ei välttämättä sitä kaikista parasta tavoitetta. Jos tiimi tekee jo merkittävää modernisointityötä, kannattaa arvioida, onko Java 21 vai Java 25 parempi lopullinen kohde.

Huonoin tapa on päivittää Java, framework, riippuvuudet, kontit ja käyttöönottoprosessit kerralla ilman välivaiheita. On parempi selvittää, mikä taso aiheuttaa todellisen pullonkaulan, ja edetä hallitusti vaihe vaiheelta.

Toimitus ilman turhaa draamaa

Turvallisimmat Java-päivitykset ovat tylsiä.

Aloita pilottivaiheella. Valitse yksi palvelu, joka on edustava mutta ei kuitenkaan liiketoiminnan kannalta kriittisin. Päivitä se yhdessä toimipisteessä. Suorita testit. Luo kontti. Ota käyttöön testausympäristössä. Mittaa käynnistysaikaa, muistin käyttöä, viivettä, virheitä, lokitietoja ja integrointikäyttäytymistä.

Päätä sitten käyttöönottotapa:

  • yksi palvelu kerrallaan,
  • yksi sovellusryhmä kerrallaan,
  • yksi ympäristö kerrallaan,
  • tai yksi framework-perhe kerrallaan.

Vältä ”big bang” -päivityksiä, ellei järjestelmä ole pieni ja perusteellisesti testattu.

Kun kyseessä ovat tietokantamuutokset, suunnittele asia huolellisesti. Vanha ja uusi koodi saattavat joutua toimimaan rinnakkain jonkin aikaa. Tällaisissa tilanteissa palauttaminen ei aina ole yhtä yksinkertaista kuin vanhan sovelluksen uudelleenasentaminen. Joskus turvallisempi vaihtoehto on jatkaa kehitystä korjauspäivityksen avulla.

Hyvä päivityssuunnitelma määrittää:

  • mitä testataan,
  • kuka hyväksyy ylennyksen,
  • mitkä mittarit ovat tärkeitä,
  • miltä epäonnistuminen näyttää,
  • miten palata taaksepäin tai siirtyä eteenpäin,
  • milloin päivitys katsotaan valmiiksi.

Usein kysyttyjä kysymyksiä päätöksentekijöille

Voimmeko skipata Java-versioita?

Usein kyllä. Yleensä Java-versiota ei tarvitse päivittää yksi kerrallaan.

Versioiden ohittaminen on kuitenkin turvallista vain, jos frameworkisi, SDK:t, build-työkalusi ja käyttöönottoprosessisi tukevat kyseistä versiota. Pyydä lyhyttä yhteensopivuustarkistusta ennen muutoksen vahvistamista.

Pitäisikö meidän siirtyä suoraan Java 25:een?

Uusien palveluiden osalta yleensä kyllä.

Olemassa olevien järjestelmien osalta se riippuu frameworkkien ja riippuvuuksien valmiudesta. Java 25 on paras pitkän aikavälin LTS-tavoite, mutta Java 21 voi olla turvallisempi ensimmäinen askel monimutkaisille järjestelmille, jotka siirtyvät Java 8:sta tai 11:stä.

Pitäisikö meidän käyttää Java 26:ta?

Yleensä se ei ole tuotantostandardi.

Java 26 on hyödyllinen testaukseen ja valmistautumiseen, mutta se ei ole LTS-julkaisu. Useimmille yritysjärjestelmille Java 25 on parempi pitkän aikavälin kohde.

Onko Java 17 edelleenkin turvallinen?

Java 17 voi olla edelleenkin turvallinen ja kelvollinen vaihtoehto, etenkin järjestelmissä, joissa on jo käytössä nykyaikaisia frameworkkeja. Sitä ei kuitenkaan tulisi pitää ihanteellisena kohteena uusille alustakehityshankkeille.

Ajattele Java 17:ää nykyaikaisen kehityksen vähimmäisvaatimuksena tai välivaiheena. Pitkän aikavälin suunnittelua varten kannattaa tarkastella Java 21:tä tai Java 25:tä.

Tarvitsemmeko virtuaalisia säikeitä?

Ette välttämättä.

Virtuaaliset säikeet voivat auttaa I/O-intensiivisiä palveluita, etenkin sovellusrajapintoja (API), yhdyskäytäviä, suoratoistopalveluita ja integrointia vaativia työkuormia. Niiden käyttöä tulisi kuitenkin harkita tarkkaan. Älä tee päivitystä pelkästään siksi, että ominaisuus kuulostaa houkuttelevalta. Tee päivitys vain, jos alustan edut ovat riittävän vakuuttavia.

Miten käyttökatkot vältetään?


Käytä vaiheittaisia julkaisuja, toimintatarkistuksia, seurantaa sekä käyttöönottosuunnitelmaa, jonka avulla voit tarvittaessa keskeyttää tai peruuttaa käyttöönoton.

Jos muutokset koskevat dataa, suunnittele siirtymä siten, että vanhat ja uudet sovellusversiot voivat toimia turvallisesti siirtymävaiheen aikana.

Mitä pitäisi tehdä, jos käytössä on edelleen Java 8:n tai 11:sta?

Ei tarvitse hätääntyä, mutta älä myöskään sivuutta asiaa.

Aloita kartoittamalla tilanne. Selvitä tärkeimmät esteet. Tarkista framework-versiot, toimittajien tuki, SDK:t ja käyttöönoton rajoitukset. Valitse sitten realistinen tavoite: usein ensimmäisenä askeleena Java 17 tai 21, ja pidemmän aikavälin tavoitteena Java 25.

Johdon nyrkkisääntö

Jos käytät Java 25:tä, käytät tällä hetkellä vahvinta LTS-perusversiota.

Jos käytät Java 21:tä, olet edelleen hyvässä asemassa, mutta sinun kannattaa pitää Java 25 mielessäsi.

Jos käytät Java 17:ää, olet kelvollisella mutta supistuvalla lähtötasolla. Suhtaudu siihen vähimmäisvaatimuksena tai välivaiheena, älä suositeltavana lopputuloksena uusille modernisointihankkeille.

Jos käytät Java 11:tä, varaudu kasvaviin ongelmiin ja aloita siirtymän suunnittelu.

Jos käytät Java 8:aa tai vanhempaa versiota, vältä rakentamasta laajoja uusia tekoäly-, pilvi- tai kumppani-integraatiohankkeita sen varaan. Päivitä alusta ensin.

Mitä seuraavaksi kannattaisi tehdä?

Pyydä tiimiltäsi yhden sivun pituinen Java-luettelo:

  • sovelluksen nykyinen Java-versio,
  • Java-toimittaja ja tukipalvelu,
  • pääframeworkin versio,
  • build-työkalun versio,
  • keskeiset riippuvuudet ja SDK:t,
  • tunnetut estot
  • suositeltu kohdeversio,
  • arvioitu päivitysreitti,
  • testin luotettavuus,
  • käyttöönottosuunnitelma.

Hyväksykää sitten lyhyt kokeilu. Tavoitteena ei ole päivittää kaikkea heti, vaan pikemminkin korvata oletukset faktoilla.

Kun tie on selvä, ajoita päivitys pieniksi, hallittaviksi vaiheiksi. Tee tästä neljännesvuosittainen rutiini, jotta Java-päivitykset eivät koskaan pääsisi aiheuttamaan kriisiä.

Ota meihin yhteyttä

Autamme yrityksiä suunnittelemaan ja toteuttamaan Java-päivitykset rauhallisin, mitattavin vaihein.

Jos haluat, että joku tarkistaa Java-sovelluksesi, tai jos tarvitset kehitystiimin päivittämään järjestelmän, ota yhteyttä.

Tiimin täydentäminen

Sopii parhaiten silloin, kun tarvitset täysin tehtäviinsä keskittyviä kehittäjiä sekä lisäresursseja pidempiaikaiseen kehitykseen (6+ kuukautta).

Lue lisää

Ohjelmistoprojektit

Sinulla on jo liikeidea, jonka avulla voit menestyä, mutta tarvitset asiantuntevia ohjelmistosuunnittelijoita sopivan ratkaisun rakentamiseen.

Lue lisää

Ohjelmistokehityspalvelut

Tutustu kirjoittajiin

Paavo Pauklin
Johtokunnan jäsen
+372 6 555 022
Joseph Carson
Eettinen hakkeri, kyberturvallisuusneuvoja
+372 6 555 022

Ilmoittaudu 30 minuutin ilmaiseen konsultaatioon

Varaa ilmainen konsultaatio