Java 8.1

A collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element.As implied by its name, this interface models the mathematical set abstraction. Since we started teaching Java in 1996, the textbook for the course has been various versions of a free on-line Java textbook that I wrote for the course. The most recent version is Introduction to Programming Using Java, Version 8.1.3.

Java™ SE Development Kit 8, Update 181 (JDK 8u181)

July 17, 2018

The full version string for this update release is 1.8.0_181-b13 (where 'b' means 'build'). The version number is 8u181.

IANA Data 2018e

JDK 8u181 contains IANA time zone data version 2018e. For more information, refer to Timezone Data Versions in the JRE Software.

Security Baselines

The security baselines for the Java Runtime Environment (JRE) at the time of the release of JDK 8u181 are specified in the following table:

JRE Family VersionJRE Security Baseline (Full Version String)
81.8.0_181-b13
71.7.0_191-b08
61.6.0_201-b07

JRE Expiration Date

The JRE expires whenever a new release with security vulnerability fixes becomes available. Critical patch updates, which contain security vulnerability fixes, are announced one year in advance on Critical Patch Updates, Security Alerts and Bulletins. This JRE (version 8u181) will expire with the release of the next critical patch update scheduled for October 16, 2018.

Java 8.1.2

For systems unable to reach the Oracle Servers, a secondary mechanism expires this JRE (version 8u181) on November 16, 2018. After either condition is met (new release becoming available or expiration date reached), the JRE will provide additional warnings and reminders to users to update to the newer version. For more information, see JRE Expiration Date.

Removed Features and Options

other-libs/javadb

Removal of Java DB

8.1Java 8.121

Java DB, also known as Apache Derby, has been removed in this release.

We recommend that you obtain the latest Apache Derby directly from the Apache project at:

JDK-8197871 (not public)

Changes

core-libs/javax.naming

Improve LDAP support

Download

Endpoint identification has been enabled on LDAPS connections.

To improve the robustness of LDAPS (secure LDAP over TLS) connections, endpoint identification algorithms have been enabled by default.

Note that there may be situations where some applications that were previously able to successfully connect to an LDAPS server may no longer be able to do so. Such applications may, if they deem appropriate, disable endpoint identification using a new system property: com.sun.jndi.ldap.object.disableEndpointIdentification.

Define this system property (or set it to true) to disable endpoint identification algorithms.

JDK-8200666 (not public)

core-libs/java.io:serialization

Better stack walking

New access checks have been added during the object creation phase of deserialization. This should not affect ordinary uses of deserialization. However, reflective frameworks that make use of JDK-internal APIs may be impacted. The new checks can be disabled if necessary by setting the system property jdk.disableSerialConstructorChecks to the value 'true'. This must be done by adding the argument -Djdk.disableSerialConstructorChecks=true to the Java command line.

JDK-8197925 (not public)

Bug Fixes

The following are some of the notable bug fixes included in this release:

core-svc/debugger

Unable to use the JDWP API in JDK 8 to debug JDK >=9

Java 8.11

The implementation of VirtualMachineImpl.canGetInstanceInfo() has been corrected, so it is now able to see JDK JVMs >= JDK 9.

This correction allows certain debugger agents to operate correctly without any action required from a user (developer).

See JDK-8197943

hotspot/gc

JVM Crash during G1 GC

A klass that has been considered unreachable by the concurrent marking of G1, can be looked up in the ClassLoaderData/SystemDictionary, and its _java_mirror or _class_loader fields can be stored in a root or any other reachable object making it alive again. Whenever a klass is resurrected in this manner, the SATB part of G1 needs to be notified about this, otherwise, the concurrent marking remark phase will erroneously unload that klass.

In this particular crash, while G1 was doing concurrent marking and had prepared its list of unreachable classes, JVMTI on a Java thread could traverse classes in the CLD and store thread-local JNIHandles for the java_mirror of the loaded classes. G1 did not have knowledge of these thread-local JNIHandles, and in the remark phase, it unloaded the classes per its prior knowledge of unreachable classes. When these JNIHandles were later scanned, it lead to a crash.

This fix for JDK-8187577 informs G1's SATB that a klass has been resurrected and it should not be unloaded.

See JDK-8187577

hotspot/gc

Better stability with older NUMA libraries (-XX+UseNuma)

Java 8.1 Free Download

A fix included in JDK 8 Update 152 introduced a regression that might cause the HotSpot JVM to crash during startup when the UseNUMA flag is used on Linux systems with versions of libnuma older than 2.0.9. This issue has been resolved.

8.121

See JDK-8198794

This release also contains fixes for security vulnerabilities described in the Oracle Critical Patch Update. For a more complete list of the bug fixes included in this release, see the JDK 8u181 Bug Fixes page.

Scheduled for Fall 2021

CPSC 124: Introductory Programming (See the tentative syllabus and course web page.)

Free Online Textbook: Introduction to Programming Using Java

CPSC 424: Introduction to Computer Graphics (See the tentative syllabus and course web page.)

Free Online Textbook: Introduction to Computer Graphics

Note: I will not teach in Spring 2022.
I will be back for one more semester in Fall 2022
and will retire at the end of December 2022.

Previous Courses:

Java 8.1.2

Here is a list of courses I have taught,including syllabi from many past terms.

And here is a complete listof all the Honors projects and Independent Studies
that I have supervised over my years at Hobart and William Smith Colleges.

The first programming course at Hobart and William Smith Collegescovers the Java programming language. Since we started teaching Javain 1996, the textbook for the course has been various versionsof a free on-line Java textbook that I wrote for the course.The most recent version is Introduction to Programming Using Java, Version 8.1.3.It requires Java 8 or higher and JavaFX for graphical programming.It is available at

Older versions of the book are also available; see thePreface tothe 8th edition for links.

The textbook is an introduction to programming and also an introduction to Java directed towards people who do not have any background in programming.You can use it on-line or download a copy for use on your own computer.PDF and print versions are also available. Links can be found at the bottoms of the book's web page.

An introductory computer graphics textbook, available for use on-line.There are also links on the front page for downloading the web-site version or a PDF version.This book was used in my Computer Graphics course in Fall 2015 and in Fall 2017,and it will be used again in Fall 2021.

The prerequisite for the book is two semesters of computer programming in Java, C/C++, or JavaScript,including a basic knowledge of data structures, objects, and object-oriented programming. It coverscore concepts from 2D graphics in Java, JavaScript, and SVG; 3D graphics with old-fashioned OpenGL 1.1; the three.jsJavaScript library for 3D Web graphics; and WebGL, the modern version of OpenGL for the Web.There is an appendix with short introductions to the essential features of Java, C, and JavaScript.See the Preface for more information.The book is available at

For many years, I wrote small web applications as Java applets. However, appletsare no longer supported in webbrowsers. A more modern alternative to Java Applets is to write web applications inJavaScript, which is well-supported in all modern browsers. (Note that Java and JavaScriptare completely different languages, in spite of the names.) One of my projects for my sabbaticalleave in Spring 2016 was to learn JavaScript better and to write some JavaScript Web apps.So far, I have ported some of my examples from Java to JavaScript, and added a few new appsthat were written originally in JavaScript.The work that I have done so far is available on this page:

Here are direct links to some of the more interesting examples:

  • Genetic Algorithms Demo: Demonstrates the Genetic Algorithm by showing how some simple simulated organisms evolve over a series of generations.
  • Mandelbrot Viewer: Explore the famous Mandelbrot set, and make some amazing pictures!
  • Pentominos Puzzle Solver: Solves pentominos puzzles, which involve placing twelve pieces of various shapes on a board. Fun to watch.
  • Wallpaper Groups: Draw symmetric patterns in the plane, where the symmetry is given by one of the seventeen wallpaper groups.
  • xSortLab: Learn about five sorting algorithms and compare their run times.
  • Turing Machine Simulation: Create and run simulated Turing machines.

The Mandelbrot set, in particular, is amazing. There is a largecollection of images thatare visualizations of pieces of that set. Click on any of the small images on that page to load that example into the Mandelbrot Viewer, where you can see a larger version of the image andexplore it further.

CPSC 229: Foundations of Computer Science is anintroductory course in theoretical computer science. It is a requiredcourse in the Computer Science major. For several years, the textbookin this course has been a set of notes written by Professor CarolCritchlow and me. This set of notes is now available for readingon-line or for downloading, at no charge. For more information andlinks to the PDF version of the book, see:

(A printed textbook can be ordered for the cost of reproduction from lulu.com.)


My introductory computer science textbook, The Most Complex Machine, was published in July, 1995. The book surveys most of the major areas of computer science, and is suitable as a textbook for a first course incomputer science. It is also suitable for self-study. A review of in theApril '96 issue of CHOICE magazine says that it is'Stronglyrecommended as a foundation for guided self-study for gifted high-schoolstudents, as well as non-computing majors.' You can readmore about it here.A set of applets and labsfor use with the text is freely available on-line.

This book is now quite old, and I really don't understand why the publisherhas kept it in print. However, it is not so out-of-date as most computerbooks published in the 1990s. The applets, written in an old version of Java,are not as attractive as they could be, but some of them are stilluseful. In particular:

  • xSortLab -- A visual demonstrationof several sorting algorithms.
  • xTuringMachine -- A Turing Machinesimulator.
  • xLogicCircuits -- Create and runsimulated circuits made from AND, OR, and NOT gates.
  • xComputer -- Simulates a complete,simple computer that is programmable in assembly language.

The source code for the applets can be downloaded fromthis page.You can also get .jar files for running the applets as stand-aloneprograms.

Unfortunately, Java applets have themselves become old-fashioned and unusable in most web browsers.I have written more modern web app versions of several of the applets. SeexSortLab, xTuringMachine, xComputer, andxTurtle, .


Java 8.171

'The Innocent Eye Test' by Mark Tansey (1981)