OpenJDK-11 has been made the default-jdk in Bionic [1] a few months back. The source package was named openjdk-lts and the binaries are named openjdk-11-*, although we are still using openjdk-10 as the source. We will move to openjdk-11 after it reaches GA.
Meanwhile we would also like to ask for a blanket SRU exception for java related packages for purposes of fixing and improving openjdk-11 compatibility. Those packages might need additional backports in order to fix FTBFS and runtime errors when moving to the newer OpenJDK. The list of packages - 1005 in total as of now - is the same as the ones maintained by the pkg-java group in Debian [2] and can be seen by the end of this email. For reference please see the list of packages for which we requested a FFe before the Bionic release [3]. References: [1] https://launchpad.net/ubuntu/+source/java-common/0.62ubuntu2 [2] https://qa.debian.org/developer.php?login=pkg-java-maintainers%40lists.alioth.debian.org&set=yes&comaint=yes&version=experimental [3] https://launchpad.net/bugs/1760920 Packages for which we are requesting the SRU exception: abego-treelayout access-modifier-checker activemq activemq-activeio activemq-protobuf aether aether-ant-tasks afterburner.fx airlift-airline airlift-slice akuma androidsdk-tools angular-maven-plugin animal-sniffer annotation-indexer ant ant-contrib antelope antlr-maven-plugin antlr3 antlr3.2 antlr4 apache-curator apache-directory-api apache-directory-jdbm apache-directory-server apache-log4j-extras1.2 apache-log4j1.2 apache-log4j2 apache-mime4j apache-pom argparse4j args4j asm asm3 aspectj aspectj-maven-plugin assertj-core async-http-client at-at-clojure atinject-jsr330 autocomplete automaton avalon-framework avro-java axis axmlrpc barclay batik bcel beansbinding beckon-clojure bidi-clojure bindex bintray-client-java bnd boilerpipe bookkeeper bouncycastle bridge-method-injector bsaf bsh build-helper-maven-plugin byte-buddy bytecode c3p0 ca-certificates-java carrotsearch-hppc carrotsearch-randomizedtesting castor cdi-api cdk cglib checkstyle cheshire-clojure classycle clirr clj-digest-clojure clj-http-clojure clj-time-clojure clj-tuple-clojure clj-yaml-clojure clojure clojure-maven-plugin closure-compiler clout-clojure cmdreader cobertura codenarc cofoja colorpicker comidi-clojure commons-beanutils commons-configuration commons-configuration2 commons-csv commons-daemon commons-exec commons-httpclient commons-io commons-jci commons-jcs commons-math commons-math3 commons-parent commons-pool commons-pool2 commons-vfs compojure-clojure compress-lzf conversant-disruptor core-match-clojure core-memoize-clojure cortado cpath-clojure cpptasks cronometer crypto-equality-clojure crypto-random-clojure css2xslfo csvjdbc cup curvesapi data-priority-map-clojure dbus-java dd-plist derby dirgra disruptor dnsjava dnssecjava dokujclient dom4j doxia doxia-sitetools dropwizard-metrics dtd-parser dujour-version-check-clojure dumbster dynalang easybind easyconf easymock ecj eclipse eclipse-anyedit eclipse-cdt eclipse-cdt-pkg-config eclipse-eclox eclipse-egit eclipse-emf eclipse-gef eclipse-linuxtools eclipse-mercurialeclipse eclipse-mylyn eclipse-mylyn-tasks-github eclipse-ptp eclipse-pydev eclipse-remote-services-api eclipse-rse eclipse-subclipse eclipse-wtp eclipse-xsd eclipselink eclipselink-jpa-2.1-spec ehcache eigenbase-resgen electric entagged excalibur-logger excalibur-logkit exec-maven-plugin f2j fast-zip-clojure fastinfoset felix-bundlerepository felix-framework felix-gogo-command felix-gogo-runtime felix-gogo-shell felix-main felix-osgi-obr felix-resolver felix-shell felix-shell-tui felix-utils fest-assert fest-reflect fest-test fest-util findbugs flute fontawesomefx fontchooser fop freehep-chartableconverter-plugin freehep-export freehep-graphics2d freehep-graphicsio freehep-graphicsio-emf freehep-graphicsio-java freehep-graphicsio-pdf freehep-graphicsio-ps freehep-graphicsio-svg freehep-graphicsio-swf freehep-graphicsio-tests freehep-io freehep-swing freehep-util freehep-xml freeplane gant ganymed-ssh2 gatk-native-bindings gentlyweb-utils geogebra geronimo-annotation-1.3-spec geronimo-commonj-spec geronimo-concurrent-1.0-spec geronimo-ejb-3.2-spec geronimo-interceptor-3.0-spec geronimo-j2ee-management-1.1-spec geronimo-jacc-1.1-spec geronimo-jcache-1.0-spec geronimo-jpa-2.0-spec geronimo-jta-1.1-spec geronimo-jta-1.2-spec geronimo-osgi-support geronimo-validation-1.0-spec geronimo-validation-1.1-spec gettext-ant-tasks gettext-maven-plugin gkl glassfish gluegen2 gmavenplus gmbal gmbal-commons gmbal-pfl gmetric4j gmetrics gnome-split gossip gradle gradle-debian-helper gradle-jflex-plugin gradle-plugin-protobuf gradle-propdeps-plugin graxxia groovy groovycsv gs-collections guava-libraries guice h2database hawtbuf hawtdispatch hawtjni hbci4java hdrhistogram headius-options hessian hiccup-clojure hikaricp honeysql-clojure hsqldb htrace httpcomponents-asyncclient httpcomponents-client httpcomponents-core httpunit icu4j icu4j-4.2 icu4j-4.4 icu4j-49 ini4j instaparse-clojure insubstantial intellij-annotations invokebinder isorelax istack-commons ivy ivy-debian-helper ivyplusplus jabref jackrabbit jackson-annotations jackson-core jackson-databind jackson-dataformat-cbor jackson-dataformat-smile jackson-dataformat-xml jackson-dataformat-yaml jackson-datatype-joda jackson-jaxrs-providers jackson-jr jackson-module-jaxb-annotations jacoco jajuk jakarta-ecs jakarta-jmeter jama jameica jameica-datasource jameica-util janino jansi jansi-native japi-compliance-checker jardiff jargs jarjar jarjar-maven-plugin jas jas-plotter jasmin-sable jasperreports jasypt jatl java-allocation-instrumenter java-classpath-clojure java-comment-preprocessor java-common java-gnome java-policy java-sdp-api java-sip-api java-string-similarity java-wrappers java-xmlbuilder java3d java3ds-fileloader javabeans-activation-framework javacc javacc4 javafxsvg javahelp2 javamail javaparser javassist javatools javatuples javawriter jawn jaxb jaxb-api jaxrs-api jaxws-api jayway-jsonpath jblas jboss-bridger jboss-classfilewriter jboss-jdeparser2 jboss-logging jboss-logging-tools jboss-logmanager jboss-modules jboss-threads jboss-xnio jcharts jcifs jcm jcodings jcommander jcsp jctools jdeb jdependency jedit jenkins-htmlunit-core-js jenkins-json jenkins-trilead-ssh2 jericho-html jeromq jersey1 jesd jets3t jetty9 jexcelapi jffi jflex jformatstring jftp jfugue jgit jhighlight jimfs jinput jitescript jlapack jline jline2 jmagick jmdns jmock jmock2 jmxetric jnlp-servlet jnr-constants jnr-enxio jnr-ffi jnr-netdb jnr-posix jnr-unixsocket jnr-x86asm joda-convert joptsimple josql jpathwatch jruby jruby-joni jruby-maven-plugins jruby-openssl jsap jsch jsch-agent-proxy jsemver jsmpp json-simple json-smart json4s jsoup jssc jtharness jtidy jtreg jug junit junit4 jutils jvyamlb jxgrabkey jxplorer jython jzlib kdgcommons-java kitchensink-clojure knopflerfish-osgi kryo-serializers kunststoff kxml2 lazymap-clojure ldapjdk leveldb-java lgooddatepicker libajaxtags-java libandroid-json-org-java libaopalliance-java libapache-mod-jk libapache-poi-java libasm4-java libaxiom-java libbase libbasicplayer-java libbsf-java libbtm-java libbytelist-java libcobra-java libcodesize-java libcommons-cli-java libcommons-codec-java libcommons-collections3-java libcommons-collections4-java libcommons-compress-java libcommons-dbcp-java libcommons-digester-java libcommons-discovery-java libcommons-el-java libcommons-fileupload-java libcommons-jexl-java libcommons-jexl2-java libcommons-jxpath-java libcommons-lang-java libcommons-lang3-java libcommons-launcher-java libcommons-logging-java libcommons-modeler-java libcommons-net-java libcommons-validator-java libconcurrentlinkedhashmap-java libcsv-java libdb-je-java libdecentxml-java libejml-java libequinox-osgi-java libexternalsortinginjava-java libezmorph-java libfastutil-java libflexdock-java libfonts-java libformula libfreemarker-java libgetopt-java libgettext-commons-java libglazedlists-java libgoogle-gson-java libgpars-groovy-java libhamcrest-java libhibernate-commons-annotations-java libhibernate-validator-java libhibernate3-java libhtml5parser-java libhtmlparser-java libibatis-java libidw-java libimglib2-java libimgscalr-java libirclib-java libiscwt-java libisfreetype-java libisrt-java libitext-java libitext1-java libitext5-java libj2ssh-java libjackson-json-java libjamon-java libjaudiotagger-java libjavaewah-java libjaxen-java libjaxp1.3-java libjazzy-java libjbcrypt-java libjcalendar-java libjchart2d-java libjcip-annotations-java libjcommon-java libjdepend-java libjdo-api-java libjdom1-java libjdom2-java libjemmy2-java libjettison-java libjfreechart-java libjgoodies-animation-java libjgoodies-binding-java libjgoodies-common-java libjgoodies-forms-java libjgoodies-looks-java libjgraph-java libjgrapht0.6-java libjgrapht0.8-java libjgraphx-java libjgroups-java libjhlabs-filters-java libjibx1.2-java libjide-oss-java libjlatexmath-java libjlayer-java libjlha-java libjmac-java libjna-java libjoda-time-java libjogl2-java libjopendocument-java libjorbis-java libjpf-java libjpfcodegen-java libjrosetta-java libjson-java libjsonp-java libjspeex-java libjsr166y-java libjsr305-java libjsr311-api-java libjsyntaxpane-java libjt400-java libjtds-java libjtype-java libjuniversalchardet-java libjxp-java libkryo-java liblastfm-java liblayout libloader libmecab-java libmetadata-extractor-java libmicroba-java libmiglayout-java libmime-util-java libminlog-java libmnemonicsetter-java libmp3spi-java libnanoxml2-java libnative-platform-java libnb-javaparser-java libnb-platform18-java libnetx-java libokhttp-java libonemind-commons-invoke-java libonemind-commons-java-java liboro-java libowasp-antisamy-java libowasp-esapi-java libparanamer-java libparsington-java libpdfbox-java libpdfbox2-java libpdfrenderer-java libpgjava libphonenumber libpicocontainer-java libpixie-java libproxool-java libpulse-java libquartz-java libquartz2-java libreadline-java libreflectasm-java libregexp-java librelaxng-datatype-java librepository libsambox-java libsaxon-java libscram-java libsejda-eventstudio-java libsejda-injector-java libsejda-io-java libsejda-java libsequence-library-java libserializer libsimple-validation-java libskinlf-java libslf4j-java libspi-java libspin-java libspring-java libstax-java libstax2-api-java libswarmcache-java libswingx-java libswingx1-java libtablelayout-java libtritonus-java libtruth-java libtwelvemonkeys-java libvldocking-java libvorbisspi-java libvt-ldap-java libwoodstox-java libws-commons-util-java libxalan2-java libxbean-java libxerces2-java libxml-commons-resolver1.1-java libxml-java libxml-security-java libxmlenc-java libxmlrpc3-java libxmpcore-java libxpp2-java libxpp3-java libxstream-java libyanfs-java libzeus-jscl-java lightcouch livetribe-jsr223 localizer logback lombok lombok-ast lombok-patcher lucene-solr lucene2 lucene4.10 lwjgl mac-widgets math-combinatorics-clojure math-numeric-tower-clojure mathpiper mauve maven maven-ant-helper maven-antrun-extended-plugin maven-antrun-plugin maven-archiver maven-artifact-transfer maven-assembly-plugin maven-bundle-plugin maven-cache-cleanup maven-clean-plugin maven-common-artifact-filters maven-compiler-plugin maven-debian-helper maven-dependency-analyzer maven-dependency-plugin maven-dependency-tree maven-deploy-plugin maven-doxia-tools maven-ejb-plugin maven-enforcer maven-file-management maven-filtering maven-indexer maven-install-plugin maven-invoker maven-invoker-plugin maven-jar-plugin maven-javadoc-plugin maven-jaxb2-plugin maven-mapping maven-parent maven-plugin-testing maven-plugin-tools maven-processor-plugin maven-replacer-plugin maven-repo-helper maven-reporting-api maven-reporting-exec maven-reporting-impl maven-repository-builder maven-resolver maven-resources-plugin maven-scm maven-script-interpreter maven-shade-plugin maven-shared-incremental maven-shared-io maven-shared-jar maven-shared-utils maven-site-plugin maven-source-plugin maven-verifier maven-war-plugin mavibot medley-clojure metainf-services metrics-clojure mimepull mina mina2 minify-maven-plugin mockito mockobjects modello modello-maven-plugin modulator mojarra mondrian mongo-java-driver mp4parser mpj mqtt-client msv mtj multiverse-core munge-maven-plugin mustache-java mvel mysql-connector-java naga nailgun nekohtml netbeans netbeans-cvsclient netlib-java netty netty-3.9 netty-tcnative netty-tcnative-1.1 noggit obantoo objenesis ognl okio olap4j opencsv openhft-affinity openhft-chronicle-bytes openhft-chronicle-core openhft-chronicle-network openhft-chronicle-queue openhft-chronicle-threads openhft-chronicle-wire openhft-compiler openhft-lang openid4java openjdk-7-jre-dcevm openjdk-8-jre-dcevm openjfx openjpa oscache osgi-annotation osgi-compendium osgi-core osgi-foundation-ee owasp-java-html-sanitizer pantomime-clojure parboiled pdfsam pegdown pentaho-reporting-flow-engine pleiades plexus-ant-factory plexus-archiver plexus-bsh-factory plexus-build-api plexus-cdc plexus-cipher plexus-classworlds plexus-cli plexus-compiler plexus-containers plexus-digest plexus-i18n plexus-interactivity-api plexus-interpolation plexus-io plexus-languages plexus-maven-plugin plexus-resources plexus-sec-dispatcher plexus-utils plexus-utils2 plexus-velocity polyglot-maven potemkin-clojure powermock practicalxml-java prismatic-plumbing-clojure prismatic-schema-clojure processing-core procyon proguard projectreactor properties-maven-plugin protobuf-java-format puppetlabs-http-client-clojure puppetlabs-i18n-clojure puppetlabs-ring-middleware-clojure qdox qdox2 qdwizard rabbitmq-java-client raynes-fs-clojure reactive-streams relaxngcc remotetea resteasy resteasy3.0 rhino riddley-clojure ring-anti-forgery-clojure ring-clojure ring-codec-clojure ring-defaults-clojure ring-headers-clojure ring-mock-clojure ring-ssl-clojure robert-hooke robocode robust-http-client rome rsyntaxtextarea rxtx saaj sablecc sacjava saxonb saxonhe sbbi-upnplib sbt sbt-ivy sbt-launcher-interface sbt-serialization sbt-template-resolver sbt-test-interface scala scala-asm scala-parser-combinators scala-pickling scala-xml scannotation scopt sdes4j sdo-api-java serp service-wrapper-java sezpoz shimdandy shiro sikulix simple-http simple-xml simplyhtml sisu-guice sisu-inject sisu-ioc sisu-maven-plugin sisu-plexus sitemesh slashtime snakeyaml snappy-java spatial4j spatial4j-0.4 specter-clojure spock sqljet sqlline squareness ssl-utils-clojure stax-ex stegosuite stockpile-clojure stringtemplate stringtemplate4 stylebook sunflow super-csv surefire svgsalamander svnclientadapter svnkit sweethome3d sweethome3d-furniture sweethome3d-furniture-editor sweethome3d-textures-editor swing-layout swt-gtk swt-paperclips swt4-gtk swtcalendar swtchart syncany t-digest taglibs-standard tagsoup tcode testng tigris tika tiles tiles-autotag tiles-request tomcat-native tomcat7 tomcat8 tomcat8.0 tools-analyzer-clojure tools-analyzer-jvm-clojure tools-namespace-clojure tools-reader-clojure trapperkeeper-clojure trapperkeeper-metrics-clojure trapperkeeper-scheduler-clojure trapperkeeper-status-clojure trapperkeeper-webserver-jetty9-clojure trilead-putty-extension trilead-ssh2 triplea trove trove3 truffle truffle-dsl-processor tuxguitar tycho typesafe-config typesafe-config-clojure uddi4j uima-addons uima-as uimaj unbescape uncommons-maths uncommons-watchmaker undertow unirest-java unsafe-fences unsafe-mock user-agent-utils vecmath velocity velocity-tools visualvm vorbis-java wagon wagon2 wala webjars-locator webjars-locator-core weirdx weka werken.xpath weupnp wildfly-client-config wildfly-common wsdl4j wsil4j wss4j xhtmlrenderer xml-maven-plugin xmlbeans xmlbeans-maven-plugin xmlgraphics-commons xmlstreambuffer xmlunit xom xslthl xz-java yecht yui-compressor yydebug zookeeper On Sat, Mar 24, 2018 at 1:43 AM, Steve Langasek <[email protected]> wrote: > Hi Tiago, > > Thanks for this additional analysis. This is useful to understand in light > of the concerns (which we discussed off list) that future releases of > OpenJDK between 9 and 11 may not be fully binary compatible after all with > binaries built against OpenJDK8, and may therefore not be a viable fallback > for packages which fail to build with OpenJDK 10 or 11. > > It would be ideal to fix as many of these build failures as possible before > 18.04 releases. The number of these currently failing packages looks > manageable, especially considering the good news that maven-related fixes > are currently in progress in Debian. > > I do not consider these build failures a blocker for the plan to switch to > OpenJDK10 by default in 18.04. > > To make sure I understand the whole plan: will the maven stack need to be > rebuilt in 18.04 against OpenJDK9 to ensure packages do not fail to build in > SRU? Or were these rebuilds only for testing? On Sat, Mar 24, 2018 at 1:52 AM, Steve Langasek <[email protected]> wrote: > On Fri, Mar 23, 2018 at 09:43:40PM -0700, Steve Langasek wrote: >> On Fri, Feb 2, 2018 at 11:58 AM, Tiago Daitx <[email protected]> >> wrote: >> > On behalf of the Ubuntu Foundations Team, I am requesting an SRU >> > exception for OpenJDK. Our plan is to release OpenJDK 10 as the >> > default JRE/JDK [1] for Bionic, and then move the default JRE/JDK in >> > main to OpenJDK 11 in September/October 2018 as an SRU. > >> > = Proposed Plan = >> > Bionic will be released with OpenJDK 10 as the default JRE/JDK and >> > OpenJDK 11 will replace it once it reaches GA. > >> > OpenJDK 8 will be moved to universe and remain available there for >> > 18.04, to provide migration time for packages that can't be build with >> > OpenJDK 10 or 11. > >> > OpenJDK 8 will remain in main in 16.04 LTS (which reaches EOL in April >> > 2021). > >> Not mentioned in this description is that we should migrate ASAP to OpenJDK9 >> by default, to ease the transition to OpenJDK10 between now and release. > >> (Not mentioned because at the time you first wrote, this wasn't expected to >> miss feature freeze.) > >> > If we are going to switch to OpenJDK 11 in bionic once released, we >> > want to avoid OpenJDK 8 as the default JRE/JDK in Bionic at release >> > time because any additional interface delta that exists between 8 and >> > 11 not only exposes the archive to breakage, it also exposes external >> > consumers of the JDK to breakage. In comparison, the interface delta >> > between OpenJDK 10 and OpenJDK 11 is expected to be fairly small, >> > especially in comparison with the delta between OpenJDK 8 and OpenJDK >> > 9 that we already know is large. We should therefore release with >> > OpenJDK 10 as the default JDK in 18.04, transitioning to OpenJDK 11 >> > when it is released. > >> I agree with this rationale and approve this SRU exception for OpenJDK 11 in >> Ubuntu 18.04 LTS. > > One further outstanding question is how to name these packages in order to > avoid leaving binary packages in main at release time with no security > support and no automated upgrade path. > > My suggestion is to use the same source and binary package names for both > openjdk-10 (at release time) and openjdk-11 (once SRUed) in bionic, so that > the upgrade just happens normally as part of security updates and there are > no concerns of users who upgraded to 18.04 early being islanded on a > no-longer-supported openjdk-10 package. > > One way to do this would be to simply name the openjdk-10 package > "openjdk-11", with a 10.x version number. This would signal to users that > openjdk-11 is coming, making it less of a surprise. > > You could also call it openjdk-10, but it's less obvious to have an > openjdk-10 version 11, IMHO. > > You could even do something like "openjdk-lts", but that also has downsides > of confusion with the upstream meaning of LTS. > > > Alternative approaches, which have been considered but that I think are > worse than the above: > > - Keep openjdk-10 only in the -proposed pocket until after release, then > publish it to -updates. This would mean that either there is no openjdk > in the release pocket at bionic release, so 18.04 is not self-buildable; > or there would be some other version of openjdk left in the release which > is *also* going to go EOL, and is therefore also going to mislead users. > > - Publish openjdk-10 in main in the bionic release pocket, but use metadata > in the archive to mark it only supported in September. This doesn't help > the majority of users who never run ubuntu-supported-status or look at > the field in their Packages files. > > -- > Steve Langasek Give me a lever long enough and a Free OS > Debian Developer to set it on, and I can move the world. > Ubuntu Developer http://www.debian.org/ > [email protected] [email protected] -- Tiago Stürmer Daitx Software Engineer [email protected] PGP Key: 4096R/F5B213BE (hkp://keyserver.ubuntu.com) Fingerprint = 45D0 FE5A 8109 1E91 866E 8CA4 1931 8D5E F5B2 13BE -- Ubuntu-release mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-release
