20
I Use This!
Activity Not Available

News

Posted about 8 years ago
The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools, along with additional features such as the ability to build against system libraries and support for alternative virtual machines and ... [More] architectures beyond those supported by OpenJDK. This release updates our OpenJDK 7 support in the 2.6.x series with the October 2017 security fixes from OpenJDK 7 u161. If you find an issue with the release, please report it to our bug database under the appropriate component. Development discussion takes place on the distro-pkg-dev OpenJDK mailing list and patches are always welcome. Full details of the release can be found below. What’s New? New in release 2.6.12 (2017-12-05) Security fixes S8165543: Better window framing S8169026, CVE-2017-10274: Handle smartcard clean up better S8169966: Larger AWT menus S8170218: Improved Font Metrics S8171252: Improve exception checking S8171261: Stability fixes for lcms S8174109, CVE-2017-10281: Better queuing priorities S8174966, CVE-2017-10285: Unreferenced references S8175940: More certificate subject checking S8176751, CVE-2017-10295: Better URL connections S8178794, CVE-2017-10388: Correct Kerberos ticket grants S8179101, CVE-2017-10193: Improve algorithm constraints implementation S8179998, CVE-2017-10198: Clear certificate chain connections S8180024: Improve construction of objects during deserialization S8180711, CVE-2017-10346: Better invokespecial checks S8181100, CVE-2017-10350: Better Base Exceptions S8181323, CVE-2017-10347: Better timezone processing S8181327, CVE-2017-10349: Better X processing S8181370, CVE-2017-10345: Better keystore handling S8181432, CVE-2017-10348: Better processing of unresolved permissions S8181597, CVE-2017-10357: Process Proxy presentation S8181612, CVE-2017-10355: More stable connection processing S8181692, CVE-2017-10356: Update storage implementations S8183028, CVE-2016-10165: Improve CMS header processing S8184682, CVE-2016-9840, CVE-2016-9841, CVE-2016-9842, CVE-2016-9843: Upgrade compression library Import of OpenJDK 7 u161 build 0 S6475361: Attempting to remove help menu from java.awt.MenuBar throws NullPointerException S6637288: Add OCSP support to PKIX CertPathBuilder implementation S6854712: Revocation checking enhancements (JEP-124) S6904367: (coll) IdentityHashMap is resized before exceeding the expected maximum size S7015157: String “Tabular Navigation” should be rephrased for avoiding mistranslation S7115744: Do not call File::deleteOnExit in security tests S7126011: ReverseBuilder.getMatchingCACerts may throws NPE S7147336: clarification on warning of keytool -printcrl S7162687: enhance KDC server availability detection S7176627: CertPath/jep124/PreferCRL_SoftFail test fails (Could not determine revocation status) S7195409: CertPath/CertPathValidatorTest/KeyParamsInheritanceTest fails with NullPointerException S7196382: PKCS11 provider should support 2048-bit DH S7197672: There are issues with shared data on windows S7199939: DSA 576 and 640 bit keys fail when initializing for No precomputed parameters S8002074: Support for AES on SPARC S8005408: KeyStore API enhancements S8006863: javadoc cleanup for 8005408 S8006946: PKCS12 test failure due to incorrect alias name S8006951: Avoid storing duplicate PKCS12 attributes S8006994: Cleanup PKCS12 tests to ensure streams get closed S8007483: attributes are ignored when loading keys from a PKCS12 keystore S8007967: Infinite loop can happen in sun.security.provider.certpath.SunCertPathBuilder.depthFirstSearchForward() S8010112: NullPointerException in sun.security.provider.certpath.CertId() S8012900: CICO ignores AAD in GCM mode (with refactoring from 6996769) S8015571: OCSP validation fails if ocsp.responderCertSubjectName is set S8016252: More defensive HashSet.readObject S8025215: jdk8 l10n resource file translation update 4 S8026943: SQE test jce/Global/Cipher/SameBuffer failed S8027575: b113 causing a lot of memory allocation and regression for wls_webapp_atomics S8029659: Keytool, print key algorithm of certificate or key entry S8029788: Certificate validation – java.lang.ClassCastException S8031825: OCSP client can’t find responder cert if it uses a different subject key id algorithm than responderID S8033117: PPC64: Adapt to 8002074: Support for AES on SPARC S8035623: [parfait] JNI exception pending in jdk/src/windows/native/sun/windows/awt_Font.cpp S8049312: AES/CICO test failed with on several modes S8050374: More Signature tests S8057810: New defaults for DSA keys in jarsigner and keytool S8062552: Support keystore type detection for JKS and PKCS12 keystores S8068427: Hashtable deserialization reconstitutes table with wrong capacity S8068881: SIGBUS in C2 compiled method weblogic.wsee.jaxws.framework.jaxrpc.EnvironmentFactory$SimulatedWsdlDefinitions. S8075484, PR3474, RH1490713: SocketInputStream.socketRead0 can hang even with soTimeout set S8077670: sun/security/krb5/auto/MaxRetries.java may fail with BindException S8079129: NullPointerException in PKCS#12 Keystore in PKCS12KeyStore.java S8087144: sun/security/krb5/auto/MaxRetries.java fails with Retry count is -1 less S8136534: Loading JKS keystore using non-null InputStream results in closed stream S8149411: PKCS12KeyStore cannot extract AES Secret Keys S8153146: sun/security/krb5/auto/MaxRetries.java failed with timeout S8157561: Ship the unlimited policy files in JDK Updates S8158517: Minor optimizations to ISO10126PADDING S8164846: CertificateException missing cause of underlying exception S8165751: NPE hit with java.security.debug=provider S8171319: keytool should print out warnings when reading or generating cert/cert req using weak algorithms S8173853: IllegalArgumentException in java.awt.image.ReplicateScaleFilter S8176536: Improved algorithm constraints checking S8177569: keytool should not warn if signature algorithm used in cacerts is weak S8178714: PKIX validator nameConstraints check failing after change 8175940 S8179423: 2 security tests started failing for JDK 1.6.0 u161 b05 S8179564: Missing @bug for tests added with JDK-8165367 S8181048: Refactor existing providers to refer to the same constants for default values for key length S8182879: Add warnings to keytool when using JKS and JCEKS S8184673, PR3476: Fix compatibility issue in AlgorithmChecker for 3rd party JCE providers S8184937: LCMS error 13: Couldn’t link the profiles S8185039: Incorrect GPL header causes RE script to miss swap to commercial header for licensee source bundle S8185040: Incorrect GPL header causes RE script to miss swap to commercial header for licensee source bundle S8185778: 8u151 L10n resource file update S8185845: Add SecurityTools.java test library S8186503: sun/security/tools/jarsigner/DefaultSigalg.java failed after backport to JDK 6/7/8 S8186533: 8u151 L10n resource file update md20 S8191137: keytool fails to format resource strings for keys for some languages after JDK-8171319 S8191840: Update localizations with positional arguments following JDK-8191137 S8191845: [TEST_BUG] Too many new-lines in backport of WeakAlg test Import of OpenJDK 7 u151 build 1 S8035640: JNU_CHECK_EXCEPTION should support c++ JNI syntax Backports S8138745, PR3465, RH1484399: Implement ExitOnOutOfMemory and CrashOnOutOfMemory in HotSpot S8185164, PR3433: GetOwnedMonitorInfo() returns incorrect owned monitor S8188030, PR3460, RH1484079: AWT java apps fail to start when some minimal fonts are present Bug fixes PR3470, RH1492139: Hotspot object_alloc tapset uses HeapWordSize incorrectly PR3480, RH1486025: ECC and NSS JVM crash AArch64 port S8145438, PR3443, RH1482244: Guarantee failures since 8144028: Use AArch64 bit-test instructions in C2 PR3497: AArch64: Adapt to 8002074: Support for AES on SPARC The tarballs can be downloaded from: http://icedtea.classpath.org/download/source/icedtea-2.6.12.tar.gz http://icedtea.classpath.org/download/source/icedtea-2.6.12.tar.xz We provide both gzip and xz tarballs, so that those who are able to make use of the smaller tarball produced by xz may do so. The tarballs are accompanied by digital signatures available at: http://icedtea.classpath.org/download/source/icedtea-2.6.12.tar.gz.sig http://icedtea.classpath.org/download/source/icedtea-2.6.12.tar.xz.sig These are produced using my public key. See details below. PGP Key: ed25519/0xCFDA0F9B35964222 (hkp://keys.gnupg.net) Fingerprint = 5132 579D D154 0ED2 3E04 C5A0 CFDA 0F9B 3596 4222 GnuPG >= 2.1 is required to be able to handle this key. SHA256 checksums: 90183fc86a001d8832ef5b9ba8617d11bde1c5f595d3da6493de7f4d7c35b68a icedtea-2.6.12.tar.gz 9f0c534914188c61b88662c4072bcf87c6dafac6aedef98f3752e30c1794c25d icedtea-2.6.12.tar.gz.sig f3de9f5ea1a447fe8a290cde5012d33b1534f0d3d484b2664a4be9202b801f68 icedtea-2.6.12.tar.xz d242e506c297925beb47c805da7ebdee2e66057d1403c666aa8d4bffa6ab7fc8 icedtea-2.6.12.tar.xz.sig The checksums can be downloaded from: http://icedtea.classpath.org/download/source/icedtea-2.6.12.sha256 A 2.6.12 ebuild for Gentoo is available. The following people helped with these releases: Martin Balao (PR3480/RH1486025 ECC+NSS crash fix) Severin Gehwolf (PR3470/RH1492139 SystemTap fix) Andrew Hughes (all other backports & bug fixes, release management) Mario Torre (PR3459/S8188030/RH1484079 font fix) We would also like to thank the bug reporters and testers! To get started: $ tar xzf icedtea-2.6.12.tar.gz or: $ tar x -I xz -f icedtea-2.6.12.tar.xz then: $ mkdir icedtea-build $ cd icedtea-build $ ../icedtea-2.6.12/configure $ make Full build requirements and instructions are available in the INSTALL file. Happy hacking! [Less]
Posted about 8 years ago
We are pleased to announce the release of IcedTea 3.6.0! The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools, along with additional features such as the ability to build against system ... [More] libraries and support for alternative virtual machines and architectures beyond those supported by OpenJDK. This release updates our OpenJDK 8 support with the October 2017 security fixes from OpenJDK 8 u151. If you find an issue with the release, please report it to our bug database under the appropriate component. Development discussion takes place on the distro-pkg-dev OpenJDK mailing list and patches are always welcome. Full details of the release can be found below. What’s New? New in release 3.6.0 (2017-10-31) Security fixes S8165543: Better window framing S8169026, CVE-2017-10274: Handle smartcard clean up better S8169966: Larger AWT menus S8170218: Improved Font Metrics S8171252: Improve exception checking S8171261: Stability fixes for lcms S8174109, CVE-2017-10281: Better queuing priorities S8174966, CVE-2017-10285: Unreferenced references S8175940: More certificate subject checking S8176751, CVE-2017-10295: Better URL connections S8178794, CVE-2017-10388: Correct Kerberos ticket grants S8180024: Improve construction of objects during deserialization S8180711, CVE-2017-10346: Better invokespecial checks S8181100, CVE-2017-10350: Better Base Exceptions S8181323, CVE-2017-10347: Better timezone processing S8181327, CVE-2017-10349: Better X processing S8181370, CVE-2017-10345: Better keystore handling S8181432, CVE-2017-10348: Better processing of unresolved permissions S8181597, CVE-2017-10357: Process Proxy presentation S8181612, CVE-2017-10355: More stable connection processing S8181692, CVE-2017-10356: Update storage implementations S8183028, CVE-2016-10165: Improve CMS header processing S8184682, CVE-2016-9840, CVE-2016-9841, CVE-2016-9842, CVE-2016-9843: Upgrade compression library New features PR3469: Alternative path to tzdb.dat PR3483: Separate addition of nss.cfg and tz.properties into separate targets PR3484: Move SystemTap support to its own target PR3485: Support additional targets for the bootstrap build Import of OpenJDK 8 u151 build 12 S8029659: Keytool, print key algorithm of certificate or key entry S8057810: New defaults for DSA keys in jarsigner and keytool S8075484, PR3473, RH1490713: SocketInputStream.socketRead0 can hang even with soTimeout set S8077670: sun/security/krb5/auto/MaxRetries.java may fail with BindException S8087144: sun/security/krb5/auto/MaxRetries.java fails with Retry count is -1 less S8153146: sun/security/krb5/auto/MaxRetries.java failed with timeout S8157561: Ship the unlimited policy files in JDK Updates S8158517: Minor optimizations to ISO10126PADDING S8171319: keytool should print out warnings when reading or generating cert/cert req using weak algorithms S8177569: keytool should not warn if signature algorithm used in cacerts is weak S8177837: need to upgrade install tools S8178714: PKIX validator nameConstraints check failing after change 8175940 S8179423: 2 security tests started failing for JDK 1.6.0 u161 b05 S8179564: Missing @bug for tests added with JDK-8165367 S8181048: Refactor existing providers to refer to the same constants for default values for key length S8182879: Add warnings to keytool when using JKS and JCEKS S8184937: LCMS error 13: Couldn’t link the profiles S8185039: Incorrect GPL header causes RE script to miss swap to commercial header for licensee source bundle S8185040: Incorrect GPL header causes RE script to miss swap to commercial header for licensee source bundle S8185778: 8u151 L10n resource file update S8185845: Add SecurityTools.java test library S8186503: sun/security/tools/jarsigner/DefaultSigalg.java failed after backport to JDK 6/7/8 S8186533: 8u151 L10n resource file update md20 S8186674: Remove JDK-8174109 from CPU Aug 21 week builds Backports S8035496, PR3487: G1 ARM: missing remset entry noticed by VerifyAfterGC for vm/gc/concurrent/lp50yp10rp70mr30st0 S8146086, PR3439, RH1478402: Publishing two webservices on same port fails with “java.net.BindException: Address already in use” S8184673, PR3475, RH1487266: Fix compatibility issue in AlgorithmChecker for 3rd party JCE providers S8185164, PR3438: GetOwnedMonitorInfo() returns incorrect owned monitor S8187822, PR3478, RH1494230: C2 conditonal move optimization might create broken graph Bug fixes PR3479, RH1486025: ECC and NSS JVM crash PR3486: Path to jvm.cfg is wrong in add-systemtap-boot S8165852, PR3468: (fs) Mount point not found for a file which is present in overlayfs S8188030, PR3459, RH1484079: AWT java apps fail to start when some minimal fonts are present PPC port S8145913, PR3466, RH1498309: PPC64: add Montgomery multiply intrinsic S8168318, PR3466, RH1498320: PPC64: Use cmpldi instead of li/cmpld S8170328, PR3466, RH1498321: PPC64: Use andis instead of lis/and S8181810, PR3466, RH1498319: PPC64: Leverage extrdi for bitfield extract AArch64 port S8161190, PR3488: AArch64: Fix overflow in immediate cmp instruction S8187224, PR3488: aarch64: some inconsistency between aarch64_ad.m4 and aarch64.ad SystemTap PR3467, RH1492139: Hotspot object_alloc tapset uses HeapWordSize incorrectly Shenandoah Add missing UseShenandoahGC checks to C2 [backport] Add JVMTI notifications to Shenandoah GC pauses. [backport] After Evac verification should run consistently [backport] All definitions should start with Shenandoah* [backport] Allocation latency tracing [backport] Allow allocations in pinned regions [backport] Assorted monitoring support fixes [backport] Avoid Full STW GC on System.gc() + related fixes [backport] BrooksPointer tracing overwhelms -Xlog:gc=trace [backport] Cannot do more than 1000 Full GCs [backport] Cap heap size for TestRegionSizeArgs test [backport] Cleanup “dirty” mentions [backport] Cleanup unused methods and statements + Trivial cleanup: removed unused field, etc. [backport] Common pause marker to capture everything before/after pause [backport] Consistent print_on and tty handling [backport] “continuous” heuristics [backport] Disable biased locking by default [backport] Fix build error: avoid loops with empty bodies [backport] Fix build error: switches over enums should take all enums [backport] Fix build error: verifier liveness should not be implicitly casted to size_t [backport] Fixed assertion failures when printing heap region to trace output [backport] Fixed C calling convention of shenandoah_wb() on Windows [backport] LotsOfCycles test always degrades to Full GC [backport] Made ShenandoahPrinter debug only [backport] Make sure different Verifier levels work [backport] Make sure we have at least one memory pool per memory manager (JMX) + JMX double-counts heap used size [backport] Mark heuristics diagnostic/experimental [backport] Move Verifier “start” message under (gc,start) [backport] On-demand commit as heap resizing strategy [backport] Periodic GC [backport] PhiNode::has_only_data_users() needs to apply to shenandoah barrier only [backport] Pinning humongous regions should be allowed [backport] Reclaimed humongous regions should count towards immediate garbage [backport] Refactor region flags into finite state machine [backport] Refactor ShConcThread dispatch [backport] Refactor ShenandoahFreeSet + Fast-forward over humongous regions to keep “current” non-humongous [backport] Refactor ShenandoahHeapLock [backport] Refactor ShenandoahHeapRegionSet [backport] Region (byte|word) shifts as the replacement for divisions [backport] Rehash -XX:-UseTLAB in tests + Rehash allocation tests [backport] Rename inline guards [backport] Selectable humongous threshold + Humongous top() should be correct for iteration [backport] Shortcut concurrent cycle when enough immediate garbage is reclaimed [backport] Templatize and improve inlining of arraycopy and clone barriers. [backport] TestRegionSampling test [backport] TestSmallHeap test for Shenandoah [backport] Uncommit heap regions after given delay [backport] Underflow in adaptive free_threshold calculation [backport] Unlock more GC-specific tests for Shenandoah [backport] Update counters on slow-path more rarely [backport] Verifier should avoid pushing on stack when walking objects past TAMS [backport] Verifier should walk cset and humongous regions [backport] Verify humongous regions liveness [backport] Verify liveness data Correct way to fix Windows call convention issue Fix build error in release config. Fixed Fixed message logging Handle Java heap initialization and expansion failures Make sure -verbose:gc, PrintGC, PrintGCDetails work consistently Missing barriers on constant oops + acmp rework + cas fix + write barrier on constant oop fix Missing UseShenandoahGC check in LibraryCallKit::inline_multiplyToLen() Missing UseShenandoahGC check to C2 OOME in SurrogateLockerThread deadlocks the GC cycle Properly unlock ShenandoahVerify Remove unused memory_for, fixing the build Remove useless code following acmp rework Revert accidental G1 closure rename Test bug: test library and flags in TestHeapAlloc UnlockDiagnosticVMOptions flag is needed for ShenandoahVerify Write barrier pin and expand cleanup The tarballs can be downloaded from: http://icedtea.classpath.org/download/source/icedtea-3.6.0.tar.gz http://icedtea.classpath.org/download/source/icedtea-3.6.0.tar.xz We provide both gzip and xz tarballs, so that those who are able to make use of the smaller tarball produced by xz may do so. The tarballs are accompanied by digital signatures available at: http://icedtea.classpath.org/download/source/icedtea-3.6.0.tar.gz.sig http://icedtea.classpath.org/download/source/icedtea-3.6.0.tar.xz.sig These are produced using my public key. See details below. PGP Key: ed25519/0xCFDA0F9B35964222 (hkp://keys.gnupg.net) Fingerprint = 5132 579D D154 0ED2 3E04 C5A0 CFDA 0F9B 3596 4222 GnuPG >= 2.1 is required to be able to handle this key. SHA256 checksums: 74a43c4e027c72bb1c324f8f73af21565404326c9998f534f234ec2a36ca1cdb icedtea-3.6.0.tar.gz 6050c8e69974a33641b764afdbd91f07725336abd20e7f260e2a0dbf562f8b32 icedtea-3.6.0.tar.gz.sig d0a0a9ce58b3ed29f2deecef8b78f28a79315f4a6330ee833410f79cbf48417e icedtea-3.6.0.tar.xz 2de4119e3e59cf7acbb1f9c93a5760397c846116067d3c45504bd3ff6297f9a8 icedtea-3.6.0.tar.xz.sig The checksums can be downloaded from: http://icedtea.classpath.org/download/source/icedtea-3.6.0.sha256 A 3.6.0 ebuild for Gentoo is available. The following people helped with these releases: Martin Balao (PR3479/RH1486025) Severin Gehwolf (PR3467/RH1492139) Andrew Hughes (all other bug fixes and backports, release management) Fridrich Strba (PR3468/S8165852, PR3469) Mario Torre (PR3459/S8188030/RH1484079) Felix Yang (PR3488/S8187224) Yang Zhang (PR3488/S8161190) We would also like to thank the bug reporters and testers! To get started: $ tar xzf icedtea-3.6.0.tar.gz or: $ tar x -I xz -f icedtea-3.6.0.tar.xz then: $ mkdir icedtea-build $ cd icedtea-build $ ../icedtea-3.6.0/configure $ make Full build requirements and instructions are available in the INSTALL file. Happy hacking! [Less]
Posted about 8 years ago
I attended the 5th Chrome Dev Summit this week. The talks were all recorded and are available via the schedule (the keynote and leadership panel on day 1 are perhaps of broadest interest and highest bang-for-buck viewing value). It was a high ... [More] quality, well-produced event with an intimate feel – I was very surprised when Robert Nyman told me it was over 700 people! I appreciated the good vegetarian food options and noticed and was very impressed by the much-better-than-typical-tech-conferences gender representation and code of conduct visibility. It doesn’t always look this way from the outside, but the various browser engine teams are more often than not working toward the same goals and in constant contact. For those who don’t know that, it was nice to see the shoutouts for other browsers and the use of Firefox’s new logo! The focus of the event IMO was, as expected, the mobile Web. While the audience was Web developers, it was interesting to see what the Chrome team is focusing on. Some of the efforts felt like Firefox OS 4 years ago but I guess FxOS was just ahead of its time From my perspective, Firefox is in pretty good shape for supporting the things Chrome was promoting (Service Workers, Custom Elements and Shadow DOM, wasm, performance-related tooling, etc.). There are of course areas we can improve: further work on Fennec support for add-to-homescreen, devtools, and seeing a few things through to release (e.g. JS modules, Custom Elements, and Shadow DOM – work is underway and we’re hoping for soon!). Oh, and one notable exception to being aligned on things is the Network Information API that the Mozilla community isn’t super fond. Other highlights for me personally included the Chrome User Experience Report (“a public dataset of key user experience metrics for popular origins on the web, as experienced by Chrome users under real-world conditions”) and the discussion about improving the developer experience for Web Workers. It was great putting faces to names and enjoying sunny San Francisco (no, seriously, it was super sunny and hot). Thanks for the great show, Google! [Less]
Posted about 8 years ago
I did an interview with the Software Freedom Conservancy to discuss why I try to contribute to the Conservancy whenever I can. Because I believe many more free software communities deserve to have a home for their project at the Conservancy. Please ... [More] support the Software Freedom Conservancy by donating so they will be able to provide a home to many more communities. A donation of 10 US dollars a month will make you an official sponsor. Or donate directly to one of their many member projects. Software Freedom Conservancy Member Projects [Less]
Posted about 8 years ago
I did an interview with the Software Freedom Conservancy to discuss why I try to contribute to the Conservancy whenever I can. Because I believe many more free software communities deserve to have a home for their project at the Conservancy. Please ... [More] support the Software Freedom Conservancy by donating so they will be able to provide a home to many more communities. A donation of 10 US dollars a month will make you an official sponsor. Or donate directly to one of their many member projects. Software Freedom Conservancy Member Projects [Less]
Posted about 8 years ago
It’s been a long road, but at last the puzzle is complete: Today we delivered Project Jigsaw for general use, as part of JDK 9. Jigsaw enhances Java to support programming in the large by adding a module system to the Java SE Platform and to its ... [More] reference implementation, the JDK. You can now leverage the key advantages of that system, namely strong encapsulation and reliable configuration, to climb out of JAR hell and better structure your code for reusability and long-term evolution. Jigsaw also applies the module system to the Platform itself, and to the massive, monolithic JDK, to improve security, integrity, performance, and scalability. The last of these goals was originally intended to reduce download times and scale Java SE down to small devices, but it is today just as relevant to dense deployments in the cloud. The Java SE 9 API is divided into twenty-six standard modules; JDK 9 contains dozens more for the usual development and serviceability tools, service providers, and JDK-specific APIs. As a result you can now deliver a Java application together with a slimmed-down Java run-time system that contains just the modules that your application requires. We made all these changes with a keen eye — as always — toward compatibility. The Java SE Platform and the JDK are now modular, but that doesn’t mean that you must convert your own code into modules in order to run on JDK 9 or a slimmed-down version of it. Existing class-path applications that use only standard Java SE 8 APIs will, for the most part, work without change. Existing libraries and frameworks that depend upon internal implementation details of the JDK may require change, and they may cause warnings to be issued at run time until their maintainers fix them. Some popular libraries, frameworks, and tools — including Maven, Gradle, and Ant — were in this category but have already been fixed, so be sure to upgrade to the latest versions. Looking ahead It’s been a long road to deliver Jigsaw, and I expect it will be a long road to its wide adoption — and that’s perfectly fine. Many developers will make use of the newly-modular nature of the platform long before they use the module system in their own code, and it will be easier to use the module system for new code rather than existing code. Modularizing an existing software system can, in fact, be difficult. Sometimes it won’t be worth the effort. Jigsaw does, however, ease that effort by supporting both top-down and bottom-up migration to modules. You can thus begin to modularize your own applications long before their dependencies are modularized by their maintainers. If you maintain a library or framework then we encourage you to publish a modularized version of it as soon as possible, though not until all of its dependencies have been modularized. Modularizing the Java SE Platform and the JDK was extremely difficult, but I’m confident it will prove to have been worth the effort: It lays a strong foundation for the future of Java. The modular nature of the platform makes it possible to remove obsolete modules and to deliver new yet non-final APIs in incubator modules for early testing. The improved integrity of the platform, enabled by the strong encapsulation of internal APIs, makes it easier to move Java forward faster by ensuring that libraries, frameworks, and applications do not depend upon rapidly-changing internal implementation details. Learning more There are by now plenty of ways to learn about Jigsaw, from those of us who created it as well as those who helped out along the way. If your time is limited, consider one or more of the following: The State of the Module System is a concise, informal written overview of the module system. (It’s slightly out of date; I’ll update it soon.) Make Way for Modules!, my keynote presentation at Devoxx Belgium 2015, packs a lot of high-level information into thirty minutes. I followed that up a year later with a quick live demo of Jigsaw’s key features. Alex Buckley’s Modular Development with JDK 9, from Devoxx US 2017, covers the essentials in more depth, in just under an hour. If you really want to dive in: To get your hands dirty right away, download JDK 9 and then follow the examples in Alan Bateman’s Quick-Start Guide. If you use an IDE then you’ll need to upgrade to the latest version in order to compile and package modules. The Project Jigsaw page in the OpenJDK Community is the authoritative source for all things Jigsaw. It includes links to the six Jigsaw JEPs (JDK Enhancement Proposals), to the JSR for the module system, to the Java SE 9 versions of the key platform specifications, and to recordings of many other conference presentations. Java 9 Modularity, by Sander Mak and Paul Bakker, is a comprehensive and pragmatic guide to both the module system and the modular JDK. Java Application Architecture, by Kirk Knoernschild, predates Jigsaw but offers a clear set of principles for constructing modular software systems. Comments, questions, and suggestions are welcome on the jigsaw-dev mailing list. (If you haven’t already subscribed to that list then please do so first, otherwise your message will be discarded as spam.) Thanks! Project Jigsaw was an extended, exhilarating, and sometimes exhausting nine-year effort. I was incredibly fortunate to work with an amazing core team from pretty much the very beginning: Alan Bateman, Alex Buckley, Mandy Chung, Jonathan Gibbons, and Karen Kinnear. To all of you: My deepest thanks. Key contributions later on came from Sundar Athijegannathan, Chris Hegarty, Lois Foltan, Magnus Ihse Bursie, Erik Joelsson, Jim Laskey, Jan Lahoda, Claes Redestad, Paul Sandoz, and Harold Seigel. Jigsaw benefited immensely from critical comments and suggestions from many others including Jayaprakash Artanareeswaran, Paul Bakker, Martin Buchholz, Stephen Colebourne, Andrew Dinn, Christoph Engelbert, Rémi Forax, Brian Fox, Trisha Gee, Brian Goetz, Mike Hearn, Stephan Herrmann, Juergen Hoeller, Peter Levart, Sander Mak, Gunnar Morling, Simon Nash, Nicolai Parlog, Michael Rasmussen, John Rose, Uwe Schindler, Robert Scholte, Bill Shannon, Aleksey Shipilëv, Jochen Theodorou, Weijun Wang, Tom Watson, and Rafael Winterhalter. To everyone who contributed, in ways large and small: Thank you! Thanks to Alan Bateman and Alex Buckley for comments on drafts of this entry. [Less]
Posted about 8 years ago
It’s been a long road, but at last the puzzle is complete: Today we delivered Project Jigsaw for general use, as part of JDK 9. Jigsaw enhances Java to support programming in the large by adding a module system to the Java SE Platform and to its ... [More] reference implementation, the JDK. You can now leverage the key advantages of that system, namely strong encapsulation and reliable configuration, to climb out of JAR hell and better structure your code for reusability and long-term evolution. Jigsaw also applies the module system to the Platform itself, and to the massive, monolithic JDK, to improve security, integrity, performance, and scalability. The last of these goals was originally intended to reduce download times and scale Java SE down to small devices, but it is today just as relevant to dense deployments in the cloud. The Java SE 9 API is divided into twenty-six standard modules; JDK 9 contains dozens more for the usual development and serviceability tools, service providers, and JDK-specific APIs. As a result you can now deliver a Java application together with a slimmed-down Java run-time system that contains just the modules that your application requires. We made all these changes with a keen eye — as always — toward compatibility. The Java SE Platform and the JDK are now modular, but that doesn’t mean that you must convert your own code into modules in order to run on JDK 9 or a slimmed-down version of it. Existing class-path applications that use only standard Java SE 8 APIs will, for the most part, work without change. Existing libraries and frameworks that depend upon internal implementation details of the JDK may require change, and they may cause warnings to be issued at run time until their maintainers fix them. Some popular libraries, frameworks, and tools — including Maven, Gradle, and Ant — were in this category but have already been fixed, so be sure to upgrade to the latest versions. Looking ahead It’s been a long road to deliver Jigsaw, and I expect it will be a long road to its wide adoption — and that’s perfectly fine. Many developers will make use of the newly-modular nature of the platform long before they use the module system in their own code, and it will be easier to use the module system for new code rather than existing code. Modularizing an existing software system can, in fact, be difficult. Sometimes it won’t be worth the effort. Jigsaw does, however, ease that effort by supporting both top-down and bottom-up migration to modules. You can thus begin to modularize your own applications long before their dependencies are modularized by their maintainers. If you maintain a library or framework then we encourage you to publish a modularized version of it as soon as possible, though not until all of its dependencies have been modularized. Modularizing the Java SE Platform and the JDK was extremely difficult, but I’m confident it will prove to have been worth the effort: It lays a strong foundation for the future of Java. The modular nature of the platform makes it possible to remove obsolete modules and to deliver new yet non-final APIs in incubator modules for early testing. The improved integrity of the platform, enabled by the strong encapsulation of internal APIs, makes it easier to move Java forward faster by ensuring that libraries, frameworks, and applications do not depend upon rapidly-changing internal implementation details. Learning more There are by now plenty of ways to learn about Jigsaw, from those of us who created it as well as those who helped out along the way. If your time is limited, consider one or more of the following: The State of the Module System is a concise, informal written overview of the module system. (It’s slightly out of date; I’ll update it soon.) Make Way for Modules!, my keynote presentation at Devoxx Belgium 2015, packs a lot of high-level information into thirty minutes. I followed that up a year later with a quick live demo of Jigsaw’s key features. Alex Buckley’s Modular Development with JDK 9, from Devoxx US 2017, covers the essentials in more depth, in just under an hour. If you really want to dive in: To get your hands dirty right away, download JDK 9 and then follow the examples in Alan Bateman’s Quick-Start Guide. If you use an IDE then you’ll need to upgrade to the latest version in order to compile and package modules. The Project Jigsaw page in the OpenJDK Community is the authoritative source for all things Jigsaw. It includes links to the six Jigsaw JEPs (JDK Enhancement Proposals), to the JSR for the module system, to the Java SE 9 versions of the key platform specifications, and to recordings of many other conference presentations. Java 9 Modularity, by Sander Mak and Paul Bakker, is a comprehensive and pragmatic guide to both the module system and the modular JDK. Java Application Architecture, by Kirk Knoernschild, predates Jigsaw but offers a clear set of principles for constructing modular software systems. Comments, questions, and suggestions are welcome on the jigsaw-dev mailing list. (If you haven’t already subscribed to that list then please do so first, otherwise your message will be discarded as spam.) Thanks! Project Jigsaw was an extended, exhilarating, and sometimes exhausting nine-year effort. I was incredibly fortunate to work with an amazing core team from pretty much the very beginning: Alan Bateman, Alex Buckley, Mandy Chung, Jonathan Gibbons, and Karen Kinnear. To all of you: My deepest thanks. Key contributions later on came from Sundar Athijegannathan, Chris Hegarty, Lois Foltan, Magnus Ihse Bursie, Erik Joelsson, Jim Laskey, Jan Lahoda, Paul Sandoz, and Harold Seigel. Jigsaw benefited immensely from critical comments and suggestions from many others including Jayaprakash Artanareeswaran, Paul Bakker, Martin Buchholz, Stephen Colebourne, Andrew Dinn, Christoph Engelbert, Rémi Forax, Brian Fox, Trisha Gee, Brian Goetz, Mike Hearn, Stephan Herrmann, Juergen Hoeller, Peter Levart, Sander Mak, Gunnar Morling, Simon Nash, Nicolai Parlog, Michael Rasmussen, John Rose, Uwe Schindler, Robert Scholte, Bill Shannon, Aleksey Shipilëv, Jochen Theodorou, Weijun Wang, Tom Watson, and Rafael Winterhalter. To everyone who contributed, in ways large and small: Thank you! Thanks to Alan Bateman and Alex Buckley for comments on drafts of this entry. [Less]
Posted over 8 years ago
The Talos II is now available for pre-order. It is the more affordable, more power-efficient successor to the Talos I machine I wrote about in a previous post. This is a very affordable machine for how powerful it will be, and there are minimal ... [More] mainboard + CPU + RAM bundles (e.g., this one), around which one can build a workstation with more readily-available parts. I’ve placed an order for one of the bundles, and will buy the chassis and GPU separately (mainly to avoid high cross-border shipping fees for the full workstation). The Talos II is an important machine for Free Software, and will likely be RYF-certified by the FSF. Pre-orders end September 15th! [Less]
Posted over 8 years ago
For over twenty years the Java SE Platform and the JDK have evolved in large, irregular, and somewhat unpredictable steps. Each feature release has been driven by one or a few significant features, and so the schedule of each release has been ... [More] adjusted as needed — sometimes more than once! — in order to accommodate the development of those features. This approach made it possible to deliver big new features at a high level of quality, after thorough review and testing by early adopters. The downside, however, was that smaller API, language, and JVM features could only be delivered when the big features were ready. This was an acceptable tradeoff in the decades before and after the turn of the century, when Java competed with just a few platforms which evolved at a similar stately pace. Nowadays, however, Java competes with many platforms which evolve at a more rapid pace. For Java to remain competitive it must not just continue to move forward — it must move forward faster. Back on the train Five years ago I mused in this space on the tension between developers, who prefer rapid innovation, and enterprises, which prefer stability, and the fact that everyone prefers regular and predictable releases. To address these differing desires I suggested, back then, that we switch from the historical feature-driven release model to a time-driven “train” model, with a feature release every two years. In this type of model the development process is a continuous pipeline of innovation that’s only loosely coupled to the actual release process, which itself has a constant cadence. Any particular feature, large or small, is merged only when it’s nearly finished. If a feature misses the current train then that’s unfortunate but it’s not the end of the world, since the next train will already be waiting and will also leave on schedule. The two-year train model was appealing in theory, but proved unworkable in practice. We took an additional eight months for Java 8 in order to address critical security issues and finish Project Lambda, which was preferable to delaying Lambda by two years. We initially planned Java 9 as a two-and-a-half year release in order to include Project Jigsaw, which was preferable to delaying Jigsaw by an additional eighteen months, yet in the end we wound up taking an additional year and so Java 9 will ship this month, three and a half years after Java 8. A two-year release cadence is, in retrospect, simply too slow. To achieve a constant cadence we must ship feature releases at a more rapid rate. Deferring a feature from one release to the next should be a tactical decision with minor inconveniences rather than a strategic decision with major consequences. So, let’s ship a feature release every six months. That’s fast enough to minimize the pain of waiting for the next train, yet slow enough that we can still deliver each release at a high level of quality. Proposal Taking inspiration from the release models used by other platforms and by various operating-system distributions, I propose that after Java 9 we adopt a strict, time-based model with a new feature release every six months, update releases every quarter, and a long-term support release every three years. Feature releases can contain any type of feature, including not just new and improved APIs but also language and JVM features. New features will be merged only when they’re nearly finished, so that the release currently in development is feature-complete at all times. Feature releases will ship in March and September of each year, starting in March of 2018. Update releases will be strictly limited to fixes of security issues, regressions, and bugs in newer features. Each feature release will receive two updates before the next feature release. Update releases will ship quarterly in January, April, July, and October, as they do today. Every three years, starting in September of 2018, the feature release will be a long-term support release. Updates for these releases will be available for at least three years and quite possibly longer, depending upon your vendor. In this model the overall rate of change should be about the same as it is today; what’s different is that there will be many more opportunities to deliver innovation. The six-month feature releases will be smaller than the multi-year feature releases of the past, and therefore easier to adopt. Six-month feature releases will also reduce the pressure to backport new features to older releases, since the next feature release will never be more than six months away. Developers who prefer rapid innovation, so that they can leverage new features in production as soon as possible, can use the most recent feature release or an update release thereof and move on to the next one when it ships. They can deliver an application in a Docker image, or other type of container package, along with the exact Java release on which the application will run. Since the application and the Java release can always be tested together, in a modern continuous-integration and continuous-deployment pipeline, it will be straightforward to move from one Java release to the next. Enterprises that prefer stability, so that they can run multiple large applications on a single shared Java release, can instead use the current long-term support release. They can plan ahead to migrate from one long-term support release to the next, like clockwork, every three years. To make it clear that these are time-based releases, and to make it easy to figure out the release date of any particular release, the version strings of feature releases will be of the form $YEAR.$MONTH. Thus next year’s March release will be 18.3, and the September long-term support release will be 18.9. Implications This proposal will, if adopted, require major changes in how contributors in the OpenJDK Community produce the JDK itself; I’ve posted some initial thoughts as to how we might proceed there. It will be made easier if we can reduce the overhead of the Java Community Process, which governs the evolution of the Java SE Platform; my colleagues Brian Goetz and Georges Saab have already raised this topic with the JCP Executive Committee. This proposal will, ultimately, affect every developer, user, and enterprise that relies upon Java. It will, if successful, help Java remain competitive — while maintaining its core values of compatibility, reliability, and thoughtful evolution — for many years to come. Comments and questions are welcome, either on the OpenJDK general discussion list (please subscribe to that list in order to post to it) or on Twitter, with the hashtag #javatrain. [Less]
Posted over 8 years ago
An update on my notes to compile NetBSD kernels and userland.Build / update the tools:-U : for unprivilged building-u : to update-m : to specify architecture./build.sh -U -u tools To cross compile, this is would enough:./build.sh -U -m i386 -u ... [More] toolsHowever, since I do want to build on the same computer and the build script would be confused, we add -T /usr/tools-${HOST_ARCH}-${TARGET_ARCH} and also separate the object dir with -O!./build.sh -U -m i386 -u -O /usr/obj-amd64-i386 -T /usr/tools-amd64-i386 toolsThen we build the kernel./build.sh -U kernel=CONFNAMEor for cross compilation:./build.sh -U -O /usr/obj-amd64-i386 -T /usr/tools-amd64-i386 -m i386 -u kernel=GENERICThe modules:./build.sh -U -u modules installmodules=/Now to build userland, including X11. I did not attempt to cross-build userland yet../build.sh -U -x -u distribution./build.sh -U -x -u distribution install=/ [Less]