blob: ec89e085cedd9dc21f41ca581b84c4d8fa6a932c [file] [log] [blame]
<?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>Migration How-to</title>
<author email="brekke@apache.org">Jeffrey D. Brekke</author>
</properties>
<body>
<section name="Migration How-To">
<p>
This how-to lists the migration steps for moving between versions of Apache Commons Net.
</p>
</section>
<section name="Commons Net 3.x to Commons Net 3.5">
<p>
Version 3.5 is binary compatible with previous 3.x versions and 2.0.
There should be no changes required to existing binary code.
</p>
<p>
Version 3.5 is source compatible with 3.4.
However, version 3.4 is <b>not source compatible</b> with 3.3.
</p>
<p>
The interface NtpV3Packet has been updated to add 3 new methods.
Adding methods to an interface <a href="https://docs.oracle.com/javase/specs/jls/se5.0/html/binaryComp.html#45348">does not affect binary compatibility</a>
The <a href="clirr-report.html">clirr report</a> shows which methods have been added.
(note that the report does not distinguish between source and binary incompatibility)
Code that uses the interface will need to be updated and recompiled.
However code that uses the implementation class NtpV3Impl will continue to work as before.
</p>
</section>
<section name="Commons Net 2.x to Commons Net 3.0">
<p>
Version 3.0 is binary compatible with version 2.0. There should be no changes required to existing binary code.
</p>
<p>
However, version 3.0 is <b>not source compatible</b> with 2.0.
</p>
<p>
Several obsolete/unused constants have been removed.<br/>
(Such changes do not affect binary code, because compilers are required to localise constants).<br/>
The <a href="clirr-report.html">clirr report</a> shows which constants have been removed.
If any source code happens to be using one of these constants, then the source will have to be updated.
</p>
<p>
Also, some throws clauses have been removed from methods which did not actually throw them.<br/>
Throws clauses are not part of method signatures, so do not affect binary compatibility.<br/>
The following public methods no longer throw IOException:
<ul>
<li>TelnetClient#addOptionHandler(TelnetOptionHandler)</li>
<li>TelnetClient#deleteOptionHandler(int)</li>
</ul>
Source code using these methods will need to be updated.
</p>
</section>
<section name="Commons Net 1.4.x to Commons Net 2.0">
<p>
Version 2.0 requires a JDK 5.0+ runtime. It has also been tested on JDK 6.0. There should
be no changes required to existing client code.
</p>
</section>
<section name="NetComponents 1.3.8 to Commons Net 1.x">
<p>
This version is a drop in replacement for NetComponents. Only package names have changed.
</p>
<ol>
<li>Change all occurrences of <tt>com.oroinc.net.*</tt> to <tt>org.apache.commons.net.*</tt></li>
<li>Change all occurrences of <tt>com.oroinc.io.*</tt> to <tt>org.apache.commons.net.io.*</tt></li>
<li>Change all occurrences of <tt>com.oroinc.util.*</tt> to <tt>org.apache.commons.net.util.*</tt></li>
</ol>
</section>
</body>
</document>