<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
 <properties>
  <title>Home</title>
  <author email="dev@commons.apache.org">Commons Documentation Team</author>
 </properties>
<body>
<!-- ================================================== -->
<section name="Commons Lang">

<p>
The standard Java libraries fail to provide enough methods for
manipulation of its core classes. Apache Commons Lang provides
these extra methods.
</p>

<p>
Lang provides a host of helper utilities for the java.lang API, notably
String manipulation methods, basic numerical methods, object reflection, concurrency, creation and serialization
and System properties. Additionally it contains basic enhancements to java.util.Date and a series of utilities dedicated to help with
building methods, such as hashCode, toString and equals.
</p>
<p>
Note that Lang 3.0 (and subsequent versions) use a different package (<em>org.apache.commons.lang3</em>) than the previous versions (<em>org.apache.commons.lang</em>), allowing it to be used at the same time as an earlier version.
</p>
</section>
<!-- ================================================== -->
<section name="Documentation">
<p>
The package descriptions in the <a href="javadocs/api-release/index.html">Javadoc</a> give an overview of the available features
and various <a href="project-reports.html">project reports</a> are provided.
</p>
<p>
The Javadoc API documents are available online:
</p>
<ul>
<li>The <a href="javadocs/api-3.9/index.html">current stable release 3.9</a> [Java 8 and up]</li>
<li>The <a href="javadocs/api-2.6/index.html">legacy release 2.6</a> [Java 1.2 and up]</li>
<li>Older releases - see the <a href="release-history.html">Release History</a> page</li>
</ul>
<p>
The <a href="source-repository.html">git repository</a> can be
<a href="https://git-wip-us.apache.org/repos/asf?p=commons-lang.git">browsed</a>, or you can browse/contribute via <a href="https://github.com/apache/commons-lang">GitHub</a>.
</p>
</section>
<!-- ================================================== -->
<section name="Release Information">
<p>The latest stable release of Lang is 3.9. You may: </p>
<ul>
<li>Download <a href="http://commons.apache.org/lang/download_lang.cgi">3.9</a></li>
<li>Read the <a href="release-notes/RELEASE-NOTES-3.9.txt">3.9 release notes</a></li>
<li>Examine the <a href="article3_0.html">2.x to 3.0 upgrade notes</a></li>
<li>Compare major versions via the <a href="lang2-lang3-clirr-report.html">Lang2 to Lang3 Clirr report</a></li>
</ul>
<p>
Alternatively you can pull it from the central Maven repositories:
<pre>
&lt;dependency&gt;
  &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
  &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt;
  &lt;version&gt;3.9&lt;/version&gt;
&lt;/dependency&gt;
</pre>
</p>

<p>
For information on previous releases see the <a href="release-history.html">Release History</a>, and to download previous releases see the <a href="http://archive.apache.org/dist/commons/lang/">Commons Lang Archive</a>.
</p>
</section>
<!-- ================================================== -->
<section name="Getting Involved">
<p>
The <a href="mail-lists.html">commons developer mailing list</a> is the main channel of communication for contributors. Please remember that the lists are shared between all commons components, so prefix your email by [lang]. </p>
<p>You can also visit the #apache-commons IRC channel on irc.freenode.net or peruse <a href="issue-tracking.html">JIRA</a>. Specific links of interest for JIRA are:</p>
<ul>
<li>Ideas looking for code: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20LANG%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%22Patch%20Needed%22%20ORDER%20BY%20priority%20DESC">Patch Needed</a></li>
<li>Issues with patches, looking for reviews: <a href="https://issues.apache.org/jira/issues/?jql=fixVersion%20%3D%20%22Review%20Patch%22%20AND%20project%20%3D%20LANG%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20priority%20DESC">Review Patch</a></li>
</ul>
<p>Alternatively you can go through the <em>Needs Work</em> tags in the <a href="taglist.html">TagList report</a>.</p>
<p>If you'd like to offer up pull requests via GitHub rather than applying patches to JIRA, we have a <a href="https://github.com/apache/commons-lang/">GitHub mirror</a>. </p>
</section>
<!-- ================================================== -->
<section name="Support">
<p>
The <a href="mail-lists.html">commons mailing lists</a> act as the main support forum.
The user list is suitable for most library usage queries.
The dev list is intended for the development discussion.
Please remember that the lists are shared between all commons components,
so prefix your email by [lang].
</p>
<p>
Bug reports and enhancements are also welcomed via the <a href="issue-tracking.html">JIRA</a> issue tracker.
Please read the instructions carefully.
</p>
</section>
<!-- ================================================== -->
</body>
</document>
