Voidwere added with Java 1.1. Shame on you Heinz ;-) He said it was difficult to get these really old Java versions nowadays.
And there were really interesting things happening. Sometimes private (package access) classes were promoted to public top level ones. This happened in almost all major upgrades,
- from JDK 1.1 to J2SE 1.2
java.io.ObjectStreamConstants java.io.ObjectStreamField java.net.SocketOptions
- from J2SE 1.2 to J2SE 1.3
java.awt.datatransfer.MimeTypeParseException java.awt.font.TextMeasurer javax.swing.plaf.basic.BasicHTML javax.swing.plaf.metal.MetalInternalFrameTitlePane
- from J2SE 1.3 to J2SE 1.4
java.awt.ScrollPaneAdjustable javax.swing.Popup javax.swing.PopupFactory javax.swing.text.html.ImageView
- from Java 5 to Java 6
ObjectStreamConstantsstates a (for this list) correct
@since JDK 1.1, whereas others show the Java version they became public in their
@sincetag. I guess their JavaDoc was added when they were made public, or maybe they have been rewritten? This must be true for
java.text.Normalizerwhich was available as package access class in Java 1.3, then dropped in Java 1.4 and came back as a public class in Java 1.6.
The opposite change, from public to private class, is rare. I only found one class,
javax.management.timer TimerAlarmClockNotification, which was removed from the public API in Java 6. It was added with Java 5 but marked as deprecated. I guess it came in with JMX 1.1 where it had been deprecated for some time.
According to my list there are only two classes that ever disappeared completely from the JDK,
javax.swing.beaninfo SwingBeanInfo. The
i18n.jarwhich was removed in 1.4 and
SwingBeanInfoeven lived inside
lib/dt.jar, far away from
jre/lib/rt.jar, which indicated it had been created to be used by development tools only.