Java 8 update 151 sau 152? [duplicat] (Programare, Java, Java 8)

Aaron Digulla a intrebat.

Există două Descărcări Java 8 pe pagina Oracle.

note de lansare a 152 notează două lucruri față de 151:

  • îmbunătățiri ale performanței BigInteger
  • Compilatoarele acceptă modificarea câmpurilor finale în afara metodelor de inițializare

Acesta din urmă pare mai degrabă un comentariu de genul „acesta este un bug, dar nu a fost rezolvat în 8; va fi rezolvat în Java 9”. Deci, acest lucru se aplică și la versiunea 151, chiar dacă nu este menționat.

Nu sunt sigur în ceea ce privește prima variantă. De ce nu este acest lucru în 151? Găsesc acest lucru foarte frustrant. Două versiuni fără o indicație clară care este „mai bună” sau versiunea „preferată” pentru majoritatea dezvoltatorilor.

De aici și întrebarea mea: Este mai bine să folosiți 152 în producție sau 151? Există vreun indicator pe care aș putea sau ar trebui să-l folosesc pentru a decide?

Comentarii

  • Am avut sentimentul că această întrebare va fi închisă… dacă nu generați manual cod de octeți (ASM?), acest lucru nu ar trebui să conteze, din câte văd eu. –  > Por Eugene.
  • Întrebarea pe care mi-aș fi pus-o în legătură cu acest lucru ar fi fost – Am nevoie de modificarea menționată în nota de lansare pentru serviciul/aplicația mea? –  > Por Naman.
  • btw aceeași pagină spune că unele „remedieri de erori notabile”… Eu aș alege categoric 152 –  > Por Eugene.
  • Mi se pare foarte frustrant. Două versiuni, fără o indicație clară care este „mai bună” sau cum se poate decide acest lucru. –  > Por Aaron Digulla.
  • @Eugene Dar textul spune că „acest lucru se aplică numai la Java 9”. Nu înțeleg de ce menționează acest lucru la „remedieri de erori”, deoarece nu este rezolvat în Java 8! –  > Por Aaron Digulla.
4 răspunsuri
varren

Ideea generală este că

  • 8u151 (tag jdk8u151-b12) este o versiune de actualizare critică a patch-urilor (CPU)
  • 8u152 (tag jdk8u152-b16) este o versiune de actualizare a setului de patch-uri (PSU)

Din versiunea oficială Oracle Explicarea versiunilor CPU și PSU

Începând cu lansarea Java SE 7 Update 71 (Java SE 7u71) în octombrie 2014, Oracle va lansa o actualizare critică a patch-urilor (CPU) în același timp cu o actualizare corespunzătoare a setului de patch-uri (PSU) pentru Java SE 7.

Ce versiune Java ar trebui să aleg: CPU sau PSU? Oracle recomandă cu tărie tuturor utilizatorilor Java SE să efectueze actualizarea la cea mai recentă versiune CPU disponibilă pentru o familie de versiuni. Majoritatea utilizatorilor ar trebui să aleagă versiunea CPU.

Utilizatorii ar trebui să folosească versiunea PSU corespunzătoare numai dacă sunt afectați de unul dintre bug-urile suplimentare corectate în acea versiune, așa cum se menționează în notele de lansare.

Versiunea CPU ulterioară va conține toate corecturile din versiunea PSU curentă. Din acest motiv, organizațiile ar trebui să testeze PSU actual în mediul lor în așteptarea includerii acestor remedieri în următoarea CPU.

Care este diferența dintre o versiune Java CPU și PSU? Java SE Critical Patch Updates (CPU) conțin remedieri ale vulnerabilităților de securitate și corecturi de erori critice. Oracle recomandă cu tărie tuturor utilizatorilor Java SE să efectueze actualizarea la cele mai recente versiuni CPU pe măsură ce acestea sunt disponibile. Versiunile Java SE CPU sunt versiuni cu numere impare (de exemplu, 7u71, 7u65 – consultați mai multe despre schemele de numerotare a versiunilor Java SE aici).

Actualizările Java SE Patch Set Updates (PSU) conțin toate corecturile din CPU corespunzătoare, precum și corecturi suplimentare necritice. Versiunile Java PSU ar trebui să fie utilizate numai dacă sunteți afectat de unul dintre bug-urile suplimentare corectate în versiunea respectivă. În notele de lansare sunt menționate corecturile suplimentare disponibile în versiunile Java SE PSU.

Versiunile PSU oferă organizațiilor și dezvoltatorilor acces la remedieri necritice pe lângă cele critice conținute în CPU corespunzătoare.

Citiți șiCe diferență există între actualizările Java pare și impare?


Pentru a găsi lista completă a corecțiilor publice de erori trebuie să deschideți pagina Bug Fixes din partea de jos a notelor de lansare.


Așadar, există 238 de remedieri de erori în PSU (8u152) (nu numai îmbunătățiri ale performanței BigInteger). Și există o mare probabilitate ca cele mai multe dintre ele să le primiți oricum în următoarea versiune CPU. Așadar, este recomandat să actualizați cât mai repede posibil la 8u151 și să testați/ajustați codul pentru comparabilitate cu 8u152. Puteți actualiza la 8u152 dacă aveți nevoie de fapt de unele corecturi de erori acolo.

Comentarii

  • „Majoritatea utilizatorilor ar trebui să aleagă versiunea CPU.” Exact. Deci, pentru OP, 151 este versiunea „preferată” pe care o căutați. –  > Por Zac Thompson.
  • Sincer, această schemă de dublă lansare mă încurcă incredibil de fiecare dată și, probabil, sunt departe de a fi singurul confuz. În plus, documentația despre acest lucru este foarte sporadică, iar în prezent este pur și simplu inexistentă în jurul paginii de descărcare. Sper că se vor gândi să renunțe la această schemă și să treacă la ceva mai convențional. –  > Por Gras Double.
  • Da, „Luați PSU numai dacă ați avut unul dintre aceste erori” în loc de „Luați PSU pentru a evita să aveți aceste 238 erori” este puțin ciudat. –  > Por Pino.
jayaram S

Conform paginilor de descărcare Oracle

Java SE 8u151 include corecturi importante de erori. Oracle recomandă cu tărie tuturor utilizatorilor Java SE 8 să treacă la această versiune. Java SE 8u152 este o actualizare cu set de patch-uri, care include toate elementele din 8u151 plus caracteristici suplimentare (descrise în notele de lansare).

Ceea ce înseamnă, în scopuri practice, că dacă vă bazați, să zicem, pe jdk8u144 pentru aplicația dumneavoastră, puteți face upgrade la 151 și vă puteți aștepta ca nimic să nu se strice.

Dar dacă aveți de gând să faceți upgrade și nu vă interesează în mod deosebit îmbunătățirile incluse în 152, puteți merge mai departe.

Dacă aplicația dvs. se bazează pe BigInteger, de exemplu, ca în cazul unor aplicații financiare, acest lucru poate fi o mare problemă și poate justifica un anumit nivel de testare a integrării.

Aaron Digulla

Am două motive pentru a prefera 8u151:

  1. Actualizatorul Java pentru desktop pentru Windows se actualizează la 8u151 atunci când îi cer să verifice dacă există actualizări. Interpretez acest lucru ca „Oracle consideră că aceasta este versiunea pe care majoritatea oamenilor o doresc/ar trebui să o aibă”.

  2. Îmbunătățirile aduse performanței BigInteger par a fi singura diferență între 151 și 152. Dacă această modificare ar fi fost bine testată și pregătită pentru producție, Oracle ar fi inclus-o în 151 pentru a evita confuzia. Dar nu au făcut-o.

Comentarii

  • Un comentariu cu privire la performanță. Se spune doar că este activată în mod implicit. Nu spune că nu erau deja disponibile și pregătite pentru producție. Ambele bug-uri la care se face referire sunt de fapt din 2015. –  > Por sfratini.
Stephen C

În general, iată cum cred eu că ar trebui să se aleagă între un CPU sau un PSU … în funcție de Oracle Explicarea versiunilor de CPU și PSU pagina (citată mai sus).

  • Dacă aveți aplicații Java critice1, , alegeți inițial CPU-ul în locul PSU-ului. Un CPU prezintă un risc mai mic ca actualizarea să vă strice aplicația.

    Ar trebui să planificați apoi să faceți upgrade la PSU în curând. Motivul este acela că următoarea versiune de CPU va cel mai probabil să includă îmbunătățirile din această sursă de alimentare. Dacă săriți peste PSU în acest ciclu de actualizare, amânați găsirea / remedierea oricăror defecțiuni neașteptate până la următorul CPU (obligatoriu). Nu puteți prezice dacă acest lucru va cauza probleme.

  • În caz contrar, dacă aveți nevoie de îmbunătățirile enumerate de PSU, alegeți PSU în locul CPU.

  • Dacă nu se aplică niciuna dintre cele de mai sus, nu contează ce ați ales.

Rețineți că aceasta este imaginea dacă nu aveți un contract de asistență. În cazul în care aveți un contract de asistență, există este posibil să existe alte opțiuni; de exemplu, plătind pentru ca Oracle să vă facă să vă învârtiți patch-uri de securitate personalizate care v-ar putea permite să amânați instalarea îmbunătățirilor … pe termen nelimitat.

Rețineți, de asemenea, că acesta este un proces decizional idealizat. În practică, inginerii de software / devops trebuie adesea să echilibreze riscurile și programele concurente fără a avea resursele necesare pentru a face o treabă adecvată.


Referitor la subiectul de ce Oracle nu vă poate oferi sfaturi clare ….

  • Ei nu pot ști cu siguranță că BigInteger îmbunătățirile de performanță nu vă vor strica codul.

  • Ei știu însă că reparațiile compilatorului ar putea schimba comportamentul codului (stricat) al anumitor persoane. Dar nu există o modalitate ușoară de a identifica acel cod stricat. a priori.

În niciunul dintre cazuri nu se știe dacă modificările PSU vor afecta pe dumneavoastră. Informațiile se află în notele de lansare pentru a vă permite să decideți. Nu v-au furnizat un arbore de decizie explicit … dar, având în vedere natura modificărilor, cea mai practică abordare este să „încercați”.

Iar acest lucru explică și de ce „cel mai bine informat grup de oameni de pe Pământ2 nu poate oferi sfaturi clare. Nu există un răspuns definitiv.


1 – Critic poate însemna critic pentru siguranță, critic pentru securitate, critic pentru activitatea organizației dumneavoastră, critic pentru activitatea clienților dumneavoastră. Decizia vă aparține.

2 – Trageți-l pe celălalt: are clopoței!

Tags:,