This is an automated email from the ASF dual-hosted git repository.

dongjoon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/orc.git


The following commit(s) were added to refs/heads/main by this push:
     new 3eaa9e610 ORC-2128: Add `since` Javadoc tags to all public `orc-core` 
class/interface/enum
3eaa9e610 is described below

commit 3eaa9e610d511585aa5a88948f693cdd90b4802e
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Tue Mar 10 09:13:07 2026 -0700

    ORC-2128: Add `since` Javadoc tags to all public `orc-core` 
class/interface/enum
    
    ### What changes were proposed in this pull request?
    
    This PR adds `since` Javadoc tags to all public classes, interfaces, and 
enums in `orc-core` module. The version for each `since` tag was determined 
from git history by finding the earliest release tag (`rel/release-*`) 
containing the commit that first introduced each file.
    
    - Skipped third-party vendored code under `org.threeten.extra.chrono`
    - Skipped package-private classes
    
    ### Why are the changes needed?
    
    The `since` Javadoc tag is a standard practice for documenting API 
versioning in Java libraries. Currently, only 3 out of 162+ public types in 
`orc-core` have `since` tags. Adding these tags improves API documentation and 
helps users understand which version introduced each class.
    
    ### How was this patch tested?
    
    Pass the CIs and manual review.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Code (Claude Opus 4.6)
    
    Closes #2577 from dongjoon-hyun/ORC-2128.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 java/core/src/java/org/apache/orc/BinaryColumnStatistics.java          | 1 +
 java/core/src/java/org/apache/orc/BooleanColumnStatistics.java         | 1 +
 java/core/src/java/org/apache/orc/CollectionColumnStatistics.java      | 1 +
 java/core/src/java/org/apache/orc/ColumnStatistics.java                | 1 +
 java/core/src/java/org/apache/orc/CompressionCodec.java                | 1 +
 java/core/src/java/org/apache/orc/CompressionKind.java                 | 1 +
 java/core/src/java/org/apache/orc/DataMask.java                        | 1 +
 java/core/src/java/org/apache/orc/DataMaskDescription.java             | 1 +
 java/core/src/java/org/apache/orc/DataReader.java                      | 3 +++
 java/core/src/java/org/apache/orc/DateColumnStatistics.java            | 1 +
 java/core/src/java/org/apache/orc/DecimalColumnStatistics.java         | 1 +
 java/core/src/java/org/apache/orc/DoubleColumnStatistics.java          | 1 +
 java/core/src/java/org/apache/orc/EncryptionKey.java                   | 1 +
 java/core/src/java/org/apache/orc/EncryptionVariant.java               | 1 +
 java/core/src/java/org/apache/orc/FileFormatException.java             | 1 +
 java/core/src/java/org/apache/orc/FileMetadata.java                    | 1 +
 java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java      | 3 +++
 java/core/src/java/org/apache/orc/InMemoryKeystore.java                | 1 +
 java/core/src/java/org/apache/orc/IntegerColumnStatistics.java         | 1 +
 java/core/src/java/org/apache/orc/MemoryManager.java                   | 1 +
 java/core/src/java/org/apache/orc/OrcConf.java                         | 1 +
 java/core/src/java/org/apache/orc/OrcFile.java                         | 1 +
 java/core/src/java/org/apache/orc/OrcFilterContext.java                | 1 +
 java/core/src/java/org/apache/orc/OrcUtils.java                        | 3 +++
 java/core/src/java/org/apache/orc/PhysicalWriter.java                  | 1 +
 java/core/src/java/org/apache/orc/StringColumnStatistics.java          | 1 +
 java/core/src/java/org/apache/orc/StripeInformation.java               | 1 +
 java/core/src/java/org/apache/orc/StripeStatistics.java                | 1 +
 java/core/src/java/org/apache/orc/TimestampColumnStatistics.java       | 1 +
 java/core/src/java/org/apache/orc/TypeDescription.java                 | 1 +
 java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java      | 1 +
 java/core/src/java/org/apache/orc/UnknownFormatException.java          | 1 +
 java/core/src/java/org/apache/orc/filter/BatchFilter.java              | 1 +
 java/core/src/java/org/apache/orc/filter/PluginFilterService.java      | 1 +
 java/core/src/java/org/apache/orc/geospatial/BoundingBox.java          | 1 +
 java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java      | 1 +
 java/core/src/java/org/apache/orc/impl/AcidStats.java                  | 1 +
 java/core/src/java/org/apache/orc/impl/AircompressorCodec.java         | 3 +++
 java/core/src/java/org/apache/orc/impl/BitFieldReader.java             | 3 +++
 java/core/src/java/org/apache/orc/impl/BitFieldWriter.java             | 3 +++
 java/core/src/java/org/apache/orc/impl/BrotliCodec.java                | 3 +++
 java/core/src/java/org/apache/orc/impl/BufferChunk.java                | 1 +
 java/core/src/java/org/apache/orc/impl/BufferChunkList.java            | 1 +
 java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java       | 3 +++
 java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java   | 1 +
 java/core/src/java/org/apache/orc/impl/CryptoUtils.java                | 1 +
 java/core/src/java/org/apache/orc/impl/DataReaderProperties.java       | 3 +++
 java/core/src/java/org/apache/orc/impl/DateUtils.java                  | 1 +
 java/core/src/java/org/apache/orc/impl/Dictionary.java                 | 1 +
 java/core/src/java/org/apache/orc/impl/DictionaryUtils.java            | 3 +++
 java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java   | 3 +++
 java/core/src/java/org/apache/orc/impl/DynamicByteArray.java           | 1 +
 java/core/src/java/org/apache/orc/impl/DynamicIntArray.java            | 1 +
 java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java         | 1 +
 java/core/src/java/org/apache/orc/impl/InStream.java                   | 3 +++
 java/core/src/java/org/apache/orc/impl/IntegerReader.java              | 1 +
 java/core/src/java/org/apache/orc/impl/IntegerWriter.java              | 1 +
 java/core/src/java/org/apache/orc/impl/Lz4Codec.java                   | 3 +++
 java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java        | 3 +++
 java/core/src/java/org/apache/orc/impl/MemoryManager.java              | 1 +
 java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java          | 1 +
 java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java               | 3 +++
 java/core/src/java/org/apache/orc/impl/OrcCodecPool.java               | 1 +
 java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java       | 1 +
 java/core/src/java/org/apache/orc/impl/OrcIndex.java                   | 3 +++
 java/core/src/java/org/apache/orc/impl/OrcTail.java                    | 3 +++
 java/core/src/java/org/apache/orc/impl/OutStream.java                  | 1 +
 java/core/src/java/org/apache/orc/impl/ParserUtils.java                | 3 +++
 java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java           | 3 +++
 java/core/src/java/org/apache/orc/impl/PositionProvider.java           | 1 +
 java/core/src/java/org/apache/orc/impl/PositionRecorder.java           | 1 +
 java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java     | 3 +++
 java/core/src/java/org/apache/orc/impl/ReaderImpl.java                 | 3 +++
 java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java           | 3 +++
 java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java          | 1 +
 java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java        | 1 +
 java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java        | 1 +
 java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java     | 3 +++
 java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java   | 1 +
 java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java     | 1 +
 java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java   | 1 +
 java/core/src/java/org/apache/orc/impl/SchemaEvolution.java            | 1 +
 java/core/src/java/org/apache/orc/impl/SerializationUtils.java         | 3 +++
 java/core/src/java/org/apache/orc/impl/SnappyCodec.java                | 3 +++
 java/core/src/java/org/apache/orc/impl/StreamName.java                 | 1 +
 java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java  | 1 +
 java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java         | 1 +
 java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java       | 3 +++
 java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java          | 1 +
 java/core/src/java/org/apache/orc/impl/TypeUtils.java                  | 3 +++
 java/core/src/java/org/apache/orc/impl/Utf8Utils.java                  | 3 +++
 java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java         | 1 +
 java/core/src/java/org/apache/orc/impl/WriterImpl.java                 | 1 +
 java/core/src/java/org/apache/orc/impl/WriterInternal.java             | 1 +
 java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java          | 3 +++
 java/core/src/java/org/apache/orc/impl/ZlibCodec.java                  | 3 +++
 java/core/src/java/org/apache/orc/impl/ZstdCodec.java                  | 3 +++
 java/core/src/java/org/apache/orc/impl/filter/AndFilter.java           | 3 +++
 java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java       | 3 +++
 java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java     | 3 +++
 java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java        | 3 +++
 java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java          | 3 +++
 java/core/src/java/org/apache/orc/impl/filter/OrFilter.java            | 3 +++
 java/core/src/java/org/apache/orc/impl/filter/Selected.java            | 1 +
 java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java        | 1 +
 .../src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java    | 3 +++
 java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java       | 1 +
 java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java        | 1 +
 java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java          | 1 +
 java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java          | 1 +
 java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java           | 1 +
 java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java           | 1 +
 java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java          | 1 +
 java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java           | 1 +
 java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java     | 1 +
 java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java     | 1 +
 java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java        | 1 +
 java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java         | 1 +
 java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java    | 3 +++
 java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java | 1 +
 .../src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java   | 1 +
 java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java       | 1 +
 java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java    | 1 +
 .../src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java | 3 +++
 .../src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java    | 1 +
 java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java     | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java    | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java   | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java      | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java      | 1 +
 java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java      | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java | 1 +
 java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java   | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java    | 3 +++
 .../core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java | 1 +
 java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java     | 3 +++
 .../core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java   | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java      | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java       | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java       | 1 +
 .../core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java    | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java    | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java          | 1 +
 java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java      | 1 +
 java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java     | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java   | 1 +
 java/core/src/java/org/apache/orc/impl/writer/WriterContext.java       | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java | 3 +++
 .../src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java   | 3 +++
 java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java        | 1 +
 java/core/src/java/org/apache/orc/util/BloomFilter.java                | 1 +
 java/core/src/java/org/apache/orc/util/BloomFilterIO.java              | 3 +++
 java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java            | 1 +
 java/core/src/java/org/apache/orc/util/CuckooSetBytes.java             | 1 +
 java/core/src/java/org/apache/orc/util/Murmur3.java                    | 1 +
 java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java    | 1 +
 159 files changed, 281 insertions(+)

diff --git a/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java 
b/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java
index 5de996488..82f9117d5 100644
--- a/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Statistics for binary columns.
+ * @since 1.1.0
  */
 public interface BinaryColumnStatistics extends ColumnStatistics {
   /**
diff --git a/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java 
b/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java
index 82aa9c133..aa9bdabb4 100644
--- a/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Statistics for boolean columns.
+ * @since 1.1.0
  */
 public interface BooleanColumnStatistics extends ColumnStatistics {
   /**
diff --git a/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java 
b/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java
index 056c8caec..f030c485d 100644
--- a/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Statistics for all of collections such as Map and List.
+ * @since 1.6.0
  */
 public interface CollectionColumnStatistics extends ColumnStatistics {
   /**
diff --git a/java/core/src/java/org/apache/orc/ColumnStatistics.java 
b/java/core/src/java/org/apache/orc/ColumnStatistics.java
index 8bbee4208..f52a7bcba 100644
--- a/java/core/src/java/org/apache/orc/ColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/ColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Statistics that are available for all types of columns.
+ * @since 1.1.0
  */
 public interface ColumnStatistics {
   /**
diff --git a/java/core/src/java/org/apache/orc/CompressionCodec.java 
b/java/core/src/java/org/apache/orc/CompressionCodec.java
index c926fa0eb..06c1bea85 100644
--- a/java/core/src/java/org/apache/orc/CompressionCodec.java
+++ b/java/core/src/java/org/apache/orc/CompressionCodec.java
@@ -25,6 +25,7 @@ import java.nio.ByteBuffer;
 /**
  * The API for compression codecs for ORC.
  * Closeable.close() returns this codec to the OrcCodecPool.
+ * @since 1.1.0
  */
 public interface CompressionCodec extends Closeable {
 
diff --git a/java/core/src/java/org/apache/orc/CompressionKind.java 
b/java/core/src/java/org/apache/orc/CompressionKind.java
index f5615acf8..446a01917 100644
--- a/java/core/src/java/org/apache/orc/CompressionKind.java
+++ b/java/core/src/java/org/apache/orc/CompressionKind.java
@@ -21,6 +21,7 @@ package org.apache.orc;
 /**
  * An enumeration that lists the generic compression algorithms that
  * can be applied to ORC files.
+ * @since 1.1.0
  */
 public enum CompressionKind {
   NONE, ZLIB, SNAPPY, LZO, LZ4, ZSTD, BROTLI
diff --git a/java/core/src/java/org/apache/orc/DataMask.java 
b/java/core/src/java/org/apache/orc/DataMask.java
index 7e1eb800c..e833bcf35 100644
--- a/java/core/src/java/org/apache/orc/DataMask.java
+++ b/java/core/src/java/org/apache/orc/DataMask.java
@@ -29,6 +29,7 @@ import java.util.ServiceLoader;
  * They apply to an individual column (via ColumnVector) instead of a
  * VectorRowBatch.
  *
+ * @since 1.5.0
  */
 public interface DataMask {
 
diff --git a/java/core/src/java/org/apache/orc/DataMaskDescription.java 
b/java/core/src/java/org/apache/orc/DataMaskDescription.java
index d70eabad3..a7cd650de 100644
--- a/java/core/src/java/org/apache/orc/DataMaskDescription.java
+++ b/java/core/src/java/org/apache/orc/DataMaskDescription.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Information about the DataMask used to mask the unencrypted data.
+ * @since 1.6.0
  */
 public interface DataMaskDescription {
 
diff --git a/java/core/src/java/org/apache/orc/DataReader.java 
b/java/core/src/java/org/apache/orc/DataReader.java
index a477866f5..8f8bc76eb 100644
--- a/java/core/src/java/org/apache/orc/DataReader.java
+++ b/java/core/src/java/org/apache/orc/DataReader.java
@@ -25,6 +25,9 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 
 /** An abstract data reader that IO formats can use to read bytes from 
underlying storage. */
+/**
+ * @since 1.1.0
+ */
 public interface DataReader extends AutoCloseable, Cloneable {
 
   /** Opens the DataReader, making it ready to use. */
diff --git a/java/core/src/java/org/apache/orc/DateColumnStatistics.java 
b/java/core/src/java/org/apache/orc/DateColumnStatistics.java
index b60af5891..6a1db215d 100644
--- a/java/core/src/java/org/apache/orc/DateColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/DateColumnStatistics.java
@@ -23,6 +23,7 @@ import java.util.Date;
 
 /**
  * Statistics for DATE columns.
+ * @since 1.1.0
  */
 public interface DateColumnStatistics extends ColumnStatistics {
 
diff --git a/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java 
b/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java
index 1d0b57bcf..072578ae0 100644
--- a/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.hive.common.type.HiveDecimal;
 
 /**
  * Statistics for decimal columns.
+ * @since 1.1.0
  */
 public interface DecimalColumnStatistics extends ColumnStatistics {
 
diff --git a/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java 
b/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java
index 464c6cd46..3745da9e3 100644
--- a/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Statistics for float and double columns.
+ * @since 1.1.0
  */
 public interface DoubleColumnStatistics extends ColumnStatistics {
 
diff --git a/java/core/src/java/org/apache/orc/EncryptionKey.java 
b/java/core/src/java/org/apache/orc/EncryptionKey.java
index a468ea6f6..715e3eefb 100644
--- a/java/core/src/java/org/apache/orc/EncryptionKey.java
+++ b/java/core/src/java/org/apache/orc/EncryptionKey.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Information about a key used for column encryption in an ORC file.
+ * @since 1.6.0
  */
 public interface EncryptionKey extends Comparable<EncryptionKey> {
 
diff --git a/java/core/src/java/org/apache/orc/EncryptionVariant.java 
b/java/core/src/java/org/apache/orc/EncryptionVariant.java
index 41f1066bb..f43734333 100644
--- a/java/core/src/java/org/apache/orc/EncryptionVariant.java
+++ b/java/core/src/java/org/apache/orc/EncryptionVariant.java
@@ -30,6 +30,7 @@ import java.security.Key;
  *   <li>Encrypted original</li>
  *   <li>Unencrypted masked</li>
  * </ul>
+ * @since 1.6.0
  */
 public interface EncryptionVariant extends Comparable<EncryptionVariant> {
 
diff --git a/java/core/src/java/org/apache/orc/FileFormatException.java 
b/java/core/src/java/org/apache/orc/FileFormatException.java
index 6853a1008..7574161d5 100644
--- a/java/core/src/java/org/apache/orc/FileFormatException.java
+++ b/java/core/src/java/org/apache/orc/FileFormatException.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 
 /**
  * Thrown when an invalid file format is encountered.
+ * @since 1.1.0
  */
 public class FileFormatException extends IOException {
 
diff --git a/java/core/src/java/org/apache/orc/FileMetadata.java 
b/java/core/src/java/org/apache/orc/FileMetadata.java
index 9a927b94e..6dc98c69b 100644
--- a/java/core/src/java/org/apache/orc/FileMetadata.java
+++ b/java/core/src/java/org/apache/orc/FileMetadata.java
@@ -25,6 +25,7 @@ import java.util.List;
  * protobuf structs actually, we could just store what we need, but that would 
require that
  * ORC stop depending on them too. Luckily, they shouldn't be very big.
  * @deprecated Use {@link org.apache.orc.impl.OrcTail} instead
+ * @since 1.1.0
  */
 @Deprecated
 public interface FileMetadata {
diff --git a/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java 
b/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java
index 301b62598..95340db30 100644
--- a/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java
@@ -21,6 +21,9 @@ package org.apache.orc;
 import org.apache.orc.geospatial.BoundingBox;
 import org.apache.orc.geospatial.GeospatialTypes;
 
+/**
+ * @since 2.2.0
+ */
 public interface GeospatialColumnStatistics extends ColumnStatistics {
   /**
    * Get the bounding box for the column.
diff --git a/java/core/src/java/org/apache/orc/InMemoryKeystore.java 
b/java/core/src/java/org/apache/orc/InMemoryKeystore.java
index 52bf40862..0fd89cba0 100644
--- a/java/core/src/java/org/apache/orc/InMemoryKeystore.java
+++ b/java/core/src/java/org/apache/orc/InMemoryKeystore.java
@@ -53,6 +53,7 @@ import java.util.TreeMap;
  * constant IV is not a problem.
  * <p>
  * This class is not thread safe.
+ * @since 1.5.0
  */
 public class InMemoryKeystore implements KeyProvider {
   /**
diff --git a/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java 
b/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java
index 35a1ed300..cfa8535ed 100644
--- a/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java
@@ -21,6 +21,7 @@ package org.apache.orc;
 /**
  * Statistics for all of the integer columns, such as byte, short, int, and
  * long.
+ * @since 1.1.0
  */
 public interface IntegerColumnStatistics extends ColumnStatistics {
   /**
diff --git a/java/core/src/java/org/apache/orc/MemoryManager.java 
b/java/core/src/java/org/apache/orc/MemoryManager.java
index fa478b477..0a11e4a0a 100644
--- a/java/core/src/java/org/apache/orc/MemoryManager.java
+++ b/java/core/src/java/org/apache/orc/MemoryManager.java
@@ -31,6 +31,7 @@ import java.io.IOException;
  * <p>
  * This class is not thread safe, but is re-entrant - ensure creation and all
  * invocations are triggered from the same thread.
+ * @since 1.4.0
  */
 public interface MemoryManager {
 
diff --git a/java/core/src/java/org/apache/orc/OrcConf.java 
b/java/core/src/java/org/apache/orc/OrcConf.java
index 89dfc47e9..cf8345e4a 100644
--- a/java/core/src/java/org/apache/orc/OrcConf.java
+++ b/java/core/src/java/org/apache/orc/OrcConf.java
@@ -26,6 +26,7 @@ import java.util.Properties;
 
 /**
  * Define the configuration properties that Orc understands.
+ * @since 1.1.0
  */
 public enum OrcConf {
   STRIPE_SIZE("orc.stripe.size", "hive.exec.orc.default.stripe.size",
diff --git a/java/core/src/java/org/apache/orc/OrcFile.java 
b/java/core/src/java/org/apache/orc/OrcFile.java
index 8c61b0065..11a5db322 100644
--- a/java/core/src/java/org/apache/orc/OrcFile.java
+++ b/java/core/src/java/org/apache/orc/OrcFile.java
@@ -44,6 +44,7 @@ import java.util.Properties;
 
 /**
  * Contains factory methods to read or write ORC files.
+ * @since 1.1.0
  */
 public class OrcFile {
   private static final Logger LOG = LoggerFactory.getLogger(OrcFile.class);
diff --git a/java/core/src/java/org/apache/orc/OrcFilterContext.java 
b/java/core/src/java/org/apache/orc/OrcFilterContext.java
index 52c15008a..d6fa3f5d7 100644
--- a/java/core/src/java/org/apache/orc/OrcFilterContext.java
+++ b/java/core/src/java/org/apache/orc/OrcFilterContext.java
@@ -30,6 +30,7 @@ import 
org.apache.hadoop.hive.ql.io.filter.MutableFilterContext;
  * <p>
  * This offers a convenience method of finding the column vector from a given 
column name
  * that the filters can invoke to get access to the column vector.
+ * @since 1.7.0
  */
 public interface OrcFilterContext extends MutableFilterContext {
   /**
diff --git a/java/core/src/java/org/apache/orc/OrcUtils.java 
b/java/core/src/java/org/apache/orc/OrcUtils.java
index 3b4b539a4..6ecf637d0 100644
--- a/java/core/src/java/org/apache/orc/OrcUtils.java
+++ b/java/core/src/java/org/apache/orc/OrcUtils.java
@@ -32,6 +32,9 @@ import java.util.Properties;
 
 import static org.apache.hadoop.util.StringUtils.COMMA_STR;
 
+/**
+ * @since 1.1.0
+ */
 public class OrcUtils {
 
   /**
diff --git a/java/core/src/java/org/apache/orc/PhysicalWriter.java 
b/java/core/src/java/org/apache/orc/PhysicalWriter.java
index 3c40fb36a..d760e9fb6 100644
--- a/java/core/src/java/org/apache/orc/PhysicalWriter.java
+++ b/java/core/src/java/org/apache/orc/PhysicalWriter.java
@@ -30,6 +30,7 @@ import java.nio.ByteBuffer;
  * level details.
  * <p>
  * This API is limited to being used by LLAP.
+ * @since 1.3.0
  */
 public interface PhysicalWriter {
 
diff --git a/java/core/src/java/org/apache/orc/StringColumnStatistics.java 
b/java/core/src/java/org/apache/orc/StringColumnStatistics.java
index eb15e170d..81de896bb 100644
--- a/java/core/src/java/org/apache/orc/StringColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/StringColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Statistics for string columns.
+ * @since 1.1.0
  */
 public interface StringColumnStatistics extends ColumnStatistics {
   /**
diff --git a/java/core/src/java/org/apache/orc/StripeInformation.java 
b/java/core/src/java/org/apache/orc/StripeInformation.java
index d02bcf33a..d5f06a733 100644
--- a/java/core/src/java/org/apache/orc/StripeInformation.java
+++ b/java/core/src/java/org/apache/orc/StripeInformation.java
@@ -20,6 +20,7 @@ package org.apache.orc;
 
 /**
  * Information about the stripes in an ORC file that is provided by the Reader.
+ * @since 1.1.0
  */
 public interface StripeInformation {
   /**
diff --git a/java/core/src/java/org/apache/orc/StripeStatistics.java 
b/java/core/src/java/org/apache/orc/StripeStatistics.java
index 142b8cbb2..e81c57879 100644
--- a/java/core/src/java/org/apache/orc/StripeStatistics.java
+++ b/java/core/src/java/org/apache/orc/StripeStatistics.java
@@ -24,6 +24,7 @@ import java.util.List;
 
 /**
  * The statistics for a stripe.
+ * @since 1.1.0
  */
 public class StripeStatistics {
   protected final List<OrcProto.ColumnStatistics> cs;
diff --git a/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java 
b/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java
index c5abd4296..6d338ff77 100644
--- a/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java
@@ -22,6 +22,7 @@ import java.sql.Timestamp;
 
 /**
  * Statistics for Timestamp columns.
+ * @since 1.1.0
  */
 public interface TimestampColumnStatistics extends ColumnStatistics {
   /**
diff --git a/java/core/src/java/org/apache/orc/TypeDescription.java 
b/java/core/src/java/org/apache/orc/TypeDescription.java
index 9e130e81d..a91137a5c 100644
--- a/java/core/src/java/org/apache/orc/TypeDescription.java
+++ b/java/core/src/java/org/apache/orc/TypeDescription.java
@@ -33,6 +33,7 @@ import java.util.regex.Pattern;
 
 /**
  * This is the description of the types in an ORC file.
+ * @since 1.1.0
  */
 public class TypeDescription
     implements Comparable<TypeDescription>, Serializable, Cloneable {
diff --git a/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java 
b/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java
index 8653287a1..c91a56748 100644
--- a/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java
+++ b/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java
@@ -23,6 +23,7 @@ import java.util.List;
 
 /**
  * A pretty printer for TypeDescription.
+ * @since 1.5.0
  */
 public class TypeDescriptionPrettyPrint {
 
diff --git a/java/core/src/java/org/apache/orc/UnknownFormatException.java 
b/java/core/src/java/org/apache/orc/UnknownFormatException.java
index eb21fe3f8..5a71cc62b 100644
--- a/java/core/src/java/org/apache/orc/UnknownFormatException.java
+++ b/java/core/src/java/org/apache/orc/UnknownFormatException.java
@@ -25,6 +25,7 @@ import java.io.IOException;
 
 /**
  * @deprecated This will be removed in the future releases.
+ * @since 1.5.0
  */
 @Deprecated
 public class UnknownFormatException extends IOException {
diff --git a/java/core/src/java/org/apache/orc/filter/BatchFilter.java 
b/java/core/src/java/org/apache/orc/filter/BatchFilter.java
index 513f56c01..5413118e2 100644
--- a/java/core/src/java/org/apache/orc/filter/BatchFilter.java
+++ b/java/core/src/java/org/apache/orc/filter/BatchFilter.java
@@ -26,6 +26,7 @@ import java.util.function.Consumer;
  * Defines a batch filter that can operate on a
  * {@link org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch} and filter 
rows by using the
  * selected vector to determine the eligible rows.
+ * @since 1.7.0
  */
 public interface BatchFilter extends Consumer<OrcFilterContext> {
 
diff --git a/java/core/src/java/org/apache/orc/filter/PluginFilterService.java 
b/java/core/src/java/org/apache/orc/filter/PluginFilterService.java
index e353df453..f9d025e97 100644
--- a/java/core/src/java/org/apache/orc/filter/PluginFilterService.java
+++ b/java/core/src/java/org/apache/orc/filter/PluginFilterService.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.conf.Configuration;
  * combined using AND.
  * The filter is expected to be deterministic (for reattempts) and agnostic of 
the application order
  * which is non-deterministic.
+ * @since 1.8.0
  */
 public interface PluginFilterService {
   /**
diff --git a/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java 
b/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java
index 093e2c96c..973753fd5 100644
--- a/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java
+++ b/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java
@@ -26,6 +26,7 @@ import org.locationtech.jts.geom.Geometry;
  * Bounding box for Geometry or Geography type in the representation of min/max
  * value pairs of coordinates from each axis.
  * A bounding box is considered valid if none of the X / Y dimensions contain 
NaN.
+ * @since 2.2.0
  */
 public class BoundingBox {
 
diff --git a/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java 
b/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java
index c1067adad..f165a0f77 100644
--- a/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java
+++ b/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java
@@ -36,6 +36,7 @@ import java.util.stream.Collectors;
  *
  * When invalid, the types list is cleared and remains empty. All subsequent
  * updates and merges are ignored until reset() is called.
+ * @since 2.2.0
  */
 public class GeospatialTypes {
 
diff --git a/java/core/src/java/org/apache/orc/impl/AcidStats.java 
b/java/core/src/java/org/apache/orc/impl/AcidStats.java
index 72b02fc7c..de787741d 100644
--- a/java/core/src/java/org/apache/orc/impl/AcidStats.java
+++ b/java/core/src/java/org/apache/orc/impl/AcidStats.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
 
 /**
  * Statistics about the ACID operations in an ORC file
+ * @since 1.1.0
  */
 public class AcidStats {
   public long inserts;
diff --git a/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java 
b/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java
index 5bc281bfc..395bfe0cb 100644
--- a/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java
@@ -26,6 +26,9 @@ import org.apache.orc.CompressionKind;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 1.2.0
+ */
 public class AircompressorCodec implements CompressionCodec {
   private final CompressionKind kind;
   private final Compressor compressor;
diff --git a/java/core/src/java/org/apache/orc/impl/BitFieldReader.java 
b/java/core/src/java/org/apache/orc/impl/BitFieldReader.java
index effdddae5..1edae0914 100644
--- a/java/core/src/java/org/apache/orc/impl/BitFieldReader.java
+++ b/java/core/src/java/org/apache/orc/impl/BitFieldReader.java
@@ -24,6 +24,9 @@ import org.apache.hadoop.hive.ql.io.filter.FilterContext;
 import java.io.EOFException;
 import java.io.IOException;
 
+/**
+ * @since 1.1.0
+ */
 public final class BitFieldReader {
   private final RunLengthByteReader input;
   private int current;
diff --git a/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java 
b/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java
index 9b67f0117..b76cf78f0 100644
--- a/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl;
 import java.io.IOException;
 import java.util.function.Consumer;
 
+/**
+ * @since 1.1.0
+ */
 public class BitFieldWriter {
   private RunLengthByteWriter output;
   private final int bitSize;
diff --git a/java/core/src/java/org/apache/orc/impl/BrotliCodec.java 
b/java/core/src/java/org/apache/orc/impl/BrotliCodec.java
index 6e45d1a5f..0306ae58a 100644
--- a/java/core/src/java/org/apache/orc/impl/BrotliCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/BrotliCodec.java
@@ -27,6 +27,9 @@ import org.apache.orc.CompressionKind;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 2.0.0
+ */
 public class BrotliCodec implements CompressionCodec, DirectDecompressionCodec 
{
   // load jni library.
   static {
diff --git a/java/core/src/java/org/apache/orc/impl/BufferChunk.java 
b/java/core/src/java/org/apache/orc/impl/BufferChunk.java
index d43b2de1a..d174d0a61 100644
--- a/java/core/src/java/org/apache/orc/impl/BufferChunk.java
+++ b/java/core/src/java/org/apache/orc/impl/BufferChunk.java
@@ -27,6 +27,7 @@ import java.nio.ByteBuffer;
  * The sections of stripe that we have read.
  * This might not match diskRange - 1 disk range can be multiple buffer chunks,
  * depending on DFS block boundaries.
+ * @since 1.1.0
  */
 public class BufferChunk extends DiskRangeList {
 
diff --git a/java/core/src/java/org/apache/orc/impl/BufferChunkList.java 
b/java/core/src/java/org/apache/orc/impl/BufferChunkList.java
index 1bd4e8abd..a6b016453 100644
--- a/java/core/src/java/org/apache/orc/impl/BufferChunkList.java
+++ b/java/core/src/java/org/apache/orc/impl/BufferChunkList.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
 
 /**
  * Builds a list of buffer chunks
+ * @since 1.6.0
  */
 public class BufferChunkList {
   private BufferChunk head;
diff --git a/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java 
b/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
index c5537e0c6..2b419a86d 100644
--- a/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
@@ -57,6 +57,9 @@ import java.util.Set;
 import java.util.TimeZone;
 
 
+/**
+ * @since 1.1.0
+ */
 public class ColumnStatisticsImpl implements ColumnStatistics {
 
   @Override
diff --git 
a/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java 
b/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java
index 90ead13d3..d3d8f3102 100644
--- a/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java
@@ -56,6 +56,7 @@ import java.util.TimeZone;
 
 /**
  * Convert ORC tree readers.
+ * @since 1.1.0
  */
 public class ConvertTreeReaderFactory extends TreeReaderFactory {
 
diff --git a/java/core/src/java/org/apache/orc/impl/CryptoUtils.java 
b/java/core/src/java/org/apache/orc/impl/CryptoUtils.java
index 215d0bd92..eb1539cca 100644
--- a/java/core/src/java/org/apache/orc/impl/CryptoUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/CryptoUtils.java
@@ -32,6 +32,7 @@ import java.util.function.Consumer;
 
 /**
  * This class has routines to work with encryption within ORC files.
+ * @since 1.6.0
  */
 public class CryptoUtils {
 
diff --git a/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java 
b/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java
index 51f8d05dc..cb56d5d0a 100644
--- a/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java
+++ b/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java
@@ -25,6 +25,9 @@ import org.apache.orc.OrcConf;
 
 import java.util.function.Supplier;
 
+/**
+ * @since 1.1.0
+ */
 public final class DataReaderProperties {
 
   private final Supplier<FileSystem> fileSystemSupplier;
diff --git a/java/core/src/java/org/apache/orc/impl/DateUtils.java 
b/java/core/src/java/org/apache/orc/impl/DateUtils.java
index 8488901a2..b826d6e4c 100644
--- a/java/core/src/java/org/apache/orc/impl/DateUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/DateUtils.java
@@ -39,6 +39,7 @@ import java.util.concurrent.TimeUnit;
  * <p>
  * These utilities will be fast for the common case (&gt; 1582 AD), but slow
  * for old dates.
+ * @since 1.7.0
  */
 public class DateUtils {
   private static final ZoneId UTC = ZoneId.of("UTC");
diff --git a/java/core/src/java/org/apache/orc/impl/Dictionary.java 
b/java/core/src/java/org/apache/orc/impl/Dictionary.java
index 18e990b8f..8047a5bb1 100644
--- a/java/core/src/java/org/apache/orc/impl/Dictionary.java
+++ b/java/core/src/java/org/apache/orc/impl/Dictionary.java
@@ -28,6 +28,7 @@ import java.nio.ByteBuffer;
 /**
  * Interface to define the dictionary used for encoding value in columns
  * of specific types like string, char, varchar, etc.
+ * @since 1.7.0
  */
 public interface Dictionary {
   enum IMPL {
diff --git a/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java 
b/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java
index 8a3ddcbe0..6c4a6242e 100644
--- a/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java
@@ -24,6 +24,9 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 1.7.0
+ */
 public class DictionaryUtils {
   private DictionaryUtils() {
     // Utility class does nothing in constructor
diff --git 
a/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java 
b/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java
index b70f7cdb3..a0d81bad7 100644
--- a/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java
@@ -23,6 +23,9 @@ import org.apache.orc.CompressionCodec;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 1.1.0
+ */
 public interface DirectDecompressionCodec extends CompressionCodec {
   /**
    * Check if the codec is available.
diff --git a/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java 
b/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java
index b1a503887..7402bd8a3 100644
--- a/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java
+++ b/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java
@@ -30,6 +30,7 @@ import java.util.Arrays;
 /**
  * A class that is a growable array of bytes. Growth is managed in terms of
  * chunks that are allocated when needed.
+ * @since 1.1.0
  */
 public final class DynamicByteArray {
   static final int DEFAULT_CHUNKSIZE = 32 * 1024;
diff --git a/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java 
b/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java
index 9b47f0e92..16ea659de 100644
--- a/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java
+++ b/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java
@@ -33,6 +33,7 @@ import java.util.Arrays;
  * <p>
  * NOTE: Like standard Collection implementations/arrays, this class is not
  * synchronized.
+ * @since 1.1.0
  */
 public final class DynamicIntArray {
   static final int DEFAULT_CHUNKSIZE = 8 * 1024;
diff --git a/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java 
b/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java
index 9f0ae946c..936ab6338 100644
--- a/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java
@@ -26,6 +26,7 @@ import java.lang.reflect.InvocationTargetException;
 
 /**
  * The factory for getting the proper version of the Hadoop shims.
+ * @since 1.5.0
  */
 public class HadoopShimsFactory {
   private static final Logger LOG = 
LoggerFactory.getLogger(HadoopShimsFactory.class);
diff --git a/java/core/src/java/org/apache/orc/impl/InStream.java 
b/java/core/src/java/org/apache/orc/impl/InStream.java
index 390c574e6..bf23a9508 100644
--- a/java/core/src/java/org/apache/orc/impl/InStream.java
+++ b/java/core/src/java/org/apache/orc/impl/InStream.java
@@ -36,6 +36,9 @@ import java.security.InvalidKeyException;
 import java.security.Key;
 import java.util.function.Consumer;
 
+/**
+ * @since 1.1.0
+ */
 public abstract class InStream extends InputStream {
 
   private static final Logger LOG = LoggerFactory.getLogger(InStream.class);
diff --git a/java/core/src/java/org/apache/orc/impl/IntegerReader.java 
b/java/core/src/java/org/apache/orc/impl/IntegerReader.java
index 39ec7cd4a..2d4d18c52 100644
--- a/java/core/src/java/org/apache/orc/impl/IntegerReader.java
+++ b/java/core/src/java/org/apache/orc/impl/IntegerReader.java
@@ -24,6 +24,7 @@ import java.io.IOException;
 
 /**
  * Interface for reading integers.
+ * @since 1.1.0
  */
 public interface IntegerReader {
 
diff --git a/java/core/src/java/org/apache/orc/impl/IntegerWriter.java 
b/java/core/src/java/org/apache/orc/impl/IntegerWriter.java
index e09e80c96..b75ea727b 100644
--- a/java/core/src/java/org/apache/orc/impl/IntegerWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/IntegerWriter.java
@@ -23,6 +23,7 @@ import java.util.function.Consumer;
 
 /**
  * Interface for writing integers.
+ * @since 1.1.0
  */
 public interface IntegerWriter {
 
diff --git a/java/core/src/java/org/apache/orc/impl/Lz4Codec.java 
b/java/core/src/java/org/apache/orc/impl/Lz4Codec.java
index cc9f89cf0..54f48c13b 100644
--- a/java/core/src/java/org/apache/orc/impl/Lz4Codec.java
+++ b/java/core/src/java/org/apache/orc/impl/Lz4Codec.java
@@ -27,6 +27,9 @@ import org.apache.orc.CompressionKind;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 2.3.0
+ */
 public class Lz4Codec implements CompressionCodec, DirectDecompressionCodec {
   private static final LZ4Factory lz4Factory = LZ4Factory.fastestInstance();
   private static final ThreadLocal<byte[]> threadBuffer = 
ThreadLocal.withInitial(() -> null);
diff --git a/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java 
b/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java
index 91dec7368..588f2b4fd 100644
--- a/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java
@@ -29,6 +29,9 @@ import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
 
+/**
+ * @since 1.6.0
+ */
 public class MaskDescriptionImpl implements DataMaskDescription,
                                             Comparable<MaskDescriptionImpl> {
   private int id;
diff --git a/java/core/src/java/org/apache/orc/impl/MemoryManager.java 
b/java/core/src/java/org/apache/orc/impl/MemoryManager.java
index 08738af3b..7d853a448 100644
--- a/java/core/src/java/org/apache/orc/impl/MemoryManager.java
+++ b/java/core/src/java/org/apache/orc/impl/MemoryManager.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.conf.Configuration;
 
 /**
  * Shim for backwards compatibility with Hive
+ * @since 1.1.0
  */
 @Deprecated
 public class MemoryManager extends MemoryManagerImpl {
diff --git a/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java 
b/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java
index cb06e7fd9..e86251a5a 100644
--- a/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java
@@ -38,6 +38,7 @@ import java.util.concurrent.atomic.AtomicLong;
  * <p>
  * This class is not thread safe, but is re-entrant - ensure creation and all
  * invocations are triggered from the same thread.
+ * @since 1.4.0
  */
 public class MemoryManagerImpl implements MemoryManager {
 
diff --git a/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java 
b/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java
index f67f785fb..c6695cf41 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java
@@ -30,6 +30,9 @@ import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.StandardCharsets;
 
+/**
+ * @since 1.1.0
+ */
 public class OrcAcidUtils {
   public static final String ACID_STATS = "hive.acid.stats";
   public static final String DELTA_SIDE_FILE_SUFFIX = "_flush_length";
diff --git a/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java 
b/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java
index e486a3ec9..93557b1ec 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java
@@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * A clone of Hadoop codec pool for ORC; cause it has its own codecs...
+ * @since 1.4.0
  */
 public final class OrcCodecPool {
   private static final Logger LOG = 
LoggerFactory.getLogger(OrcCodecPool.class);
diff --git a/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java 
b/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java
index 33eec241a..33f24c7b4 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java
@@ -33,6 +33,7 @@ import java.util.Map;
  * <p>
  * This offers a convenience method of finding the column vector from a given 
column name
  * that the filters can invoke to get access to the column vector.
+ * @since 1.7.0
  */
 public class OrcFilterContextImpl implements OrcFilterContext {
   private VectorizedRowBatch batch = null;
diff --git a/java/core/src/java/org/apache/orc/impl/OrcIndex.java 
b/java/core/src/java/org/apache/orc/impl/OrcIndex.java
index 357989e34..c2ab5d484 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcIndex.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcIndex.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl;
 
 import org.apache.orc.OrcProto;
 
+/**
+ * @since 1.1.0
+ */
 public final class OrcIndex {
   OrcProto.RowIndex[] rowGroupIndex;
   OrcProto.Stream.Kind[] bloomFilterKinds;
diff --git a/java/core/src/java/org/apache/orc/impl/OrcTail.java 
b/java/core/src/java/org/apache/orc/impl/OrcTail.java
index 37c6a4931..8e95fda27 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcTail.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcTail.java
@@ -35,6 +35,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 // TODO: Make OrcTail implement FileMetadata or Reader interface
+/**
+ * @since 1.2.0
+ */
 public final class OrcTail {
   private static final Logger LOG = LoggerFactory.getLogger(OrcTail.class);
 
diff --git a/java/core/src/java/org/apache/orc/impl/OutStream.java 
b/java/core/src/java/org/apache/orc/impl/OutStream.java
index 5724c6479..6a0ae2d73 100644
--- a/java/core/src/java/org/apache/orc/impl/OutStream.java
+++ b/java/core/src/java/org/apache/orc/impl/OutStream.java
@@ -40,6 +40,7 @@ import java.util.function.Consumer;
 /**
  * The output stream for writing to ORC files.
  * It handles both compression and encryption.
+ * @since 1.1.0
  */
 public class OutStream extends PositionedOutputStream {
   private static final Logger LOG = LoggerFactory.getLogger(OutStream.class);
diff --git a/java/core/src/java/org/apache/orc/impl/ParserUtils.java 
b/java/core/src/java/org/apache/orc/impl/ParserUtils.java
index c864465bd..1067d6658 100644
--- a/java/core/src/java/org/apache/orc/impl/ParserUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/ParserUtils.java
@@ -30,6 +30,9 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
 
+/**
+ * @since 1.6.0
+ */
 public class ParserUtils {
   private static final TypeDescription.Category[] 
TYPE_DESCRIPTION_CATEGORY_VALUES
       = TypeDescription.Category.values();
diff --git a/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java 
b/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java
index d6fb296bd..4f1386f88 100644
--- a/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java
@@ -44,6 +44,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
+/**
+ * @since 1.3.0
+ */
 public class PhysicalFsWriter implements PhysicalWriter {
   private static final Logger LOG = 
LoggerFactory.getLogger(PhysicalFsWriter.class);
 
diff --git a/java/core/src/java/org/apache/orc/impl/PositionProvider.java 
b/java/core/src/java/org/apache/orc/impl/PositionProvider.java
index f13f9a4e1..d9ef67a68 100644
--- a/java/core/src/java/org/apache/orc/impl/PositionProvider.java
+++ b/java/core/src/java/org/apache/orc/impl/PositionProvider.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
 
 /**
  * An interface used for seeking to a row index.
+ * @since 1.1.0
  */
 public interface PositionProvider {
   /**
diff --git a/java/core/src/java/org/apache/orc/impl/PositionRecorder.java 
b/java/core/src/java/org/apache/orc/impl/PositionRecorder.java
index 8892d3e45..d2b7c2c1a 100644
--- a/java/core/src/java/org/apache/orc/impl/PositionRecorder.java
+++ b/java/core/src/java/org/apache/orc/impl/PositionRecorder.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
 
 /**
  * An interface for recording positions in a stream.
+ * @since 1.1.0
  */
 public interface PositionRecorder {
   /**
diff --git a/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java 
b/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java
index 9db451137..82396f48c 100644
--- a/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java
+++ b/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java
@@ -22,6 +22,9 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.util.function.Consumer;
 
+/**
+ * @since 1.1.0
+ */
 public abstract class PositionedOutputStream extends OutputStream {
 
   /**
diff --git a/java/core/src/java/org/apache/orc/impl/ReaderImpl.java 
b/java/core/src/java/org/apache/orc/impl/ReaderImpl.java
index f1c6b146b..eaa978c73 100644
--- a/java/core/src/java/org/apache/orc/impl/ReaderImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/ReaderImpl.java
@@ -61,6 +61,9 @@ import java.util.List;
 import java.util.Objects;
 import java.util.function.Supplier;
 
+/**
+ * @since 1.1.0
+ */
 public class ReaderImpl implements Reader {
 
   private static final Logger LOG = LoggerFactory.getLogger(ReaderImpl.class);
diff --git a/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java 
b/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
index 9553febc4..34fd415bb 100644
--- a/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
@@ -76,6 +76,9 @@ import java.util.TimeZone;
 import java.util.TreeSet;
 import java.util.function.Consumer;
 
+/**
+ * @since 1.1.0
+ */
 public class RecordReaderImpl implements RecordReader {
   static final Logger LOG = LoggerFactory.getLogger(RecordReaderImpl.class);
   private static final boolean isLogDebugEnabled = LOG.isDebugEnabled();
diff --git a/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java 
b/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java
index 11f5e227b..2c7397068 100644
--- a/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java
@@ -46,6 +46,7 @@ import java.util.function.Supplier;
 
 /**
  * Stateless methods shared between RecordReaderImpl and EncodedReaderImpl.
+ * @since 1.1.0
  */
 public class RecordReaderUtils {
   /**
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java 
b/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java
index 7bf84b562..bfd887d0c 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java
@@ -27,6 +27,7 @@ import java.io.IOException;
  * A reader that reads a sequence of bytes. A control byte is read before
  * each run with positive values 0 to 127 meaning 3 to 130 repetitions. If the
  * byte is -1 to -128, 1 to 128 literal byte values follow.
+ * @since 1.1.0
  */
 public class RunLengthByteReader {
   private InStream input;
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java 
b/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java
index ca46959b9..50b2a8369 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java
@@ -25,6 +25,7 @@ import java.util.function.Consumer;
  * A streamFactory that writes a sequence of bytes. A control byte is written 
before
  * each run with positive values 0 to 127 meaning 2 to 129 repetitions. If the
  * bytes is -1 to -128, 1 to 128 literal byte values follow.
+ * @since 1.1.0
  */
 public class RunLengthByteWriter {
   static final int MIN_REPEAT_SIZE = 3;
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java 
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java
index 52970cf91..d7f2ed22f 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java
@@ -26,6 +26,9 @@ import java.io.IOException;
 /**
  * A reader that reads a sequence of integers.
  * */
+/**
+ * @since 1.1.0
+ */
 public class RunLengthIntegerReader implements IntegerReader {
   private InStream input;
   private final boolean signed;
diff --git 
a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java 
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java
index dc625dc5f..6b0266268 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java
@@ -30,6 +30,7 @@ import java.util.Arrays;
  * A reader that reads a sequence of light weight compressed integers. Refer
  * {@link RunLengthIntegerWriterV2} for description of various lightweight
  * compression techniques.
+ * @since 1.1.0
  */
 public class RunLengthIntegerReaderV2 implements IntegerReader {
   public static final Logger LOG = 
LoggerFactory.getLogger(RunLengthIntegerReaderV2.class);
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java 
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java
index d8cc9bb24..e2dcdd8c7 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java
@@ -26,6 +26,7 @@ import java.util.function.Consumer;
  * each run with positive values 0 to 127 meaning 3 to 130 repetitions, each
  * repetition is offset by a delta. If the control byte is -1 to -128, 1 to 128
  * literal vint values follow.
+ * @since 1.1.0
  */
 public class RunLengthIntegerWriter implements IntegerWriter {
   static final int MIN_REPEAT_SIZE = 3;
diff --git 
a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java 
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java
index 65bf884c3..b483902d0 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java
@@ -116,6 +116,7 @@ import java.util.function.Consumer;
  * <li>Delta blob - only positive values. monotonicity and orderness are 
decided
  * based on the sign of the base value and delta base</li>
  * </ul>
+ * @since 1.1.0
  */
 public class RunLengthIntegerWriterV2 implements IntegerWriter {
 
diff --git a/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java 
b/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java
index eacff4b06..d1a88a475 100644
--- a/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java
+++ b/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java
@@ -34,6 +34,7 @@ import java.util.regex.Pattern;
 /**
  * Infer and track the evolution between the schema as stored in the file and
  * the schema that has been requested by the reader.
+ * @since 1.1.0
  */
 public class SchemaEvolution {
   // indexed by reader column id
diff --git a/java/core/src/java/org/apache/orc/impl/SerializationUtils.java 
b/java/core/src/java/org/apache/orc/impl/SerializationUtils.java
index a5824aca6..aec0832d6 100644
--- a/java/core/src/java/org/apache/orc/impl/SerializationUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/SerializationUtils.java
@@ -36,6 +36,9 @@ import java.sql.Date;
 import java.util.Arrays;
 import java.util.TimeZone;
 
+/**
+ * @since 1.1.0
+ */
 public final class SerializationUtils {
   private static final Logger LOG = 
LoggerFactory.getLogger(SerializationUtils.class);
 
diff --git a/java/core/src/java/org/apache/orc/impl/SnappyCodec.java 
b/java/core/src/java/org/apache/orc/impl/SnappyCodec.java
index 2c97e52a9..ea249c9bc 100644
--- a/java/core/src/java/org/apache/orc/impl/SnappyCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/SnappyCodec.java
@@ -25,6 +25,9 @@ import org.apache.orc.CompressionKind;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 1.1.0
+ */
 public class SnappyCodec extends AircompressorCodec
     implements DirectDecompressionCodec{
   private static final HadoopShims SHIMS = HadoopShimsFactory.get();
diff --git a/java/core/src/java/org/apache/orc/impl/StreamName.java 
b/java/core/src/java/org/apache/orc/impl/StreamName.java
index b9c38de10..5d438bcd3 100644
--- a/java/core/src/java/org/apache/orc/impl/StreamName.java
+++ b/java/core/src/java/org/apache/orc/impl/StreamName.java
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
  * The name of a stream within a stripe.
  * <p>
  * Sorted by area, encryption, column, and then kind.
+ * @since 1.1.0
  */
 public class StreamName implements Comparable<StreamName> {
   private final int column;
diff --git 
a/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java 
b/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java
index e6cbb9483..95bfe8931 100644
--- a/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java
+++ b/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java
@@ -29,6 +29,7 @@ import java.nio.ByteBuffer;
  * and an offset for each entry. It is using chaining for collision resolution.
  * <p>
  * This implementation is not thread-safe.
+ * @since 1.7.0
  */
 public class StringHashTableDictionary implements Dictionary {
 
diff --git a/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java 
b/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java
index 5655ebd32..1639fb0d6 100644
--- a/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java
+++ b/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java
@@ -27,6 +27,7 @@ import java.nio.ByteBuffer;
 /**
  * A red-black tree that stores strings. The strings are stored as UTF-8 bytes
  * and an offset for each entry.
+ * @since 1.1.0
  */
 public class StringRedBlackTree extends RedBlackTree implements Dictionary {
   private final DynamicByteArray byteArray = new DynamicByteArray();
diff --git a/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java 
b/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java
index c9f6ee481..ee837d59c 100644
--- a/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java
@@ -25,6 +25,9 @@ import org.apache.orc.TypeDescription;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * @since 1.6.0
+ */
 public class StripeStatisticsImpl extends StripeStatistics  {
   public StripeStatisticsImpl(TypeDescription schema,
                               List<OrcProto.ColumnStatistics> list,
diff --git a/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java 
b/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java
index 67c36825d..6c814fc5a 100644
--- a/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java
@@ -63,6 +63,7 @@ import java.util.function.Consumer;
 
 /**
  * Factory for creating ORC tree readers.
+ * @since 1.1.0
  */
 public class TreeReaderFactory {
   public interface Context {
diff --git a/java/core/src/java/org/apache/orc/impl/TypeUtils.java 
b/java/core/src/java/org/apache/orc/impl/TypeUtils.java
index 40d22e2c4..a88123e13 100644
--- a/java/core/src/java/org/apache/orc/impl/TypeUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/TypeUtils.java
@@ -34,6 +34,9 @@ import org.apache.orc.TypeDescription;
 
 import java.util.List;
 
+/**
+ * @since 1.6.0
+ */
 public class TypeUtils {
   private TypeUtils() {}
 
diff --git a/java/core/src/java/org/apache/orc/impl/Utf8Utils.java 
b/java/core/src/java/org/apache/orc/impl/Utf8Utils.java
index 0e98ccff3..5f1bf89cb 100644
--- a/java/core/src/java/org/apache/orc/impl/Utf8Utils.java
+++ b/java/core/src/java/org/apache/orc/impl/Utf8Utils.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl;
 
 import java.nio.charset.StandardCharsets;
 
+/**
+ * @since 1.6.0
+ */
 public final class Utf8Utils {
 
   public static int charLength(byte[] data, int offset, int length) {
diff --git a/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java 
b/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java
index 425c510e2..c0d4fda30 100644
--- a/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java
@@ -27,6 +27,7 @@ import java.io.OutputStream;
 /**
  * Base implementation for {@link 
org.apache.orc.impl.Dictionary.VisitorContext} used to traversing
  * all nodes in a dictionary.
+ * @since 1.7.0
  */
 public class VisitorContextImpl implements Dictionary.VisitorContext {
   private int originalPosition;
diff --git a/java/core/src/java/org/apache/orc/impl/WriterImpl.java 
b/java/core/src/java/org/apache/orc/impl/WriterImpl.java
index eb85fe9d2..b064d1a0f 100644
--- a/java/core/src/java/org/apache/orc/impl/WriterImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/WriterImpl.java
@@ -80,6 +80,7 @@ import java.util.TreeMap;
  * Caveat: the MemoryManager is created during WriterOptions create, that has
  * to be confined to a single thread as well.
  *
+ * @since 1.1.0
  */
 public class WriterImpl implements WriterInternal, MemoryManager.Callback {
 
diff --git a/java/core/src/java/org/apache/orc/impl/WriterInternal.java 
b/java/core/src/java/org/apache/orc/impl/WriterInternal.java
index 29f5cf5c8..a02a51bed 100644
--- a/java/core/src/java/org/apache/orc/impl/WriterInternal.java
+++ b/java/core/src/java/org/apache/orc/impl/WriterInternal.java
@@ -22,6 +22,7 @@ import org.apache.orc.Writer;
 
 /**
  * The ORC internal API to the writer.
+ * @since 1.5.0
  */
 public interface WriterInternal extends Writer {
 
diff --git a/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java 
b/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java
index f5650053a..e5a94e09a 100644
--- a/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java
@@ -25,6 +25,9 @@ import org.xerial.snappy.Snappy;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 2.3.0
+ */
 public class XerialSnappyCodec implements CompressionCodec, 
DirectDecompressionCodec {
   private static final ThreadLocal<byte[]> threadBuffer = 
ThreadLocal.withInitial(() -> null);
 
diff --git a/java/core/src/java/org/apache/orc/impl/ZlibCodec.java 
b/java/core/src/java/org/apache/orc/impl/ZlibCodec.java
index 428b3e74f..14042736e 100644
--- a/java/core/src/java/org/apache/orc/impl/ZlibCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/ZlibCodec.java
@@ -27,6 +27,9 @@ import java.util.zip.DataFormatException;
 import java.util.zip.Deflater;
 import java.util.zip.Inflater;
 
+/**
+ * @since 1.1.0
+ */
 public class ZlibCodec implements CompressionCodec, DirectDecompressionCodec {
   private static final HadoopShims SHIMS = HadoopShimsFactory.get();
   // Note: shim path does not care about levels and strategies (only used for 
decompression).
diff --git a/java/core/src/java/org/apache/orc/impl/ZstdCodec.java 
b/java/core/src/java/org/apache/orc/impl/ZstdCodec.java
index cf16adfb2..84b411221 100644
--- a/java/core/src/java/org/apache/orc/impl/ZstdCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/ZstdCodec.java
@@ -26,6 +26,9 @@ import org.apache.orc.CompressionKind;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * @since 2.1.0
+ */
 public class ZstdCodec implements CompressionCodec, DirectDecompressionCodec {
   private ZstdOptions zstdOptions = null;
   private ZstdCompressCtx zstdCompressCtx = null;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java 
b/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java
index 02668626a..50ab53c5f 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl.filter;
 
 import org.apache.orc.OrcFilterContext;
 
+/**
+ * @since 1.7.0
+ */
 public class AndFilter implements VectorFilter {
   public final VectorFilter[] filters;
   private final Selected andBound = new Selected();
diff --git a/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java 
b/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java
index 4fceb97b9..06103b86f 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java
@@ -37,6 +37,9 @@ import java.util.List;
 import java.util.ServiceLoader;
 import java.util.Set;
 
+/**
+ * @since 1.7.0
+ */
 public class FilterFactory {
   private static final Logger LOG = 
LoggerFactory.getLogger(FilterFactory.class);
 
diff --git a/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java 
b/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java
index d9828cc5c..312c92710 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl.filter;
 import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
 import org.apache.orc.OrcFilterContext;
 
+/**
+ * @since 1.7.0
+ */
 public class IsNotNullFilter implements VectorFilter {
 
   private final String colName;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java 
b/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java
index 8189ddfe5..4c204495f 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl.filter;
 import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
 import org.apache.orc.OrcFilterContext;
 
+/**
+ * @since 1.7.0
+ */
 public class IsNullFilter implements VectorFilter {
 
   private final String colName;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java 
b/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java
index fc59e5453..72d7c3d03 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl.filter;
 import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
 import org.apache.orc.OrcFilterContext;
 
+/**
+ * @since 1.7.0
+ */
 public abstract class LeafFilter implements VectorFilter {
   public String getColName() {
     return colName;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java 
b/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java
index 5b91f6112..212d97470 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl.filter;
 
 import org.apache.orc.OrcFilterContext;
 
+/**
+ * @since 1.7.0
+ */
 public class OrFilter implements VectorFilter {
 
   public final VectorFilter[] filters;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/Selected.java 
b/java/core/src/java/org/apache/orc/impl/filter/Selected.java
index e237d7f3b..2ae426b0e 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/Selected.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/Selected.java
@@ -22,6 +22,7 @@ import org.apache.orc.OrcFilterContext;
 
 /**
  * Wrapper class for the selected vector that centralizes the convenience 
functions
+ * @since 1.7.0
  */
 public class Selected {
   // Sorted array of row indices
diff --git a/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java 
b/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java
index 90c35133f..67f1e7d67 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java
@@ -26,6 +26,7 @@ import org.apache.orc.OrcFilterContext;
  * <p>
  * This is the interface that is the basis of both the leaf filters such as 
Equals, In and logical
  * filters such as And, Or and Not
+ * @since 1.7.0
  */
 public interface VectorFilter {
 
diff --git 
a/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java 
b/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java
index c97e72cb7..5c1a6c759 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java
@@ -36,6 +36,9 @@ import java.util.stream.Collectors;
 
 import static org.apache.orc.impl.TreeReaderFactory.isDecimalAsLong;
 
+/**
+ * @since 1.7.0
+ */
 public class LeafFilterFactory {
   private LeafFilterFactory() {}
 
diff --git a/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java 
b/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java
index 86621394f..24daaaeba 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java
@@ -24,6 +24,7 @@ import org.apache.orc.DataMask;
 
 /**
  * An identity data mask for decimal types.
+ * @since 1.5.0
  */
 public class DecimalIdentity implements DataMask {
   @Override
diff --git a/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java 
b/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java
index 2660a6ccc..c5b6aa0a0 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java
@@ -24,6 +24,7 @@ import org.apache.orc.DataMask;
 
 /**
  * An identity data mask for floating point types.
+ * @since 1.5.0
  */
 public class DoubleIdentity implements DataMask {
   @Override
diff --git a/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java 
b/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java
index 7ba7594d0..75e07307c 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
 /**
  * A data mask for list types that applies the given masks to its
  * children, but doesn't mask at this level.
+ * @since 1.5.0
  */
 public class ListIdentity implements DataMask {
   private final DataMask child;
diff --git a/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java 
b/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java
index 69a0718fa..b0d7dd2ea 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java
@@ -24,6 +24,7 @@ import org.apache.orc.DataMask;
 
 /**
  * An identity data mask for integer types.
+ * @since 1.5.0
  */
 public class LongIdentity implements DataMask {
   @Override
diff --git a/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java 
b/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java
index d7e9f4729..0d0dc6b13 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
 /**
  * A data mask for map types that applies the given masks to its
  * children, but doesn't mask at this level.
+ * @since 1.5.0
  */
 public class MapIdentity implements DataMask {
   private final DataMask keyMask;
diff --git a/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java 
b/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java
index 6879af50e..e2421921d 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java
@@ -28,6 +28,7 @@ import java.util.List;
  * A mask factory framework that automatically builds a recursive mask.
  * The subclass defines how to mask the primitive types and the factory
  * builds a recursive tree of data masks that matches the schema tree.
+ * @since 1.5.0
  */
 public abstract class MaskFactory {
 
diff --git a/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java 
b/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java
index 9e783d1ed..fa77d159f 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java
@@ -24,6 +24,7 @@ import org.apache.orc.TypeDescription;
 
 /**
  * The Provider for all of the built-in data masks.
+ * @since 1.5.0
  */
 public class MaskProvider implements DataMask.Provider {
 
diff --git a/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java 
b/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java
index 7228a1b00..da0f1a23d 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java
@@ -23,6 +23,7 @@ import org.apache.orc.DataMask;
 
 /**
  * Masking routine that converts every value to NULL.
+ * @since 1.5.0
  */
 public class NullifyMask implements DataMask {
 
diff --git a/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java 
b/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java
index 9851415bb..0c8126f95 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java
@@ -65,6 +65,7 @@ import java.util.concurrent.TimeUnit;
  *     second (0 to 59, default 0)
  * <p>
  * Parameters use "_" for preserve original.
+ * @since 1.5.0
  */
 public class RedactMaskFactory extends MaskFactory {
 
diff --git a/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java 
b/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java
index 819f6df80..a4ec899e1 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java
@@ -59,6 +59,7 @@ import java.util.Arrays;
  * All Binary type of any length will be converted to 32 byte length SHA256
  * hash.
  * </p>
+ * @since 1.5.0
  */
 public class SHA256MaskFactory extends MaskFactory {
 
diff --git a/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java 
b/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java
index 45cd53b54..e3adc470c 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
 /**
  * A data mask for struct types that applies the given masks to its
  * children, but doesn't mask at this level.
+ * @since 1.5.0
  */
 public class StructIdentity implements DataMask {
   private final DataMask[] children;
diff --git a/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java 
b/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java
index 0f17a19a5..40ee57e99 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
 /**
  * A data mask for union types that applies the given masks to its
  * children, but doesn't mask at this level.
+ * @since 1.5.0
  */
 public class UnionIdentity implements DataMask {
   private final DataMask[] children;
diff --git 
a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java 
b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java
index 6262ee457..729751d99 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java
@@ -31,6 +31,9 @@ import java.io.IOException;
 import java.security.SecureRandom;
 import java.util.List;
 
+/**
+ * @since 1.6.0
+ */
 public class ReaderEncryption {
   private final KeyProvider keyProvider;
   private final ReaderEncryptionKey[] keys;
diff --git 
a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java 
b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java
index 8fa7b643c..4eecbb5d9 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java
@@ -30,6 +30,7 @@ import java.util.List;
 
 /**
  * This tracks the keys for reading encrypted columns.
+ * @since 1.6.0
  */
 public class ReaderEncryptionKey implements EncryptionKey {
   private final String name;
diff --git 
a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java 
b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java
index fea647aa0..eed1b0534 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java
@@ -46,6 +46,7 @@ import java.util.Map;
 
 /**
  * Information about an encrypted column.
+ * @since 1.6.0
  */
 public class ReaderEncryptionVariant implements EncryptionVariant {
   private static final Logger LOG =
diff --git a/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java 
b/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java
index 32d71c833..38b524422 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java
@@ -59,6 +59,7 @@ import java.util.Set;
  *   <li>row group selection</li>
  *   <li>encryption</li>
  * </ul>
+ * @since 1.6.0
  */
 public class StripePlanner {
   private static final Logger LOG = 
LoggerFactory.getLogger(StripePlanner.class);
diff --git 
a/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java 
b/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java
index 8d7d685eb..a742ce0db 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java
@@ -27,6 +27,7 @@ import java.io.IOException;
 /**
  * The top level interface that the reader uses to read the columns from the
  * ORC file.
+ * @since 1.7.0
  */
 public abstract class BatchReader {
   // The row type reader
diff --git 
a/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java 
b/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java
index fe285ab33..139e33062 100644
--- 
a/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java
+++ 
b/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java
@@ -24,6 +24,9 @@ import org.apache.orc.impl.reader.StripePlanner;
 
 import java.io.IOException;
 
+/**
+ * @since 1.7.0
+ */
 public class PrimitiveBatchReader extends BatchReader {
 
   public PrimitiveBatchReader(TypeReader rowReader) {
diff --git 
a/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java 
b/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java
index 731e490aa..6c073d44d 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java
@@ -31,6 +31,7 @@ import java.io.IOException;
  * Handles the Struct rootType for batch handling. The handling assumes that 
the root
  * {@link org.apache.orc.impl.TreeReaderFactory.StructTreeReader} no nulls. 
Root Struct vector is
  * not represented as part of the final {@link 
org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch}.
+ * @since 1.7.0
  */
 public class StructBatchReader extends BatchReader {
   // The reader context including row-filtering details
diff --git a/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java 
b/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java
index 3ffb43736..931a9f5d6 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java
@@ -27,6 +27,9 @@ import org.apache.orc.impl.reader.StripePlanner;
 import java.io.IOException;
 import java.util.EnumSet;
 
+/**
+ * @since 1.7.0
+ */
 public interface TypeReader {
   /**
    * Check the encoding of the column.
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java
index f92a4d7ca..ad1ea9397 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
 import java.io.IOException;
 import java.util.function.Consumer;
 
+/**
+ * @since 1.5.0
+ */
 public class BinaryTreeWriter extends TreeWriterBase {
   private final PositionedOutputStream stream;
   private final IntegerWriter length;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java
index aa5fdd841..b968f2e20 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public class BooleanTreeWriter extends TreeWriterBase {
   private final BitFieldWriter writer;
 
diff --git a/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java
index af68052a1..bc9510810 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java
@@ -30,6 +30,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public class ByteTreeWriter extends TreeWriterBase {
   private final RunLengthByteWriter writer;
 
diff --git a/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java
index dec74022f..b8cc6bf09 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java
@@ -29,6 +29,7 @@ import java.util.Arrays;
 
 /**
  * Under the covers, char is written to ORC the same way as string.
+ * @since 1.5.0
  */
 public class CharTreeWriter extends StringBaseTreeWriter {
   private final int maxLength;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java
index 3f1f978aa..b24ab3f65 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public class DateTreeWriter extends TreeWriterBase {
   private final IntegerWriter writer;
   private final boolean isDirectV2;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java
index b47cfcd1b..19db04e4c 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java
@@ -35,6 +35,7 @@ import java.io.IOException;
 
 /**
  * Writer for short decimals in ORCv2.
+ * @since 1.5.0
  */
 public class Decimal64TreeWriter extends TreeWriterBase {
   private final RunLengthIntegerWriterV2 valueWriter;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java
index d257a17b3..df88c0fbf 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java
@@ -36,6 +36,9 @@ import org.apache.orc.impl.StreamName;
 import java.io.IOException;
 import java.util.function.Consumer;
 
+/**
+ * @since 1.5.0
+ */
 public class DecimalTreeWriter extends TreeWriterBase {
   private final PositionedOutputStream valueStream;
   private final SerializationUtils utils = new SerializationUtils();
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java
index 4b50d103a..2fd641213 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public class DoubleTreeWriter extends TreeWriterBase {
   private final PositionedOutputStream stream;
   private final SerializationUtils utils;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java
index 771004098..0b95e92ef 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java
@@ -32,6 +32,7 @@ import java.io.IOException;
  * TreeWriter that handles column encryption.
  * We create a TreeWriter for each of the alternatives with an WriterContext
  * that creates encrypted streams.
+ * @since 1.6.0
  */
 public class EncryptionTreeWriter implements TreeWriter {
   // the different writers
diff --git a/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java
index d17119e25..d86b84c88 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public class FloatTreeWriter extends TreeWriterBase {
   private final PositionedOutputStream stream;
   private final SerializationUtils utils;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java
index 676ca32a9..092d66dd9 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
 import java.io.IOException;
 import java.util.function.Consumer;
 
+/**
+ * @since 2.2.0
+ */
 public class GeospatialTreeWriter extends TreeWriterBase {
   private final PositionedOutputStream stream;
   private final IntegerWriter length;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java
index 7c486e2d8..9669abbc9 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public class IntegerTreeWriter extends TreeWriterBase {
   private final IntegerWriter writer;
   private boolean isDirectV2 = true;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java
index cf8eccfb7..5f30c9db7 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public class ListTreeWriter extends TreeWriterBase {
   private final IntegerWriter lengths;
   private final boolean isDirectV2;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java
index a9dbee49b..0ac6ee77f 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
 import java.io.IOException;
 import java.util.List;
 
+/**
+ * @since 1.5.0
+ */
 public class MapTreeWriter extends TreeWriterBase {
   private final IntegerWriter lengths;
   private final boolean isDirectV2;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java 
b/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java
index 28bb7afaf..7e26c8ef0 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java
@@ -27,6 +27,7 @@ import java.util.function.Consumer;
 
 /**
  * The compression and encryption options for writing a stream.
+ * @since 1.6.0
  */
 public class StreamOptions {
   private CompressionCodec codec;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java
index 1afa6e73e..a08e85c82 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java
@@ -44,6 +44,9 @@ import static org.apache.orc.OrcConf.DICTIONARY_IMPL;
 import static org.apache.orc.impl.Dictionary.INITIAL_DICTIONARY_SIZE;
 
 
+/**
+ * @since 1.5.0
+ */
 public abstract class StringBaseTreeWriter extends TreeWriterBase {
   // Stream for dictionary's key
   private final OutStream stringOutput;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java
index 6f0b8a61c..13c0b6d6b 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java
@@ -25,6 +25,9 @@ import org.apache.orc.TypeDescription;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
+/**
+ * @since 1.5.0
+ */
 public class StringTreeWriter extends StringBaseTreeWriter {
   StringTreeWriter(TypeDescription schema,
                    WriterEncryptionVariant encryption,
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java
index cebcb57eb..44a578327 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java
@@ -28,6 +28,9 @@ import org.apache.orc.TypeDescription;
 import java.io.IOException;
 import java.util.List;
 
+/**
+ * @since 1.5.0
+ */
 public class StructTreeWriter extends TreeWriterBase {
   final TreeWriter[] childrenWriters;
 
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java
index 551d42abe..e94cf84cc 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java
@@ -36,6 +36,9 @@ import java.text.SimpleDateFormat;
 import java.util.TimeZone;
 import java.util.function.Consumer;
 
+/**
+ * @since 1.5.0
+ */
 public class TimestampTreeWriter extends TreeWriterBase {
   public static final int MILLIS_PER_SECOND = 1000;
   public static final String BASE_TIMESTAMP_STRING = "2015-01-01 00:00:00";
diff --git a/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java
index de63f9efb..d94f65cfa 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java
@@ -30,6 +30,7 @@ import java.io.IOException;
 /**
  * The writers for the specific writers of each type. This provides
  * the generic API that they must all implement.
+ * @since 1.5.0
  */
 public interface TreeWriter {
 
diff --git a/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java 
b/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java
index ef93a315a..cfe6962b4 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java
@@ -47,6 +47,7 @@ import java.util.List;
  * is written by an instance of this class. The compound types (struct,
  * list, map, and union) have children tree writers that write the children
  * types.
+ * @since 1.5.0
  */
 public abstract class TreeWriterBase implements TreeWriter {
   protected final int id;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java
index a54ac94c4..07762ff98 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
 import java.io.IOException;
 import java.util.List;
 
+/**
+ * @since 1.5.0
+ */
 public class UnionTreeWriter extends TreeWriterBase {
   private final RunLengthByteWriter tags;
   private final TreeWriter[] childrenWriters;
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java 
b/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java
index 506b55f3a..635df6cbd 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java
@@ -28,6 +28,7 @@ import java.nio.charset.StandardCharsets;
 
 /**
  * Under the covers, varchar is written to ORC the same way as string.
+ * @since 1.5.0
  */
 public class VarcharTreeWriter extends StringBaseTreeWriter {
   private final int maxLength;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java 
b/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java
index c9570fef7..b976d4e0f 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java
@@ -28,6 +28,9 @@ import org.apache.orc.impl.StreamName;
 
 import java.io.IOException;
 
+/**
+ * @since 1.5.0
+ */
 public interface WriterContext {
 
   /**
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java 
b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java
index 947300a8d..5703c6f26 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java
@@ -27,6 +27,9 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+/**
+ * @since 1.6.0
+ */
 public class WriterEncryptionKey implements EncryptionKey {
   private final HadoopShims.KeyMetadata metadata;
   private final List<WriterEncryptionVariant> roots = new ArrayList<>();
diff --git 
a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java 
b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java
index 9f730d4ce..934cf23a0 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java
@@ -28,6 +28,9 @@ import java.security.Key;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * @since 1.6.0
+ */
 public class WriterEncryptionVariant implements EncryptionVariant {
   private int id;
   private final WriterEncryptionKey key;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java 
b/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java
index 41465960c..28fed840d 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java
@@ -45,6 +45,7 @@ import java.io.IOException;
  * Caveat: the MemoryManager is created during WriterOptions create, that has
  * to be confined to a single thread as well.
  *
+ * @since 1.5.0
  */
 public class WriterImplV2 extends WriterImpl {
 
diff --git a/java/core/src/java/org/apache/orc/util/BloomFilter.java 
b/java/core/src/java/org/apache/orc/util/BloomFilter.java
index e5af56f74..e01b16ffe 100644
--- a/java/core/src/java/org/apache/orc/util/BloomFilter.java
+++ b/java/core/src/java/org/apache/orc/util/BloomFilter.java
@@ -42,6 +42,7 @@ import java.util.Arrays;
  * Note that this class is here for backwards compatibility, because it uses
  * the JVM default character set for strings. All new users should
  * BloomFilterUtf8, which always uses UTF8 for the encoding.
+ * @since 1.3.0
  */
 public class BloomFilter {
   public static final double DEFAULT_FPP = 0.05;
diff --git a/java/core/src/java/org/apache/orc/util/BloomFilterIO.java 
b/java/core/src/java/org/apache/orc/util/BloomFilterIO.java
index 700e37793..7b9f89f04 100644
--- a/java/core/src/java/org/apache/orc/util/BloomFilterIO.java
+++ b/java/core/src/java/org/apache/orc/util/BloomFilterIO.java
@@ -26,6 +26,9 @@ import org.apache.orc.TypeDescription;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
+/**
+ * @since 1.3.0
+ */
 public class BloomFilterIO  {
 
   public enum Encoding {
diff --git a/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java 
b/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java
index dba83a7bb..b2d0234cf 100644
--- a/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java
+++ b/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java
@@ -23,6 +23,7 @@ import java.nio.charset.StandardCharsets;
 /**
  * This class represents the fix from ORC-101 where we fixed the bloom filter
  * from using the JVM's default character set to always using UTF-8.
+ * @since 1.3.0
  */
 public class BloomFilterUtf8 extends BloomFilter {
 
diff --git a/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java 
b/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java
index 6af1faa8c..4a6a1d513 100644
--- a/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java
+++ b/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java
@@ -32,6 +32,7 @@ import java.util.Random;
  * Elsevier Science preprint, Dec. 2003. 
https://www.itu.dk/people/pagh/papers/cuckoo-jour.pdf.
  * <p>
  * Copied from CuckooSetBytes@Apache Hive project for convenience
+ * @since 1.7.0
  */
 public class CuckooSetBytes {
   private byte[][] t1;
diff --git a/java/core/src/java/org/apache/orc/util/Murmur3.java 
b/java/core/src/java/org/apache/orc/util/Murmur3.java
index c01855bb8..2dbaf8ce6 100644
--- a/java/core/src/java/org/apache/orc/util/Murmur3.java
+++ b/java/core/src/java/org/apache/orc/util/Murmur3.java
@@ -29,6 +29,7 @@ package org.apache.orc.util;
  * From homepage of MurmurHash (https://code.google.com/p/smhasher/),
  * "All MurmurHash versions are public domain software, and the author 
disclaims all copyright
  * to their code."
+ * @since 1.3.0
  */
 public class Murmur3 {
   // from 64-bit linear congruential generator
diff --git 
a/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java 
b/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java
index d14dbd3a3..5be428e20 100644
--- a/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java
+++ b/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java
@@ -36,6 +36,7 @@ import java.net.URI;
  * This class provides an adaptor so that tools that want to read an ORC
  * file from an FSDataInputStream can do so. Create an instance with the
  * stream, path, and fileSize and pass it in to the reader as the FileSystem.
+ * @since 1.7.0
  */
 public class StreamWrapperFileSystem extends FileSystem {
   private final FSDataInputStream stream;

Reply via email to