From 20c90868de9afa30fbab93175abd1d49d3c0a5fe Mon Sep 17 00:00:00 2001 From: Max Rydahl Andersen Date: Wed, 29 Nov 2023 10:17:45 +0100 Subject: [PATCH 1/5] blog on java 17 --- _posts/2023-11-29-java-17.adoc | 75 ++++++++++++++++++ .../posts/javaversions-used-by-32plus.png | Bin 0 -> 26709 bytes 2 files changed, 75 insertions(+) create mode 100644 _posts/2023-11-29-java-17.adoc create mode 100644 assets/images/posts/javaversions-used-by-32plus.png diff --git a/_posts/2023-11-29-java-17.adoc b/_posts/2023-11-29-java-17.adoc new file mode 100644 index 0000000000..28eddc6cbd --- /dev/null +++ b/_posts/2023-11-29-java-17.adoc @@ -0,0 +1,75 @@ +--- +layout: post +title: 'Java 17' +date: 2023-11-29 +tags: announcement +synopsis: Quarkus 3.7 will move Quarkus to use Java 17 as the default JDK +author: maxandersen +--- + +:imagesdir: /assets/images/posts/ +ifdef::env-github,env-browser,env-vscode[:imagesdir: ../assets/images/posts/] + +Today we are anouncing that Quarkus 3.7 will move Quarkus to use Java 17 as the default JDK. + +When we started Quarkus 3.0 https://quarkus.io/blog/road-to-quarkus-3/#java-target[we stayed on Java 11] the feedback we got was that moving to Jakarta was for many easier than to also move the underlyng JDK. We wanted to give the ecosystem time to catch up and make sure we had a good story for users that needed to stay on Java 11. + +At 3.0 release we supported Java 11 for Quarkus core, and we https://quarkus.io/blog/quarkus-3-0-final-released/#java-11-deprecated[marked Java 11 as deprecated]. It should be noted that parts of the platform, especially Camel for Quarkus already requires Java 17. + +Today we are taking the step to move Quarkus core to Java 17 as the default JDK for Quarkus 3.7 and onwards. + +This means that Quarkus 3.7 will require Java 17 to build and run all Quarkus applications. + +Below are some of the reasons for this decision and what it means for you as a Quarkus user. + +## Everyone is using Java 11 - you cannot do this! + +We know that many users are still using Java 11 and we are not forcing you to move to Java 17. We are just making it the default for Quarkus 3.7 and onwards. + +That said - the https://quarkus.io/usage/[usage data development builds] in the last 30 days shows less than 8% using Java 11. + +image::javaversions-used-by-32plus.png[] + +## I cannot move to Java 17 yet, what should I do? + +If you cannot move to Java 17 yet, then you can continue to use Quarkus 3.6, but we recommend you consider to use the Quarkus 3.2 LTS stream as that is the version that will get updates and fixes for the longest. + +Be mindful though that Java 11 itself is rapidly heading towards going out of full support in 2024 thus we recommend you start planning your migration to Java 17 or even Java 21 as soon as possible. + +## I'm already using Java 17, what does this mean for me? + +If you are already using Java 17 then this change will not affect you. You can continue to use Quarkus using records, multiline strings, faster runtime performance and all the other cool stuff in Java 17 . + +## Why Java 17 and not Java 21? + +Quarkus supports Java 21 already today. The most well known feature of Java 21 is probably https://quarkus.io/blog/virtual-thread-1/[virtual threads] and we supported that already when it was made preview in Java 19. We mainly recommend Java 21 because of all the improvements made that makes any Java application faster and more efficient - with or without Virtual Threads. + +Reality is though that companies and organizations today are still in the process of migrating to Java 17 and we want to make sure that we are not forcing them to also migrate to Java 21 at the same time. + +But please do use Quarkus with Java 21 if you can, it is awesome! + +## I'm a Quarkus extension developer, what does this mean for me? + +If you are a Quarkus extension developer then you should already be testing your extension with Java 17. If you are not, then you should start doing so now. + +If you are part of the https://quarkiverse.io[Quarkiverse extension ecosystem] then we already recommend at time of Quarkus 3.2 to have a branch targeting 3.2. + +If you already have tht things should be fairly straightforward. + +Build your extension for Quarkus 3.2 against Java 11 and have your main branch using Java 17. + +There are things like Quarkus ecosystem CI which we will want to update to target multiple branches - if interested in that and especially helping out on making that work, then please follow and/or post on quarkus-dev mailing list or in the dev channel on https://quarkusio.zulipchat.com/[Zulip]. + +## Quarkus does not need to be built with Java 17, thus why? + +Today Quarkus does not use Java 17 features, we deliberatly did it that way so we could support Java 11, Java 17, Java 21 etc. at the same time. We could continue doing so - we don't *really* need records, multiline strings etc. to build Quarkus. + +But we are starting to see dependencies we or other extensions have that are moving to Java 17 and we want to make sure we can support them and users can use them. + +One particular example coming in 2024 is that JPA 3.2 for Hibernate 7 is requiring Java 17. + +There are many more, and thus starting when https://github.com/quarkusio/quarkus/pull/37335[this PR] is merged - Quarkus main will require Java 17 to build and run. + + + + diff --git a/assets/images/posts/javaversions-used-by-32plus.png b/assets/images/posts/javaversions-used-by-32plus.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2b18793a27416fb66f07c2e0bfedb43f8d7d10 GIT binary patch literal 26709 zcmeFZXH?VA6E~WKsGy=00YRnrswf~JMWy$WP^Bq|1P}y4da+QYN|BD#5PAtHT~Vrl zlmG^43IahuDbka>L4W@5i~HuD^SpdGCnsU^-QC&Q+1V+dNw}VlD)n)e;}8ghT3t=a z00Mzw!0RmKQP7ef+II%LLEQ~hZ$QfW&M$(0yzETW?`ms91i@!Y2pq}+IYNE}yyT(h z{(V+~@M>OgpTGYZX*kV@+Z5+!PeofF z;YU9>OI&qf8}a=;xmvTew_;O@Rao*~nDAYe*dLj%dm+{$@xwArLp_ci0;N=hz-WRX zaCYmn!IEu1-k$&00KW5r(_k7Y55NBNqzauPnq`sk`D4)GZ(l|9+NuA>08MArA+Jz* z<`<9u8TIg?SKYFIA3mIj8~PLzcmFN_|7)hFf~)@W9>!=#{RvJ)U@jQelr{(o>RiX^qLZ}U$ouf!mcpNTY(ix9{7P?F|GkDwn z-ReR1PuniVSA6odDHYj~uya!P5ej>s`w^ zRs)Pn&FjhvsNLuLkeq6DW49wC6mahydqceb3dg-*#qvQbnM95kj4XMAaQ0Y*;2zNi zt%-oWWe;lUjZZgm)&26t`0;UyIipgu{NLj)3S!64c~$JFD7ltfHeuvAPyZ3RSbiuc zCj4vOCCXXdY2x0h3%|jK?)gk#oe7Uo3+R)%sZ#qae^2c=7XFXaf8?0m4n~PffDT=Q zS8=m1X|()`a)H;UUwx2cR$(3NvzVVe42EIzlJwu*Xg!$ideOu~A>;mItP(Zb8MiC> z%c}Cx;$Xf;KrT1!ppbDHB9ckW$far12q#gakAHRYaE`I-;9!JiRnWoWC_8KR=aQ|; zbNDYFT&(2&jjwkt+L4YW1vw3etXo}B+ zjpCp^cCoNGT9GzvI<%D%4A{@Qis zM&N@o4l<8hX<;S$9`EB$Qow9r)%N|OkunEbo}|_KrLtWk>ho9inzkl=Cl9>mGv=w( z4t~Z2?&sni%bOb440H>PM$iEp1FD1sLmmCg_I<;>$o+ud)mg~XavQNM7p;S~oR;xe zLZsDxj?ezD4x#Sd%isI6%2i@mm;1l69Bzv+pP~}Z?bvO3IEr@R$Bzxp7~*{Ywe{yD zqYGZs!E<}QD{oZ&*VCppRtj}82;swPZBIp407b{+1Pkf5hx!AF?j9W%9wk(>25irS za3YUeJseP;leu*$kwNF+Vd(l9RTXG(2;A0U9&oF8GLUrO_Bo5VQAl`CuPZ#&^MU+1 zNG*}lsVNMjq)u9DAqss8A$^a%dFoeAF5R1n2OSqE4tnZMP2+!d3zd82n2z(tO}6aM ziD?x4<^h~_o{SF}(p9kVKUlIdZun6Z$!Do6v&bE2JZUyM*(A*>19^6itkoFl713rt zu4#oTB4Ck>A_k!sJYV{(_e%93qvd{^YyxT$Rvj&_&|#{I)a5z#gt}-=RL?(ny1VQW zSbR!mA=~YesrhavS4_fczs!;_4c~I$o>XK4pL4)}rxBn|FZkWWb*Dsu6tgDHXk7pWkNk+@Ed#!X2dNF;xB> zGYwbz;=eaOWi)E(>m2kRX>5_-yjkjUq@bVTNb2jI_k8lN0yc8la3ybmGV<-8y(bVD zf7#+d6T06&Yt|giqb_OvOhL=_=i6gK4y(y6`*!RGKakUbhj&CPGmH{xf2&K8{gbx! zM7;;$@d;7AD)*@@?s}Frsc!ew_ct&yrEnpAUALVkHpVX@_Vejna3Ps^Rr2nA{PG2m;fqzg|KehEHP@+&i`%(-RxeknIbo_!nvsa;z!3*>Aa*CVy=(CF4CTGYdz^5R{F`^XY z{T*-#NW+pXJWX*PMFDYwP1J1ijr$IxC&U^rTDQK?m0uKLril~GdWxeRQRKM)XUnKy z`_)raQsR`98#LfD5b?Rsd26Sz>%cxi1&y)wN2L#!TPcX)g*0jJw;cRdJcGo?-Kj2X zA^NOd6`3gW6VXhf@FVR_jhbd&P1J4f77vZ%QpKFR|N6QdX@7lgUfpU#y1s=lls!Nl zxE)H^{T7P)CYzssObK!B)7MKtB?sSwzub*!4>zC*Qalb%60<6^bx+V*jX8TMX9Yjl zLONKTd|<>GEh{5~0Jn=l1$u`UtG8UeWrXq1@*lDG`u0T;MM zo+}Q4OGS?#s9KSP24>-ZhEhc+c#ze~M&Mry{~730)T=MO)`!}eY=;HO0Ym5a_HoUB zEsC!w*%2q^?jJqz&s6)t5u}IhFg7{T}(cHGG`|2;xE23CMd zZmD4W*K#HVaszv@>~8koQNTh(!69$he}?_nl6?`ZKQ6;odEKkCi^6@b-S zxm)pX=2lifi?83a{C_RkdSqJMq@Dm;4h0+n`wfMwY4SH2}0 zTk2cwe`P|FhzGcphSjp@Yinw_&!3AzPF=vLM6u+93)u#1(-xAt>HR-D|Ec0Z?AhnX zwWmQ3qoD%r$PbE2giPNR)9Su>9?fBg!i<8vFHusHCe`Op|K%6pB`tC?7z6+QF(tP> zhRtfzwCUr6Z|%rylYnBuwfpspyb_OAzC`$m|LYON8>ENh-WH)ZdE=HZGxLC<@bjL3*1*(`HS(gkls}haFv2=EnYdzu44h!x*q+alnwY5)}_5?yq5Q37ggM zyOL7+{disb|5~Ep)cmBkzMPnKbQF`D+cv(CS4b?>N}-GF23LfBCNU6PV#5-nw{oMe zex-Dw3L@n}OzY}_-PVChd-tC(o{0qVYC?>@f|vU}cC$BA&b(`QKL|>}i5qw(TED=# z`f*q+aHq#|q^{+_nI~|6abrl=_ywQtZ~F(-|F|JYd2!P!_~}Uw_G25Xjq81tHV-{K zyq9i0`tqP7)njg3(6n0Pe}3R5I9N*qGp53@G)d>RQ@hEFfjcaTIyXa34kS;mk}vy1 zYqt;zXLY53_E6POFK6cAw@RJ{2)_2#Te zb3Mt$WNjR*ZR+-u1ng!@(Vip!Ni7W}y>%4oCFPbj{dTWQ06p4w<{6Wq>8hZ^QfZx$ zv6Vk|m$=npCAz--EylM8j>m6r88An*F|7(mE4-e2`-GDqS#j;|p3A6%@1DNK1rM8v z6)(y|7BGXudl&MC-=f3}D|m6Z0zy5dITItl8@7poqOdMsk2hWA)b-IeSirF!(fuoq z161sY+-gCDy7W3iQe|=0%3aV~$f!h*=x#7)Qhe}xT=(E-sKPLE*y7PdzK+}`LIO3+ z&%;Ks-S?>3Fo2h-N=Kqc8%fy&A%1k>)?k*Ro{;c~dUa`hs!U^iE&7_rqYZfhszd4) z=@yW9NVUL(=)DOQnCxKWVr~1kJ@gDda67rW(O5C3s9=VY9o>w5J(JK>L%EsDk--P~zzAtiXCp4nY zT0GUita5mP-Fpnq4b?qFFa&;^?q~Q=ROEcJkT2gtrmyx+<{xV?C@2eD>pd!M_|m=IDcPo(qHQ+Ci#@a^WEIs)4frXw z-^tG&dpelKaQF6eC2d^iAlnY^>#%)(mp(Ep<<{Y?rWg&>nDo0sM@kd*?6(Qc@#vyF z!LK!YZ@-fg-6CCnSh8AA%ivzmFLa}QoJY-_z1yc-FTMdw1}4#WAi!z%s@jxiLKUL~ z{GrpzItPZkmx?;Yp)Q8Vk3J3z$sR?-YOjN=$wZH0V$Ie7v0-INd$nW>?l|{iCH?aW zNpx3?|LnxI7V9P%uZKSs+KxTkC_>{u5BTdmm|s|#ihv!45L^==^Jp1@Nyw4lB+4tP zgURjYG=+BK0j};_GPrfktifKd43tTbsMW37?r|-gyDqY6V#MdhW?#zEa9#@A zh|9%yh9dV5au_e2gPvCgTfPKzP^mlf(VOf%Fm>(4j!Ua8tjKd&#Qqhulgbc@Q;&qe z3-ieCz0e4#G}AT0waaErMi}G??Jvgfag{g)W5{TRxdD?*ptl3^Q<9&2ehFPYtP^`kt(;#a48CDq0 z#S|bWwyW0X;PJfKA8sxB4XLTB@k|81Zt6W(*64w`ZGIt+xeP;ynnMq&lyb>i>GM#> zVPxafoSWQ@U%Xr!^~bK6Yqz3)Y0P37s)or14ttQE_7g$p8?D?h&IQ8xMmF!{0F65l zep-po@2D^8I;K5>sS$J_6lNQ-E_?%c;rlH3Qr#y=CCN zt7$YjS`?4EQs}w=Zc{c*D$v4v-zZapax^{tMjZ`5Kd@%6U+Ay6z{Q@U6E9%6J29fP zH#N8sI4+`KG>Hgsa7QMDIn;zSC`_OR2aNTXB`ebzOV*0H%7hs%4j7KXp><#bC)W6K z1?Yl%^$nTbuDY2;r*^lg99z{)X*9^_bh*u|&h}uWnRleJfqI9lOk5+UbY(X+?mD{* zu=E<`6iGB;H?yNFgdz=JJS%#R?K}H5JM5O{di>*8xf&AUW`!)DB~_2_=9Y#Tsit>d zWVfaS<|{{Z>q$xk51HmDKy%U~lFP`~;i;|o!2&^~H!P@ya0yh&xGd;MO5&i& zX#F0Ri=d3GuevH>@iO9|K%y4vIlsrQ15RVq<;EfV4VykkVZEhjO`q}GS7fg@G~ z@UymYks3AuSNf!0<*(7=d&Vx9h4J(5gO!$dvUAkP9?fIK7df<_a*$c9t#QT!ul0|^ zl(~V4nKR1lE)Qo3H{3~ID9cxnRMI(sYpQB=LH8u{UNz9^OLXb(Za`?uoZg9dT^@r$ z-2vl!e;rABt(M(~@bcEMYIjb%ifgV?&Z}Ct^8Gkwb-~Wx+a_5iJNLBJd+`y&vqyuS zfU2mT({@p2uP{vyDSRtuBls;@?9yjJtv2F|{seri_?Mljo~r)B)bGu%35j;l0&hxR z_Wu^us|+jCS#pwN!O4drzC=6wqZmtH*Nqu9v{Inm7Z&g}gm=RAqy)A@MG-6O>bH)=-iexRp( ztpa&PNL6Ll^?{?b7BxfXHVcw;7f0#PEQIHCLXDatMs{CDl#m|+1y=V*)3>!lgDg8V z5+p7(*Bpn^gXL*&9G6VFo;{GzY_iztGo%8;t$mvGU&Ih>7UHWsJlS2@p6RX}r7K zNo0DPD(CL=RM7}1dDFN8Hh0RiSM$Z*RgU!Sa=*n2>K)YXSDis_j$q6r5BmE8TbL&5 zRVwP|bX6#zz-^q9<39?$33&Kpky^ueMdli^lCUa7RVXGLzH|q%2oDA`mkd>sknP$K^nxurpE(4a1`u|E(fWjS#@~tq+E1Hm3c;PoJo09jxphwEBtbWz} z@o(7bhRy3A7H!#s0NY{M+JEnN>AlF4Y~(fiGx{Xk1Pi7Ri-_Ms1Xo=TS_gDzR5&M% zmxONP#y*rpVye~^YGW)g*~##So;AgN1Iwb+QI(3Vrm)S#7u9V#F4l#aKA2QVXEWtv zQd54_^}wVTTI0F1vo<$by|>!Z@^z=OgSB|2dGEf&?e}33_Ro4RdTF$z>b{HXMOi(H zk3z(Y-N2sDFBvg;(&%bM9l^Ku+Nqpc6`9|-u0Wf8C0-CJVq|(MR`4!MsN!v~pW&|% znb{@021_27?EB7pyr)$~Z%qZZpep&Y{0ySbOB)<~Wopp_G0qGy_&uVErGNH$`OtC@3<59`ugwJ(5-akPX_ zpH~R*D;bgBo~G~s5iH}dVUC+2Xa=Er1!U2=^HTTI&1&w&v0Qb{?sMBSe!mz$nDt>@ zNPfVSc&mu!;>8Fi#;7PbW-6}A68Y3Bod;rb{fCQK@lsWVq@N)YFH4#-Ejhz^wYW|+ zCE(#xAV6I|^B5?(wZVyi3?vE}W9W7G{WS)YMVmGZJoc9B_S^);NZ%BQHxG9D14R|a zfVVfiu{eaY^j*%M^!i4vyG`7mSJ=vobUm2dYA$RhZk8wa$UdUAYbpwUhuC|?5R4iB zDF)r{`8u4PuPE40Hu#q`OHJ~ApKgOmzy zNe!YLNoMjaqRJYN?=@mM-a^v}tOTs`vBtm7;+&C=?D7>4;?8`rDyw&1y7AK2K+;wq zMNIp1X8PAt!2X48f%FOW7jy3+we;vO7DX1CfhVKWci)5-P82&QtR=_zhR5-Bu z;Dd7w)F1E3Ne?tk9AJZ3&j&J=Kf(Hw4KtsBw=8{@*pVk^S6ILu6Un-~u%K7oxTfJv z2<%P}h%-;XqKO;8V=4yepx5b}ARv%fK6j&lB;}0H^VuXYbV?C-$a3)G zKi9O>vdN74>_v9BNZ@SOksZG``*K@fzGYIdU32j*`g&g=6mAsqAlw$Fas-Z zuZDsP$K7+~8IvXY_h)-H5E=LH8OMp~Bc%%n5kh5p!0lF@zJ`0DBO_q%s5vqEa*(O5 zdp^zVYQ7b75p zw2^m=j1dlHH>t;IR%G|Tg!l?cBAq99vaa;c@eK6fNArqOM>E5a((Qz|;Rn5!Perm% zp9R*H%_)Ys-7oI_NTM;S3W^W2>qS8Ey0PmP?6dj)xP)tX6hSK3 ze%sp}_&i}*RqY65QVH2qBd_o|fSQFw3-)y2&$NgKRwMv%kMzPNQ|5x?wS?o|`jy19kR(uJdJz0VC4 zmc@VU>!w{?J`r45SEfJ2cSv$ab3%LkiQojvFq0<7@AV00g{G9RRfEDXzVaRcN}OJ{f~KmA zYcePd%RMEOgy4iXQ5#vHjI0~S)=pdtRvd(1rDb=>shJlCN3>_s!_{eqE3=B2gOJO! z87Cx)e7)RM)SY)4(n$v|NQ~H){H}2KJ&J6L$pS}V`KRGb>B&gN@EpQwXBvdhDT_)n z<=zto3@X*XYMr#KTwwZ4PLy7;r2dCRdlEUvVZiOc#{lEiU0;H78Ayb;w-C{oOGBip z^}zQF?d^szm;jApNdY90Hv`C+M|Z}`$@Zhcf;F^7zoy=}A#fF9NS?~|tT3njtzZ@n z4kPaq?0O*Uf|Wd%Ijh*p7%X^?rl_}x-G@H?k}9&RkK|tNaR1`)W5pYAnqsQpJmz^o zbcTCT6UFfp3NL^vE(&p`R+w*=hwdB;S5L#dH}fQpZZYc)@dcS^XI+vTQw5R8tp4=s ztHQflX_Hd*b<~D$-plIfL}3 z0YdQ@5PO~V3qvwk*z4wgzu7X%VSS2S0qiw*zdnzJ7)+`g0!b%J%5XnJ(H#Z3Eg`k> z(1`{r-+epw@-0c_f}WOYFNdA#!YX}@Q$MyOhfO41&pAsn{K}DFdzi*MMDphSyrcU# zC>X9(GAZGn5u9X02d@GyL2rn=jW2Dm&tw)+cd=KsN}p^&q3?v;ca)%~#pjJsEo|Lj zL*jfQOR=%<`$&%%>+VuuIcRu;OhBNcSq-;6YHKO#eu~BX*f0Oiv!=y<@%M-XYWF=f3`w6J zOq~Kuy1OCx<>*_qXuPJO?m<*@$u>i!AXTMVa6!>YQUT^x4CeNHpdm5Wpcc-n@H@`O z^&!bgHeZTzRxL;Z1k4`gFRhB05nyxSO>nkfNl7i+iR=1E^&k5&3O*=Bc2=kkEUY7P@HcRi z@kC~jfrrQqvYeN5_BO>4<-VV%tLHu>Xpm4ccaG{p}n z1?Q#^iK+;sx$Hw@e+E+B$YAgjRrgK}ztrKd8(<*z>#ax-<}{WY|N8pY7jX2#OEhuz zc}BjhQvG5^`J%TaSl=olJZyE+FdDq4o!tn5Su%V_wYI+`{j%0$fzeXA(kUwGovDro zM^d9M-@YdE`y=OEgv9M$r%cR<&Q;y_1P?BfVOPDeI;W9zv!GVdZ+~gbE=k_1L9bhv zThL7Rq0y4%2zJFn72VDBtn6w)F$&rBM6m~cl`7lr=@o1KU;v!!(i^`hbQ4?_%Iphw z9@}>Bz8>7ku62pWJkwLMEnYHk#4h)?G-{s1gV8|S=&S4Z9R=Jz*O(9=1=NPBUVdcNRkb1o z!_-7-UG*}}DDkp3v7NlFE~J2_E%wr-@P*|5xn6dRnP#43?Ue>P8M_L{}H9&rd2oYo*}bjmVEd3s52UJcC+88CI??6>lp!X_{f5W4_9zr^nFs*AgbXCEXHl?T z0IqEPO8wIC2PUhM-QT7A3O@lo!yp$?UZ9ndV^m^7i}sz3Q^m0DPai{V|C|Z-OS>N- z(_8MJP^gBJWH&mzwE`8L8wo;DLRa`_;x9U1MC3mc(jQgH`x4Mc2dO(SPZ*HqLx?r} z5GVVzqnlH&LRm4H{=ZFelarRBb+t7q3q4lEDn7TKlvgKc>va_lYREXb8@eBxMd}rC zlU;5Wn3Zb0*ljFJBEfqOO{k8+MD@S7GX4>6c#N|Ex2V*QdzTpI`0%c1f-P0h2}|3P zI#f6ih_K24`O3IP9}pQpm-{a}&Q;MlG|hyZ>)yhOhMZ*1A+9C2Afh@)FfWYdVc5_{ zs)1ov$AlXtyAH$6zg3aQ_gGBW5dPX6RSs63Z8Ve9$YTB8ul8@x^_B?)19H~KrFrM> z=SX@!9R%R4AsOKYa-Vwc-#-c{$S!0*83v}{^h6KK$a3wtP7{f^H#h%i!XsH`G4I7; z?pa5A?u<)malrP^w$r}eyOZyya_%Q!zMmLU!qg6k8O^aVOqn(!6uv&X92}&V*eDo> z;1y&zq^N-Aq!OU#sT<;(QS*#$T`Gf|=agtT7E^wr{peK1` zh-><}-X>S7oNq1uZklsr22sX}45V}HKh|j1vUm7Pk1B zARdVNU|y*(m6B|+fMz7!LUDEVWp;!7F8fSx-cM`6$5>68x5SuYwM>sr>zdzxlTT-} zq#FnjY6o?1EFu*X9RgA$lP>G?z6XPBi%QDeU;w!aNZOv%AzI4&N(W|n4ty_qKr%!r5 zeXXhF=4K%Pi|x2HEnRGe~oy#+~a*`IC`HX@}eMlp*-|SqeC(QNPzuE4deQ zY%DV#?X}N&1Z2Ytc$KSmJe4XmScV4r?5)x|?rHU|CdiMEo37c-FJ#iYJim16CcEB~ zpck}Ak_nTDS>EhbL6S<*oftWzE*V6|JNp8{zE4XafB`MZ>1?JbJQlprWwoHB_oS02 z6=gnndvnt?a9xWji&3H~LQP_6nZf2;OjWAgg^~9h7k4USzMd%*hP&~RwH1I`Hc=yp zMgE^D=ca6VSYx>gzw(+=qP!>}kO*9Q&`QAoPm7W@ zolzh9kG-lDsY_`pNnLb7!0Wgo*bYL#*IT7u)jJIFdH|52Z-?Oym6Zn$Nf=ONL$d9S zb?kqh+ysH8Go8Lb^TM{+09-@yXLlRGcYX^NcldHIxLc)Y;h}T-TDgQwcnRUxYe6Hd zqTQlKXetcqhxX6&Agr{CGbZb-tVD?<5 z2LRNos1Gd7ZPLA8&bT@0#Eyw#s;VJ_M{a`FqgC;Ooj}OgwK+Dgw|-JGGJc&;2j+NK zWvW($?oQ-W4u8{#`p=o>BzP)#cbi7w$lya*f?|FeQeYF0bQ#_|jb;o7Fm{$bjG#g;gU6;-<35dY0Vh z9hmy5T4_1B+t7&?e8 z@K0|`<(;q{PrB2o2J(7AhBr1V+D;kHEZEC!2fX!eqn1K1l{J)EK3GkmH2a*6E7Z*j zvHQmOGjcd*-%eD2czz|l+?GC0Vdq(jLdyu2u^yY*5W8xBJJ&>{TXy+fL(=eBniBOm zt?~=<@K{!JGo6qicSl6p2e%Il#)uL}>N*}yWYUp54g(OYIv;m_%qoE&Q_^-OPB3ox z!D+S}rRVDL0xsdP1c_A3yHONe?B#rVRNxbx2pNKB`2_}xxQX7Ym#2KRgkU(L2j^|XPE1jBbhKLl3)3+tITPohI{Q*%7LfQYpzKL8CRrW?>>Bi+ zp)Kr~S`(1)>Igt>ztlyyHP<$vg#0sqW0R*giPyH8b|#yy6(7>0ISCVZ{=(BFx*cL&$;0gj7T${pq87B)K z5o`4`Tw})rSIz5&87N>zpZ+fO!8NLUK;m-jm}XcqF!$^r*a!9=XHxS(gCQm z^)gCCeCK<0rJxmY!!iSScQQNd6mC!Pqi6Okkdbv7C7?IzeMISLy)WVk0;c^<< zVxqm&2GQEw`uSbZ6jnG@pJWJ)S7vFD$iY;`>2oN9na<2G<}a4ypx@EQu`HKr7?xBO zE2N(0$6bTw6!%tZVtDm&d1`|?#qg`=YmkqRl#9K)wC_=LllQsk)x`Z!F?rf4HH|eP zqbkA# zR}M1_ee=zd(B2YcWrSL3?@Kj;Ts3lEvuTgyn0Q}^G&*PiE~%=bA>=YNf#hwf~YO#U!h zT@Z}ULPd*V2YFiUjfdvUi#>E8XyuT7VL(rHwvz+f>2%^_v$gS+UMbTuW$JG?&>`V9 zo~um7gYlFj&m2cF-i{-JwCD>5d&yE(*b#axN9;8yZ86>43kL@SN%&P`iF17$28R-z zd}ChY3^H13P(aw}VSrJK-!nn)!5Q5$-YE)^8|)S^zq9NX%`+q6n2>PSECy(wes4q# z&w<(*WF&(2vYTsTreNP4N~au+(0ZkAo3vBrX1yV;Py3xyv{g60(oWw(T0U(AM6YwY zn6%I-CwAs%5|a4|%%_QtI}N|QQ;MaabGVkC1JR5F1B|VB|pN2u@kH=;(t){-wiJIE?9{=H!U&sl{0vJE;6{zZCWy1_zLdC`s5lUp-O153 zjBVEuDwru5rFLC)MEl@JI9B`*#es?A06c%$a zgG<3lAo_*fy%5V!7&Z+27InSAvqR1=4BK()(sEW`acBMT!`Fit3;2e;(Q+03l;dZF zU1*k5ZG2JSi6;9!vtd-HbUcP7ab%6AsPtEEtvTGJoRFlzto;Cpn#el#grk02r?S_J zc)p8%A8Wg$G$Ls#UP6|TFCJxP673C#-t@Q3fS@%$9BG&lUNPrp9~ic1 z_iOxMggylTF%@w33xVPXS*MK6mU*q6ln#AcfIejiKsh=ZHu;W9H53kNR;+Fh|#XWrZd|xK|D3jnl3fn*HDapW$Rf|rs~31m z?wAJfAN4^#B4(mmNwZ&m&k1YW6+h;ojhX%$P4w|g`CYEcN4#9H|LtC)Z&R{z8Da2Vw%wcwM{GeiDGOvlTOoq-OXDo0>Wmzn2Ui zFkfC~OEy_vOHVONqt<2Di-G9ld>($4yR)mnDyE^z1xEdwsg1w`$Ffnuus|zZ^07hD zztX90-3%GzGQc{=EqzB`Jg=PCpOyJ*y5+l_&i8}vZS^ji*n5KZ1-xzXMiHt(XjGNF z{Vtg)1qu4@WHe_e*`YN91uUSVOVO58Q&(5KRNi8l;q^7#C~WxW8?-VVIxa)wZ6|z8 zk%5`v2!~!G#Hs`nkzb^hLJS1=T>-&>3WlRR%Y*o!m{R59iJ#n1!#J_7=|0jtgGI+x z$;4pu%fi~(wU;`u3_219tps{j-oQ{h>S};5<7Wxe| zx+prug;Aw83d;AqiUIc>JPGYa0k$~sDEu|FQ;rbe|Sn?>mN^+VfhIWgV9iWmfQPCiys7h2G zjO>m;Zh9KRpVMQ=#aWa#hue7~4N@|{vV9^d!^2Ji)?Zq2t!%Rw6I!lzfk^QDtvpUC0!xgsai$nI$30>ZAhY+u^eo#9|ku&GwcM{^~a zJC)EJ!)zlDzY1k%Ua8VSK2@NCmC`L>ixSM7xx04%OJm{#{-!Z;pv0+UmJ6ysLTRq@jR}(rH%~xZ%1BsGqtd$cV0r4>gUzcTolbgRh!p%eQJ@6;Sm{E&XbpU zbW3@i(+umHv5vRJlESDgQ*54W>9^HRb~KFKnyc&VfnNzd9!5rjhSRWPQYlqff)zQ* z3m??Lf?ja;QIqcfxe=u<|)6o zd{Z4M^FR{NB)Z8%+vmcW?72nyV--4BNPv!S7$vTTYA7H@(clL5%k=k1*BXiaFZtNg zwO5pMpeU6ZI)bTfPw~J2rSB;f?6p3p_eAjoe9~;Qfe|%YhRLm2E6y!7FcYKy)N^U0 zy!2h70|~zh`2!Je)dnIsu~8hCTfb+V)%`_Oi zsnuwh86xx4J2TPMjy~}d?{#(s7-#La0Wx5J@y!^h$7CEQr9{ccL?P5qiS}!ore~z) z@j0A;{i3QU5|qCjNG*xjad5o=5?&Ibm%2N6^_HrOD$j|dZ(PN*NQ!jb6B;7g)PK3j z?h8vV!e4VgMRdu$Afai+dISa^_&t4m(ZejL6jHfgae{{5S>a{FrzYi_6~NotjGq)4*AY(awdkojj@ zmH}Io5Y8!z@ykPufZME4@&k;o@Yfo0Ms1@|15-f>9a*DHMFy-!L%mYF21Y~FhO{sm zwG2pT+&=4j2!szs{w)BKRLn~;gv7t04Om+u$wPmiO5o9iqx_xNyW{~A4`K4wCxRu- zPkzv$e66FXRP1z(3oQOF-NN~aGTS>e0`gFD#!vA-hs+ix=@%!sW-ZRoe>-uGjyb3R zAllgtVbzSDc6hdoH^8|eM2j(pbHT|9fs4!LERAbSP>CTA81yqayVg-3E61>7g1I4+ ze*I?a1DN=MZiFs52lmZ4=O|nQ_|DgAS&%#X#StuBlIX-a$3po-}WC=_i5l4V` zunm2?hx7e-nT)qLqKoCisL_N0cppph*}21FwCqoytJ%G+%iGU^5q$ZmW!}own^-5H9Gkdg4#u=DzM749b`sb8Tg+%J~Cgoijs>4_A~Gh;>IV|uvs!mBwL>HEs% z&-6rg&$VtJ4$LkIl|+0{Q8_|+1=O11&qxX?bF|u!^!bnUoE+cHwm$mkFYPe0l|HuP za602M;v4u^T?NlO=AQ8mbr$xsf;ufrZdmceEU0 zmH`K8E`lmK+*xC5wE?P%Z!HThkZ++ud+=?U#65W(pQn^KkT+sIBoWkWsv;QP^_~>B z2ab071;wqu%gv#gzKl`+_0a8`68bO3nNl%Z5q?z@tJrrJ{RZs(_mIqJ4jS%OW(-JB z18E@lB>x^m5sjB4Zq>jcS>=$!;0u0oBKLt`ui77$Ux%IF&0^O|eXIzI7jP`ro#d*# zza?Uw|O ziHv`9+(-Yf>WMv;4m4?4J21i?P*xx~Pl$q_kHP&oyTN3-#=o#{hh|7Hli2t-HSr= zklT1p+(9CEo~fk2UUT<};tW{qiFvo9C;u$9 zGqm+(^lv|z0%J#T9!fnfgfyrH^`q+-knOXa&{KPl28y3|DUoSxdaQj&qxBVNpPqA{ zTt;pT%DnQ;+YmUq1Qv z_+fiz26C>yWUm11y!KpzEc5fXpzBfD4$mR7m9%`bHGtd| zN#%M4i4^v@+yP2m_R>RX&;WOC7Ioa4rZWyAOLBjzJ4zF#7<7SjXf{#-S>%Ps-xZ|# z$&AzBoh6GWJvh<_^0x5*3PwdJp`Jvh_X8*CVMn-tk~-q% zLJ-JJsxQ*+8LyIT7~%gF=y$upN(`}Ig2}~ra7x#)K*%wvOJHa2wC3FNgQe%QWTgyS z@3u(a2gn*c{OUrB^t<#|`14XIfoFPiB5H|1zevO+gFE%JK0VBVb~>8`!hxc23=lJ; z`5U4j&r;!pV{@y6Qh-AXynEec8``ai+@h~^xs88{IJKW0j67k}H-kJdAAU)2VV^+e3-L32B@f98S0s={nx)Ucc~Ydr&>2_>9I@Qc zf`ha|?+?GsC9G0Xp8-gj$i7glJj9bI)&KGiCY4;|L_QZ4b^XRmCfex@%hTrGqIJ1=P)KBus0sP9^pNsq~kSkMmRV{r+&|~MbPbuuXV%Pg*i@|Rm6t4zs zHDp3c=ia|@pT{)&?_or0$8x^*7ig!UkX#DaVVq^N{Xa%mbSrSTB|mHgUOMPQb6Cql zM+)&PZ}*p1k#x=~nA(58%0hL)XWHGSg4$?_Ws9=@ZBLMEnTqo1g zcVS`Y|7q{bAE9i&|7WI&nMh+vB{cSjvWFs>7`w5~$dYVDL{z9qM#>f+@2?lva-aLU?(3ZMdY#uSltqbdUTg3)l{B+Q z=Vt$pl^;Vx)sA8D;iZ)XTqA||P=tis~eafOSY_O3oL<6AXm za3w!%jC9#?Kqwj*BLn1q5q)-P-Q&xH5Tyz-)f6KDWGsh_i4|~ct@6&!wohg_ACq4? z3Y=@ettYSQpZoS`Q*#&1-`{@{>RjzJ51cS~*mutX7>79niWqLcR-v}r25{fJMqnNw&>+Iz zr=5FjxFM3!`}25Vv2NwdR*yX2@V$xo9rJoN{YGi0`6AhPmCr*+U{4ajCI~a%qm>Re zIk=n|OOKpB*}c2;tnyvXO^|#D{tzc8X{%+|uHfVpg4t9i2tlK^hxT8);FLQ@pb?%9 zd+YVJxHO!D6cxdV`E;gL7NFERQ|#3AttX*{wYj%`6+TVr+jFDXU5|PWhJjsd8WS&5DWJ%DXd|E1P!V)c z@#r}_lzHk!If&e@?x!!5wFee$Box-6(IEn6WN3zs5Yu zm^{{H{&3?I)%nN$+?TTD-TdBl?+A+U5kh0gc58NJH@;u)E2*|A<3f8%F;4_?kmBrM zNak=^v`#Y1`|h+XDE8mIbE|}V+W)&OY=lAK9&hGfl^P)>oTDjmnVgSrE;TEkdsJ@d z0}h-py0DD(^kL`3a^LBuzg!CFDZT-Jgi*eRd|B$s{5WYUmpA(C#JG063gtuWU*2?8 zLO|usCaoRl;lp&28a5X4M8_?Rzt)Vm*P3lNl!0^~fUPI{*KF8B_}X4%n%ehd?|0P& zC>`gX9rJpo`-A#AptU)(HFUvuf$bcywj=iIg50lU`ra^Fw~v^15QB5P^JQp!i;Y1* ze~FJMfB(~}+5*VziMm^&Op;_2H|C&v`bL+Bc8grk7Nt0;*)m#I7pFGn zH++cSt}q+)7}AYtXBB8K1g-X5N6IBu7?U%4oH@PBxtk5+BEh{Bt@N4Hdcrqr^RsN< zf+IePYNIcu+VBV<&x`57!`bL&9yCoVW*WzMcM()<8Jg;Z)JYQ|>MGgPMo&+qSTU!g z+EQb806&d_EGHF~Q>DE@~up8f%dpWFE z55x7TNGNM?EruRTEiBXB)a4(G3l+RCpI&kjDz#i=X?6 zdMMHIv>jo;a47I*V=d|OoR1ZSX@>^&*2#1{l%ZQEnkUT02|O5fT75VIZ5^#g0VvApe8PG-=3`r%+ z1+LZaD))`;5h+8FHT!yOS6kJ+r-vLFkBgaiB za>dv}r9(V3!5vRGe|Km{B93UgmEZUC?jGbK*U^R$B*;GPZ#v>_A9`+n{H`0GbUfU( zHl;?1h1~m9K=o{#bTohRsDv3LCTEU9!iUDZ=i1m4vTbss?;vP zs(6oMy-02P7`3ry$bY@bO4|D=gfvC?3Qp;wTc8gYx{&Gh6TO}2wiV4T_8L(wEPEAL zl6efA?RQuyNO)47DdtuoB!%wFC`pa2-~9?ZqSc${e_OeOh>0x=%Dq>%4y@dN7EiRT z8L`@_p~If<`~BQI&@I&TilgMBkfdGeuZ(=wV|EK>HM>Q5#6)OX60-qY4aEz56l)se z!;BM>KSjJMw)D-TyB2l0PN!~LVl=%chkO;c9u!ptwqNBbG7sTtGQFwOGr%R){c?~@ z&(y&j)vrUm@1VwLevoSB7)0JiI1=4<{ZEu_rzk1$ZsCC*5v~*^2{$D) z*|)AG@U@Zc=D%=kl)y0o*|xrj`y?MFM~olSH*sR(2h?|exhZE`ylMA~ zm^nG;5z6Oj9Kp0JiPc&P`8wNG8Pw3#U)SXh&L|iX9+$)hECV9hP*E z`K85*bNf7fWMW&Bh(Id^cD80>QoN%8ktvc`=UOED4SH&boH8r6qHC0WQmRki_`ok1IJPSC-AiZVhJX%Dj+C9$m_HEXf*lC9sYfg`Iau1eK+BL6ebi%Xem{ zoYT7ODvNwq4XW$(YflHiT5#P{;H={T*z}jiT0`c%f=>W{EeB=~azwme=bqWh$oVp+DqWz7s z{>4qLX6pi)Jk}r8a2myM4_ zupwkw>v;w8!XaKks(T!q0ODS4BY zzQ9;ap#Cz~-H@WNn(}}>W*6_V29Gf%Jl9#;{ZtR1UCB}{30n2ZkZ(!?C7r@^-zE{k z9tGRf*(X3gOrzReWkp$c@oI?4z=!#+4AY@@bZF<{4%bP)+X{ouS>2~)3Lnea^tx}o zLyIdJU!XNsyKQ`ZN!nrJw<6EBmxsGEjTzcA9$MTEwG5_fQTF%D#%06%aj0XfoE?{J z+AHW0o)qEm7smb=N#QxmbN855;(;#JRRtE*N)#@JRme5BPQZ<+g zV~x%qPD0rpG>4s?dPkNymHav`1E*!S7IuSV-okiJKt|6H@GyNr2S#bgxOuZ~Xze6$ zE*pM=1|%@kE~$6#k_rrXuwK8POWEC%hRKua4m!vfB-*ZYr?ir#8@^`7L>xFEXHIN_ z$_chlr6b1OeZWu0^kr{I`^|Hw<|B>Ci?fg(hxyJ1Dn#kkZf(x9_yF7yvMft z==cZFgX60>g;0+d0hN4hVb{Rk#~6<<=ysMN>VN5J7;*A{T)!wgJslt%zsmD)ymeQ$ zn9jnaATi#lz$)L0a;b#vA>qNwc1!1c8PLAb+tYLXAh^b}eH>7U^j+U7$>}Xvtz9hO z{Mx1*0Sc15WILerZR756J^lWoS;s)euKW(o%kBYd(JzzAZ#x!6=Xp-KioQP{IHZjh z!yj#yaWaV_iNq|Gx_j4m`Oc(Qa^5-u_;*DQ7<@Ha7IBRH6CLtn68m-Xnae6c5);)R zI4N13OJY}bygP8JBviUXBIodcAMM+qu&hBL!!Jwi z_1ikKUAax#N9HQITs&s^l=13opVtwmxYmnMh0FRMi^$Df_0Gq~Qg`e18>J|CdQIvj zO~@aWM(@|O|8?s7)JSOpR=oEw{y`_d8d0L`p3Y1AFNHYnm7e%}({VYEXWxayqsq75 zEL@atIt!#krC6u_`V%e8RJYYUnVrm-{Py(bYCzfYsV4;oINWofn#DhmE0e=W(px>Phbgb(XWBRLcuw&H zxl?l;?RCiamvj5lyjNRy9^mjut=o{3O=aaKr!gvM^!l=)M1-HS!8mU9Va)ZH z*E?Po&#PU2sB`@u8DFn9wry>EEUh_-mYK;}9jH&Dy>^|t1Mq*lx5J8Q_Yu}^5Sj6s zaSx+mPH`sfXmgZ~ARq4tfdl?;i*p_h_y-thnn_rGo-3@pyPQf?+!u-5H#3#XT8x?- zy0&vZ;T|D9g@$GqN-VARe7n#H{`P$36=hl;L}FuMyV=Z2#mxa{K?JmaQ_I(jC$6sH z+eK3abxG9pc{JZL_3WoJN^R}S{wd{WxD)cZG zXQB^2V3v-&$o4G{SZk$$#xiByIX7{Nwle5|k@SuqSylC0^9Nr?nQs(_%tu=rh?E61 zo1~-pZPwSPZ_UL04RE8z1gqVMx9kY$%tR}lrwNo|r73mi!f<_yXZ^xD(pvq+9~}Hg ziXkwYjyFdU%Gz5zcJP>Fc(d39Mn7X952yuiSGV6@!1YUpwW2(qo%Bqfp3aoPo$$+$ z4l$Nny3c7oQGG68&kbqq!8Dy-NmDVL8T`Sn-$ zOu`QP6-k;Vh2K=8J#_#R`9UCAqi@r;p*!`c%?-VGCdbfGiCz5~KxQ5X@E9VA^3+*=K3Oic%_mQ{id29^bMsZ%&_WU+}gWRY{hJ%q(PK zn{ZFlS}VO#6OR(keU@zVQb5!dl%MvYuIh{HSJ8EdKzyZtXIehY}Nmp(@rZHU}~ggQkOS6MK6_OzIv zdJ@W`e^;g(0h=pDHwo@8=4Gq}5JY&`hLr_{SC8g(ZbXxW!B=&(F4>R+=hlB#xK6|X zb;~zly9yT5O&}F%kC<^?A;M#ySMgywAf0BlZd@c~LnogX#r`>Pko~`l*G*UgckwQd z3JSv(Bo#T$=yN3_h--YHPvd5!(^vHy7f2#VC+lKLCd}kAE9=?*r+kzb4FHQR0{Wrdc!H_TJ;a10|C2NSx1rs^|71 zWo^(L`&*7~qA_Iba6}v|jzFL>z=sq&A!`sxO2zVtzjfB#bt@v3RmK(R0k#D~LBd`s zggb1n3z(l#a}TH{x~+rvBA?&J=Zx3{>iV6Hhe0CD;f`fAH~kEVd& z6{v6!Os=BjFh#ss;}UKJ=(?}FO{g5YR)%bQ{MrcKLC%xvO+Zp0+WrHg0E2t7Rd~y+ z1Q_6f^K6Uc9FMaR$KVBqM^O0tMe?{&GQDgyx2@M-0$vNxdoL~@pms9b-`&&1^~tqK ztSyfgYN2a}bZQJK9-B33#jiv$xV8?sCA4eFYteQ%f{Vr@ z!2z2fjHoVcUW@*1!Vr$(!O>5fkVLY}KZ#_pnB9u}8c=ZRlOT~bi;X*%)f}1(G2AkwUt$4m&GN3eo`e zsn6QzLPk|s*0)!Hmi@MQ4oGT@(deYx*w{kZ&Qvxr84G(^K*(neW;fjPtddUMZ}t z3>1ZLR8Dj@Lq+*E-)Kf?y2FV%~1EU z|FRURp`&c5Jh>O*2uDaDXUIiA&5PcTtCnutXr-29ge5Q%aoW@RjVlW{R;`(ZVPB5&|RXJGhe{;?YW{YwA5A!Ta(@!kch}PV_@n>H>*^S;dtL z=~uJKkJhX~dIzloLXJB;#)ZfiqF6s^x*MzK=p)vaNT&ls>a!mp;UoNPB4IN|15b1~ zTKGN^4XfeWg%%_xtAf!Vw|(NnXc9=(gTuui24YEyNjJC1WA9@JEH=s_WFjE`O;p=I z()WtTj$T_;75mIQ859=Z{Cp>zM?_QLpKZL^gr17w4T?9A<<|{6d8OC=@j=6&d6;U)w(j{+RL?a6SP;fhS5m+af+*G9SHGi!Fx>E_T&=}ao9L8)P4 z?K?&79~^k-vt9)%05FR1A*xGA=7RfE8uxLe%1d$D_L;In0XelcMF6d6QGAAP#0sz0 z1ppv?)D)C4U=nGxn7?8D_>4Gz$rahN$ILJItbPGutN(O`;U2rMp)(|5QR7Lmf=_5T zytu`)r$LQ*vl&TwBVkUqYx%kL_AV{+OD|N#!uy~OK(b`~E-#P7eS z7VsDMHzWfsAq$u_zEuI$yg)Oe(}iy~mPy7sD4HDp`*syoASZv%Z?9nsysyK24-UZH zxf@d#@6bxiqz%>OU!AG`TSoC92QzkUgz`w7TpC;t{JxB^}nm8KY$iKoy_Zh zSTOLf|GSA{XZ#roQSuQBQ8I}7m+YbmTV`-t*AMpGpTYT{MSJ={G}mv+0~o*$%)xpU mHo*69%l|jf|04snak%S3_FPUUc10pT&tqz6Nv_g&JO6)l{xWv} literal 0 HcmV?d00001 From da799fbcbbf38c9d752c8828e87e98dba2b6384c Mon Sep 17 00:00:00 2001 From: Max Rydahl Andersen Date: Wed, 29 Nov 2023 17:09:39 +0100 Subject: [PATCH 2/5] Apply suggestions from code review Co-authored-by: Guillaume Smet --- _posts/2023-11-29-java-17.adoc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/_posts/2023-11-29-java-17.adoc b/_posts/2023-11-29-java-17.adoc index 28eddc6cbd..e167693b8b 100644 --- a/_posts/2023-11-29-java-17.adoc +++ b/_posts/2023-11-29-java-17.adoc @@ -1,22 +1,22 @@ --- layout: post -title: 'Java 17' +title: 'Java 17 will be the minimum version for Quarkus 3.7' date: 2023-11-29 tags: announcement -synopsis: Quarkus 3.7 will move Quarkus to use Java 17 as the default JDK +synopsis: Quarkus 3.7 will move Quarkus to use Java 17 as the minimal JDK author: maxandersen --- :imagesdir: /assets/images/posts/ ifdef::env-github,env-browser,env-vscode[:imagesdir: ../assets/images/posts/] -Today we are anouncing that Quarkus 3.7 will move Quarkus to use Java 17 as the default JDK. +Today we are anouncing that Quarkus 3.7 will move Quarkus to use Java 17 as the minimum JDK. -When we started Quarkus 3.0 https://quarkus.io/blog/road-to-quarkus-3/#java-target[we stayed on Java 11] the feedback we got was that moving to Jakarta was for many easier than to also move the underlyng JDK. We wanted to give the ecosystem time to catch up and make sure we had a good story for users that needed to stay on Java 11. +When we started Quarkus 3.0, https://quarkus.io/blog/road-to-quarkus-3/#java-target[we stayed on Java 11]. The feedback we got was that moving to Jakarta EE 10 was for many easier than to also move the underlyng JDK. We wanted to give the ecosystem time to catch up and make sure we had a good story for users that needed to stay on Java 11. -At 3.0 release we supported Java 11 for Quarkus core, and we https://quarkus.io/blog/quarkus-3-0-final-released/#java-11-deprecated[marked Java 11 as deprecated]. It should be noted that parts of the platform, especially Camel for Quarkus already requires Java 17. +In 3.0 release, we supported Java 11 for Quarkus core, and we https://quarkus.io/blog/quarkus-3-0-final-released/#java-11-deprecated[marked Java 11 as deprecated]. It should be noted that parts of the platform, especially the Camel Extensions for Quarkus, already require Java 17. -Today we are taking the step to move Quarkus core to Java 17 as the default JDK for Quarkus 3.7 and onwards. +Today we are taking the step to move Quarkus core to Java 17 as the minimum JDK for Quarkus 3.7 and onwards. This means that Quarkus 3.7 will require Java 17 to build and run all Quarkus applications. @@ -24,7 +24,7 @@ Below are some of the reasons for this decision and what it means for you as a Q ## Everyone is using Java 11 - you cannot do this! -We know that many users are still using Java 11 and we are not forcing you to move to Java 17. We are just making it the default for Quarkus 3.7 and onwards. +We know that many users are still using Java 11 and we are not forcing you to move to Java 17. We are just making it the minimum version for Quarkus 3.7 and onwards. That said - the https://quarkus.io/usage/[usage data development builds] in the last 30 days shows less than 8% using Java 11. @@ -54,11 +54,11 @@ If you are a Quarkus extension developer then you should already be testing your If you are part of the https://quarkiverse.io[Quarkiverse extension ecosystem] then we already recommend at time of Quarkus 3.2 to have a branch targeting 3.2. -If you already have tht things should be fairly straightforward. +If you already have that, things should be fairly straightforward. Build your extension for Quarkus 3.2 against Java 11 and have your main branch using Java 17. -There are things like Quarkus ecosystem CI which we will want to update to target multiple branches - if interested in that and especially helping out on making that work, then please follow and/or post on quarkus-dev mailing list or in the dev channel on https://quarkusio.zulipchat.com/[Zulip]. +There are things like Quarkus ecosystem CI which we will want to update to target multiple branches - if interested in that and especially helping out on making that work, then please follow and/or post on the quarkus-dev mailing list or in the dev channel on https://quarkusio.zulipchat.com/[Zulip]. ## Quarkus does not need to be built with Java 17, thus why? @@ -66,7 +66,7 @@ Today Quarkus does not use Java 17 features, we deliberatly did it that way so w But we are starting to see dependencies we or other extensions have that are moving to Java 17 and we want to make sure we can support them and users can use them. -One particular example coming in 2024 is that JPA 3.2 for Hibernate 7 is requiring Java 17. +One particular example coming in 2024 is that JPA 3.2 for Hibernate ORM 7 is requiring Java 17. There are many more, and thus starting when https://github.com/quarkusio/quarkus/pull/37335[this PR] is merged - Quarkus main will require Java 17 to build and run. From ccb510262550e12a0acaf5e36c61012a9817b2f3 Mon Sep 17 00:00:00 2001 From: Max Rydahl Andersen Date: Wed, 29 Nov 2023 17:59:40 +0100 Subject: [PATCH 3/5] adjust java 17 info --- _posts/2023-11-29-java-17.adoc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/_posts/2023-11-29-java-17.adoc b/_posts/2023-11-29-java-17.adoc index e167693b8b..f83a4ea8b8 100644 --- a/_posts/2023-11-29-java-17.adoc +++ b/_posts/2023-11-29-java-17.adoc @@ -26,19 +26,23 @@ Below are some of the reasons for this decision and what it means for you as a Q We know that many users are still using Java 11 and we are not forcing you to move to Java 17. We are just making it the minimum version for Quarkus 3.7 and onwards. -That said - the https://quarkus.io/usage/[usage data development builds] in the last 30 days shows less than 8% using Java 11. +That said - the https://quarkus.io/usage/[usage data development builds] in the last 30 days shows less than 8% using Java 11 for Quarkus Development. image::javaversions-used-by-32plus.png[] +We expect the Java 11 number to be higher in production but the trend is clear - Java 11 usage is low and declining. + +NOTE: If you like to help us get more accurate data for future, then please consider contributring anonymous build time data - see https://quarkus.io/usage/[quarkus.io/usage] for details. + ## I cannot move to Java 17 yet, what should I do? If you cannot move to Java 17 yet, then you can continue to use Quarkus 3.6, but we recommend you consider to use the Quarkus 3.2 LTS stream as that is the version that will get updates and fixes for the longest. -Be mindful though that Java 11 itself is rapidly heading towards going out of full support in 2024 thus we recommend you start planning your migration to Java 17 or even Java 21 as soon as possible. +Be mindful though that Java 11 itself is rapidly heading towards going out of full support. Example Red Hat's full https://access.redhat.com/articles/1299013#OpenJDK_Life_Cycle[Java 11 support ends in October 2024] and https://www.oracle.com/java/technologies/java-se-support-roadmap.html[Oracle ended Premier support in September 2023]. Thus we highly recommend you start planning your migration to Java 17 or even Java 21 as soon as possible. ## I'm already using Java 17, what does this mean for me? -If you are already using Java 17 then this change will not affect you. You can continue to use Quarkus using records, multiline strings, faster runtime performance and all the other cool stuff in Java 17 . +If you are already using Java 17 then this change will not affect you. You can continue to use Quarkus using records, multiline strings, faster runtime performance and all the other cool stuff in Java 1. ## Why Java 17 and not Java 21? @@ -58,13 +62,15 @@ If you already have that, things should be fairly straightforward. Build your extension for Quarkus 3.2 against Java 11 and have your main branch using Java 17. -There are things like Quarkus ecosystem CI which we will want to update to target multiple branches - if interested in that and especially helping out on making that work, then please follow and/or post on the quarkus-dev mailing list or in the dev channel on https://quarkusio.zulipchat.com/[Zulip]. +Some extensions may still be able to release on Java 11 but they will then target Quarkus 3.2 or 3.6 - extra care should be taken to make sure that the extension is continuing to work on Quarkus 3.7 and onwards. + +There are things like Quarkus ecosystem CI which we will want to update to target multiple branches - if interested in that and especially helping out on making that work, then please follow and/or post on the https://groups.google.com/g/quarkus-dev[quarkus-dev mailing list] or in the dev channel on https://quarkusio.zulipchat.com/[Zulip]. -## Quarkus does not need to be built with Java 17, thus why? +## Quarkus does not need to be built with Java 17, thus why require it? Today Quarkus does not use Java 17 features, we deliberatly did it that way so we could support Java 11, Java 17, Java 21 etc. at the same time. We could continue doing so - we don't *really* need records, multiline strings etc. to build Quarkus. -But we are starting to see dependencies we or other extensions have that are moving to Java 17 and we want to make sure we can support them and users can use them. +Unfortunately we are starting to see dependencies we or other extensions have that are moving to Java 17 and we want to make sure we can support them and users can use them. One particular example coming in 2024 is that JPA 3.2 for Hibernate ORM 7 is requiring Java 17. From 0e5588dfb4b29891bdaaed2814d59ca2f313a38b Mon Sep 17 00:00:00 2001 From: Max Rydahl Andersen Date: Thu, 30 Nov 2023 07:08:52 +0100 Subject: [PATCH 4/5] Update _posts/2023-11-29-java-17.adoc --- _posts/2023-11-29-java-17.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2023-11-29-java-17.adoc b/_posts/2023-11-29-java-17.adoc index f83a4ea8b8..34bbb6b286 100644 --- a/_posts/2023-11-29-java-17.adoc +++ b/_posts/2023-11-29-java-17.adoc @@ -42,7 +42,7 @@ Be mindful though that Java 11 itself is rapidly heading towards going out of fu ## I'm already using Java 17, what does this mean for me? -If you are already using Java 17 then this change will not affect you. You can continue to use Quarkus using records, multiline strings, faster runtime performance and all the other cool stuff in Java 1. +If you are already using Java 17 then this change will not affect you. You can continue to use Quarkus using records, multiline strings, faster runtime performance and all the other cool stuff in Java 17. ## Why Java 17 and not Java 21? From 41e9cc51268a547df8b7d126d435652951a7e7bf Mon Sep 17 00:00:00 2001 From: Max Rydahl Andersen Date: Thu, 30 Nov 2023 07:21:47 +0100 Subject: [PATCH 5/5] updated date --- _posts/{2023-11-29-java-17.adoc => 2023-11-30-java-17.adoc} | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename _posts/{2023-11-29-java-17.adoc => 2023-11-30-java-17.adoc} (99%) diff --git a/_posts/2023-11-29-java-17.adoc b/_posts/2023-11-30-java-17.adoc similarity index 99% rename from _posts/2023-11-29-java-17.adoc rename to _posts/2023-11-30-java-17.adoc index 34bbb6b286..6ce959083d 100644 --- a/_posts/2023-11-29-java-17.adoc +++ b/_posts/2023-11-30-java-17.adoc @@ -1,7 +1,7 @@ --- layout: post title: 'Java 17 will be the minimum version for Quarkus 3.7' -date: 2023-11-29 +date: 2023-11-30 tags: announcement synopsis: Quarkus 3.7 will move Quarkus to use Java 17 as the minimal JDK author: maxandersen @@ -79,3 +79,5 @@ There are many more, and thus starting when https://github.com/quarkusio/quarkus + +