Cleaned up a slew of Javadoc errors in preparation for switch over to Java 8.
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/RouteUpdate.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/RouteUpdate.java
index 68e43dc..35e2eef 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/RouteUpdate.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/RouteUpdate.java
@@ -30,9 +30,10 @@
 
     /**
      * Specifies the type of a route update.
-     * <p/>
+     * <p>
      * Route updates can either provide updated information for a route, or
      * withdraw a previously updated route.
+     * </p>
      */
     public enum Type {
         /**
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
index 79491c5..e4eafb5 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
@@ -439,11 +439,12 @@
 
     /**
      * Processes adding a route entry.
-     * <p/>
+     * <p>
      * Put new route entry into the radix tree. If there was an existing
      * next hop for this prefix, but the next hop was different, then execute
      * deleting old route entry. If the next hop is the SDN domain, we do not
      * handle it at the moment. Otherwise, execute adding a route.
+     * </p>
      *
      * @param routeEntry the route entry to add
      */
@@ -484,11 +485,12 @@
 
     /**
      * Executes adding a route entry.
-     * <p/>
+     * <p>
      * Find out the egress Interface and MAC address of next hop router for
      * this route entry. If the MAC address can not be found in ARP cache,
      * then this prefix will be put in routesWaitingOnArp queue. Otherwise,
      * new route intent will be created and installed.
+     * </p>
      *
      * @param routeEntry the route entry to add
      */
@@ -614,9 +616,10 @@
 
     /**
      * Executes deleting a route entry.
-     * <p/>
+     * <p>
      * Removes prefix from radix tree, and if successful, then try to delete
      * the related intent.
+     * </p>
      *
      * @param routeEntry the route entry to delete
      */
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpRouteEntry.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpRouteEntry.java
index 21e8a88..8d48a27 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpRouteEntry.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpRouteEntry.java
@@ -114,9 +114,10 @@
 
     /**
      * Tests whether the route is originated from the local AS.
-     * <p/>
+     * <p>
      * The route is considered originated from the local AS if the AS Path
      * is empty or if it begins with an AS_SET.
+     * </p>
      *
      * @return true if the route is originated from the local AS, otherwise
      * false
@@ -134,9 +135,10 @@
 
     /**
      * Gets the BGP Neighbor AS number the route was received from.
-     * <p/>
+     * <p>
      * If the router is originated from the local AS, the return value is
      * zero (BGP_AS_0).
+     * </p>
      *
      * @return the BGP Neighbor AS number the route was received from.
      */
@@ -154,9 +156,10 @@
 
     /**
      * Tests whether the AS Path contains a loop.
-     * <p/>
+     * <p>
      * The test is done by comparing whether the AS Path contains the
      * local AS number.
+     * </p>
      *
      * @param localAsNumber the local AS number to compare against
      * @return true if the AS Path contains a loop, otherwise false
@@ -175,9 +178,10 @@
     /**
      * Compares this BGP route against another BGP route by using the
      * BGP Decision Process.
-     * <p/>
+     * <p>
      * NOTE: The comparison needs to be performed only on routes that have
      * same IP Prefix.
+     * </p>
      *
      * @param other the BGP route to compare against
      * @return true if this BGP route is better than the other BGP route
@@ -389,8 +393,9 @@
 
     /**
      * Compares whether two objects are equal.
-     * <p/>
+     * <p>
      * NOTE: The bgpSession field is excluded from the comparison.
+     * </p>
      *
      * @return true if the two objects are equal, otherwise false.
      */
@@ -422,8 +427,9 @@
 
     /**
      * Computes the hash code.
-     * <p/>
+     * <p>
      * NOTE: We return the base class hash code to avoid expensive computation
+     * </p>
      *
      * @return the object hash code
      */
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpSession.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpSession.java
index a6f3329..4151ec3 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpSession.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/bgp/BgpSession.java
@@ -215,11 +215,11 @@
 
     /**
      * Tests whether the session is closed.
-     * <p/>
+     * <p>
      * NOTE: We use this method to avoid the Netty's asynchronous closing
      * of a channel.
-     *
-     * @param return true if the session is closed
+     * </p>
+     * @return true if the session is closed
      */
     boolean isClosed() {
         return isClosed;
@@ -1641,7 +1641,7 @@
      * @param errorCode the BGP NOTIFICATION Error Code
      * @param errorSubcode the BGP NOTIFICATION Error Subcode if applicable,
      * otherwise BgpConstants.Notifications.ERROR_SUBCODE_UNSPECIFIC
-     * @param payload the BGP NOTIFICATION Data if applicable, otherwise null
+     * @param data the BGP NOTIFICATION Data if applicable, otherwise null
      * @return the message to transmit (BGP header included)
      */
     ChannelBuffer prepareBgpNotification(int errorCode, int errorSubcode,
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/BgpSpeaker.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/BgpSpeaker.java
index 3835600..4e79672 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/BgpSpeaker.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/BgpSpeaker.java
@@ -29,15 +29,17 @@
 
 /**
  * Represents a BGP daemon in SDN network.
- * <p/>
+ * <p>
  * Each BGP speaker has a attachment point, which includes a switch DPID and a
  * switch port. Each BGP speaker has one MAC address and several IP addresses,
  * which are used to peer with BGP peers outside the SDN network. For each
  * peer outside the SDN network, we configure a different IP address to BGP
  * speaker inside the SDN network.
- * <p/>
+ * </p>
+ * <p>
  * Each BGP speaker has a name, which is a unique identifying String that is
  * used to reference this speaker in the configuration.
+ * </p>
  */
 public class BgpSpeaker {
     private final String name;
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/InterfaceAddress.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/InterfaceAddress.java
index 588b03c..f50c85f 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/InterfaceAddress.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/InterfaceAddress.java
@@ -28,8 +28,9 @@
 /**
  * Represents an address of a {@link BgpSpeaker} configured on an
  * {@link Interface}.
- * <p/>
+ * <p>
  * Each InterfaceAddress includes the interface name and an IP address.
+ * </p>
  */
 public class InterfaceAddress {
     private final ConnectPoint connectPoint;
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
index ff697e3..cde65c6 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
@@ -27,14 +27,12 @@
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+// TODO: As a long term solution, a module providing general network configuration to ONOS nodes should be used.
+
 /**
- * SDN-IP Config Reader provides IConfigInfoService
- * by reading from an SDN-IP configuration file.
- * It must be enabled on the nodes within the cluster
+ * SDN-IP Config Reader provides IConfigInfoService by reading from an
+ * SDN-IP configuration file. It must be enabled on the nodes within the cluster
  * not running SDN-IP.
- * <p/>
- * TODO: As a long term solution, a module providing
- * general network configuration to ONOS nodes should be used.
  */
 public class SdnIpConfigReader implements SdnIpConfigService {
 
@@ -85,7 +83,7 @@
         }*/
     }
 
-    /**
+    /*
      * To find the Interface which has longest matchable IP prefix (sub-network
      *  prefix) to next hop IP address.
      *
diff --git a/core/api/src/main/java/org/onlab/onos/mastership/MastershipEvent.java b/core/api/src/main/java/org/onlab/onos/mastership/MastershipEvent.java
index 1aecfb4..dafa273 100644
--- a/core/api/src/main/java/org/onlab/onos/mastership/MastershipEvent.java
+++ b/core/api/src/main/java/org/onlab/onos/mastership/MastershipEvent.java
@@ -51,7 +51,7 @@
      *
      * @param type   device event type
      * @param device event device subject
-     * @param info mastership role information subject
+     * @param info   mastership role information subject
      */
     public MastershipEvent(Type type, DeviceId device, RoleInfo info) {
         super(type, device);
@@ -64,7 +64,7 @@
      *
      * @param type   mastership event type
      * @param device event device subject
-     * @param master master ID subject
+     * @param info   role information
      * @param time   occurrence time
      */
     public MastershipEvent(Type type, DeviceId device, RoleInfo info, long time) {
diff --git a/core/api/src/main/java/org/onlab/onos/net/SparseAnnotations.java b/core/api/src/main/java/org/onlab/onos/net/SparseAnnotations.java
index abe6cd1..6487d96 100644
--- a/core/api/src/main/java/org/onlab/onos/net/SparseAnnotations.java
+++ b/core/api/src/main/java/org/onlab/onos/net/SparseAnnotations.java
@@ -25,8 +25,9 @@
 
     /**
      * {@inheritDoc}
-     * <p/>
+     * <p>
      * Note that this set includes keys for any attributes tagged for removal.
+     * </p>
      */
     @Override
     public Set<String> keys();
diff --git a/core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
index 57d9ebf..f1667db 100644
--- a/core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
@@ -46,7 +46,6 @@
     /**
      * Sends information about all ports of a device. It is up to the core to
      * determine what has changed.
-     * <p/>
      *
      * @param deviceId         identity of the device
      * @param portDescriptions list of device ports
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
index ab7c230..c0b3986 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
@@ -97,7 +97,7 @@
 
     /**
      * Builds a list of treatments following the following order.
-     * Modifications -> Group -> Output (including drop)
+     * Modifications -&gt; Group -&gt; Output (including drop)
      */
     public static final class Builder implements TrafficTreatment.Builder {
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
index b1bda15..2f2dd5e 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
@@ -27,7 +27,7 @@
     /**
      * Signals that a flow rule that was previously installed has been removed.
      *
-     * @param flowRule information about the removed flow
+     * @param flowEntry removed flow entry
      */
     void flowRemoved(FlowEntry flowEntry);
 
@@ -35,10 +35,8 @@
      * Pushes the collection of flow entries currently applied on the given
      * device.
      *
-     * @param flowRules collection of flow rules
+     * @param flowEntries collection of flow rules
      */
     void pushFlowMetrics(DeviceId deviceId, Iterable<FlowEntry> flowEntries);
 
-
-
 }
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleStore.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleStore.java
index 8a887d0..958dc91 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleStore.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleStore.java
@@ -49,7 +49,7 @@
     Iterable<FlowEntry> getFlowEntries(DeviceId deviceId);
 
     /**
-     // TODO: Better description of method behavior.
+     * // TODO: Better description of method behavior.
      * Stores a new flow rule without generating events.
      *
      * @param rule the flow rule to add
@@ -58,15 +58,17 @@
 
     /**
      * Stores a batch of flow rules.
+     *
      * @param batchOperation batch of flow rules.
      * @return Future response indicating success/failure of the batch operation
-     *     all the way down to the device.
+     * all the way down to the device.
      */
     Future<CompletedBatchOperation> storeBatch(FlowRuleBatchOperation batchOperation);
 
     /**
      * Invoked on the completion of a storeBatch operation.
-     * @param result
+     *
+     * @param event flow rule batch event
      */
     void batchOperationComplete(FlowRuleBatchEvent event);
 
@@ -75,7 +77,6 @@
      * when the provider indicates that the flow has been removed.
      *
      * @param rule the flow rule to delete
-     * @return true if the rule should be handled locally
      */
     void deleteFlowRule(FlowRule rule);
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/host/HostAdminService.java b/core/api/src/main/java/org/onlab/onos/net/host/HostAdminService.java
index 5232b98..f421fd8 100644
--- a/core/api/src/main/java/org/onlab/onos/net/host/HostAdminService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostAdminService.java
@@ -32,12 +32,13 @@
 
     /**
      * Binds IP and MAC addresses to the given connection point.
-     * <p/>
+     * <p>
      * The addresses are added to the set of addresses already bound to the
      * connection point. If any of the fields in addresses is null, no change
      * is made to the corresponding addresses in the store.
      * {@link #unbindAddressesFromPort(PortAddresses)} must be use to unbind
      * addresses that have previously been bound.
+     * </p>
      *
      * @param addresses address object containing addresses to add and the port
      * to add them to
diff --git a/core/api/src/main/java/org/onlab/onos/net/host/HostService.java b/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
index 66a2ccf..aa31459 100644
--- a/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
@@ -114,9 +114,7 @@
 
     /**
      * Requests the host service to resolve the MAC address for the given IP
-     * address.
-     * <p/>
-     * This will trigger a notification to the host listeners if the MAC
+     * address. This will trigger a notification to the host listeners if the MAC
      * address is found.
      *
      * @param ip IP address to find the MAC address for
@@ -134,8 +132,7 @@
      * Retrieves the addresses that have been bound to the given connection
      * point.
      *
-     * @param connectPoint the connection point to retrieve address bindings
-     * for
+     * @param connectPoint the connection point to retrieve address bindings for
      * @return addresses bound to the port
      */
     PortAddresses getAddressBindingsForPort(ConnectPoint connectPoint);
diff --git a/core/api/src/main/java/org/onlab/onos/net/host/PortAddresses.java b/core/api/src/main/java/org/onlab/onos/net/host/PortAddresses.java
index deaea5e..5e17e6c 100644
--- a/core/api/src/main/java/org/onlab/onos/net/host/PortAddresses.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/PortAddresses.java
@@ -36,9 +36,8 @@
 
     /**
      * Constructs a PortAddresses object for the given connection point, with a
-     * set of IP addresses and a MAC address.
-     * <p/>
-     * Both address parameters are optional and can be set to null.
+     * set of IP addresses and a MAC address. Both address parameters are
+     * optional and can be set to null.
      *
      * @param connectPoint the connection point these addresses are for
      * @param ipAddresses a set of interface IP addresses
diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/Intent.java b/core/api/src/main/java/org/onlab/onos/net/intent/Intent.java
index 92161f4..206552e 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/Intent.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/Intent.java
@@ -26,8 +26,9 @@
 
 /**
  * Abstraction of an application level intent.
- * <p/>
+ * <p>
  * Make sure that an Intent should be immutable when a new type is defined.
+ * </p>
  */
 public abstract class Intent implements BatchOperationTarget {
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java b/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java
index cd75e6f..8c75397 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java
@@ -19,8 +19,7 @@
 
 /**
  * Intent identifier suitable as an external key.
- * <p/>
- * This class is immutable.
+ * <p>This class is immutable.</p>
  */
 public final class IntentId implements BatchOperationTarget {
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/IntentService.java b/core/api/src/main/java/org/onlab/onos/net/intent/IntentService.java
index 5e5ac31..9cffb11 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/IntentService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/IntentService.java
@@ -25,20 +25,20 @@
 public interface IntentService {
     /**
      * Submits an intent into the system.
-     * <p/>
+     * <p>
      * This is an asynchronous request meaning that any compiling or
      * installation activities may be done at later time.
-     *
+     * </p>
      * @param intent intent to be submitted
      */
     void submit(Intent intent);
 
     /**
      * Withdraws an intent from the system.
-     * <p/>
+     * <p>
      * This is an asynchronous request meaning that the environment may be
      * affected at later time.
-     *
+     * </p>
      * @param intent intent to be withdrawn
      */
     void withdraw(Intent intent);
@@ -54,10 +54,10 @@
     /**
      * Submits a batch of submit &amp; withdraw operations. Such a batch is
      * assumed to be processed together.
-     * <p/>
+     * <p>
      * This is an asynchronous request meaning that the environment may be
      * affected at later time.
-     *
+     * </p>
      * @param operations batch of intent operations
      */
     Future<IntentOperations> execute(IntentOperations operations);
diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/IntentState.java b/core/api/src/main/java/org/onlab/onos/net/intent/IntentState.java
index 0050718..3fbe82d 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/IntentState.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/IntentState.java
@@ -24,8 +24,9 @@
      * Signifies that the intent has been submitted and will start compiling
      * shortly. However, this compilation may not necessarily occur on the
      * local controller instance.
-     * <p/>
+     * <p>
      * All intent in the runtime take this state first.
+     * </p>
      */
     SUBMITTED,
 
@@ -57,10 +58,11 @@
      * as an attempt to adapt to an anomaly in the network environment.
      * This is a transitional state after which the intent will enter either
      * {@link #FAILED} state or {@link #INSTALLING} state.
-     * <p/>
+     * <p>
      * Exit to the {@link #FAILED} state may be caused by failure to compile
      * or by compiling into the same set of installable intents which have
      * previously failed to be installed.
+     * </p>
      */
     RECOMPILING,
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/OpticalConnectivityIntent.java b/core/api/src/main/java/org/onlab/onos/net/intent/OpticalConnectivityIntent.java
index 46f5f9a..fdb8668e 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/OpticalConnectivityIntent.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/OpticalConnectivityIntent.java
@@ -28,11 +28,12 @@
     protected ConnectPoint dst;
 
     /**
-     * Constructor.
+     * Creates an optical connectivity intent between the specified
+     * connection points.
      *
-     * @param id  ID for this new Intent object.
-     * @param src The source transponder port.
-     * @param dst The destination transponder port.
+     * @param appId application identification
+     * @param src the source transponder port
+     * @param dst the destination transponder port
      */
     public OpticalConnectivityIntent(ApplicationId appId, ConnectPoint src, ConnectPoint dst) {
         super(id(OpticalConnectivityIntent.class, src, dst),
@@ -51,18 +52,18 @@
     }
 
     /**
-     * Gets source transponder port.
+     * Returns the source transponder port.
      *
-     * @return The source transponder port.
+     * @return source transponder port
      */
     public ConnectPoint getSrcConnectPoint() {
         return src;
     }
 
     /**
-     * Gets destination transponder port.
+     * Returns the destination transponder port.
      *
-     * @return The source transponder port.
+     * @return source transponder port
      */
     public ConnectPoint getDst() {
         return dst;
diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/package-info.java b/core/api/src/main/java/org/onlab/onos/net/intent/package-info.java
index 1bac21d..03d4807 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/package-info.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/package-info.java
@@ -20,23 +20,26 @@
  * <em>what</em> rather than the <em>how</em>. This makes such instructions
  * largely independent of topology and device specifics, thus allowing them to
  * survive topology mutations.
- * <p/>
+ * <p>
  * The controller core provides a suite of built-in intents and their compilers
  * and installers. However, the intent framework is extensible in that it allows
  * additional intents and their compilers or installers to be added
  * dynamically at run-time. This allows others to enhance the initial arsenal of
  * connectivity and policy-based intents available in base controller software.
- * <p/>
+ * </p>
+ * <p>
  * The following diagram depicts the state transition diagram for each top-level intent:<br>
  * <img src="doc-files/intent-states.png" alt="ONOS intent states">
- * <p/>
+ * </p>
+ * <p>
  * The controller core accepts the intent specifications and translates them, via a
  * process referred to as intent compilation, to installable intents, which are
  * essentially actionable operations on the network environment.
  * These actions are carried out by intent installation process, which results
  * in some changes to the environment, e.g. tunnel links being provisioned,
  * flow rules being installed on the data-plane, optical lambdas being reserved.
- * <p/>
+ * </p>
+ * <p>
  * After an intent is submitted by an application, it will be sent immediately
  * (but asynchronously) into a compiling phase, then to installing phase and if
  * all goes according to plan into installed state. Once an application decides
@@ -48,7 +51,8 @@
  * installable intents and instead result in a failed compile. If this occurs,
  * only a change in the environment can trigger a transition back to the
  * compiling state.
- * <p/>
+ * </p>
+ * <p>
  * Similarly, an issue may be encountered during the installation phase in
  * which case the framework will attempt to recompile the intent to see if an
  * alternate approach is available. If so, the intent will be sent back to
@@ -61,12 +65,14 @@
  * the intent, and if an alternate approach is available, its installation
  * will be attempted. Otherwise, the original top-level intent will be parked
  * in the failed state.
- * <p/>
+ * </p>
+ * <p>
  * Please note that all *ing states, depicted in orange, are transitional and
  * are expected to last only a brief amount of time. The rest of the states
  * are parking states where the intent may spent some time; except for the
  * submitted state of course. There, the intent may pause, but only briefly,
  * while the system determines where to perform the compilation or while it
  * performs global recomputation/optimization across all prior intents.
+ * </p>
  */
 package org.onlab.onos.net.intent;
diff --git a/core/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java b/core/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java
index e35d044..62207d9 100644
--- a/core/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java
+++ b/core/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java
@@ -24,14 +24,16 @@
  * External identity of a {@link org.onlab.onos.net.provider.Provider} family.
  * It also carriers two designations of external characteristics, the URI
  * scheme and primary/ancillary indicator.
- * <p/>
+ * <p>
  * The device URI scheme is used to determine applicability of a provider to
  * operations on a specific device. The ancillary indicator serves to designate
  * a provider as a primary or ancillary.
- *
+ * </p>
+ * <p>
  * A {@link org.onlab.onos.net.provider.ProviderRegistry} uses this designation
  * to permit only one primary provider per device URI scheme. Multiple
  * ancillary providers can register with the same device URI scheme however.
+ * </p>
  */
 public class ProviderId {
 
@@ -56,8 +58,8 @@
      * The providers are expected to follow the reverse DNS convention, e.g.
      * {@code org.onlab.onos.provider.of.device}
      *
-     * @param scheme    device URI scheme to which this provider is bound, e.g. "of", "snmp"
-     * @param id        string identifier
+     * @param scheme device URI scheme to which this provider is bound, e.g. "of", "snmp"
+     * @param id     string identifier
      */
     public ProviderId(String scheme, String id) {
         this(scheme, id, false);
@@ -68,8 +70,8 @@
      * The providers are expected to follow the reverse DNS convention, e.g.
      * {@code org.onlab.onos.provider.of.device}
      *
-     * @param scheme device URI scheme to which this provider is bound, e.g. "of", "snmp"
-     * @param id     string identifier
+     * @param scheme    device URI scheme to which this provider is bound, e.g. "of", "snmp"
+     * @param id        string identifier
      * @param ancillary ancillary provider indicator
      */
     public ProviderId(String scheme, String id, boolean ancillary) {
diff --git a/core/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
index a2497f0..8cab8a8 100644
--- a/core/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
+++ b/core/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
@@ -38,9 +38,10 @@
      * Unregisters the supplied provider. As a result the previously issued
      * provider service will be invalidated and any subsequent invocations
      * of its methods may throw {@link java.lang.IllegalStateException}.
-     * <p/>
+     * <p>
      * Unregistering a provider that has not been previously registered results
      * in a no-op.
+     * </p>
      *
      * @param provider provider to be unregistered
      */
diff --git a/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java b/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java
index 4b12931..f28dcdb 100644
--- a/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java
+++ b/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java
@@ -51,10 +51,11 @@
 
 /**
  * Monitors hosts on the dataplane to detect changes in host data.
- * <p/>
+ * <p>
  * The HostMonitor can monitor hosts that have already been detected for
  * changes. At an application's request, it can also monitor and actively
  * probe for hosts that have not yet been detected (specified by IP address).
+ * </p>
  */
 public class HostMonitor implements TimerTask {
     private DeviceService deviceService;
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/hz/SMap.java b/core/store/dist/src/main/java/org/onlab/onos/store/hz/SMap.java
index a4badcf..135312d 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/hz/SMap.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/hz/SMap.java
@@ -49,8 +49,8 @@
 
 // TODO: implement Predicate, etc. if we need them.
 /**
- * Wrapper around IMap<byte[], byte[]> which serializes/deserializes
- * Key and Value using StoreSerializer.
+ * Wrapper around IMap&lt;byte[], byte[]&gt; which serializes/deserializes
+ * key and value using StoreSerializer.
  *
  * @param <K> key type
  * @param <V> value type
diff --git a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowSwitchDriver.java b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowSwitchDriver.java
index 4daeecc..2647fed 100644
--- a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowSwitchDriver.java
+++ b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowSwitchDriver.java
@@ -71,7 +71,7 @@
     public void handleNiciraRole(OFMessage m) throws SwitchStateException;
 
     /**
-     * Handle OF 1.x (where x > 0) role messages.
+     * Handle OF 1.x (where x &gt; 0) role messages.
      * @param m the role message to handle
      * @throws SwitchStateException if the message received was
      *  not a nicira role or was malformed.
diff --git a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java
index 767c605..8dbff60 100644
--- a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java
+++ b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OFChannelHandler.java
@@ -747,8 +747,8 @@
          * the changes to ports will already be visible once the switch is
          * activated. As a result, no notifications are sent out for these
          * pending portStatus messages.
-         * @param h
-         * @throws SwitchStateException
+         *
+         * @param h the channel handler that received the message
          */
         protected void handlePendingPortStatusMessages(OFChannelHandler h) {
             try {
diff --git a/providers/lldp/src/main/java/org/onlab/onos/provider/lldp/impl/LinkDiscovery.java b/providers/lldp/src/main/java/org/onlab/onos/provider/lldp/impl/LinkDiscovery.java
index ce6d4fb..a20ab90 100644
--- a/providers/lldp/src/main/java/org/onlab/onos/provider/lldp/impl/LinkDiscovery.java
+++ b/providers/lldp/src/main/java/org/onlab/onos/provider/lldp/impl/LinkDiscovery.java
@@ -52,15 +52,14 @@
 import org.onlab.util.Timer;
 import org.slf4j.Logger;
 
+// TODO: add 'fast discovery' mode: drop LLDPs in destination switch but listen for flow_removed messages
+
 /**
  * Run discovery process from a physical switch. Ports are initially labeled as
  * slow ports. When an LLDP is successfully received, label the remote port as
  * fast. Every probeRate milliseconds, loop over all fast ports and send an
  * LLDP, send an LLDP for a single slow port. Based on FlowVisor topology
  * discovery implementation.
- * <p/>
- * TODO: add 'fast discovery' mode: drop LLDPs in destination switch but listen
- * for flow_removed messages
  */
 public class LinkDiscovery implements TimerTask {
 
diff --git a/providers/openflow/link/src/main/java/org/onlab/onos/provider/of/link/impl/LinkDiscovery.java b/providers/openflow/link/src/main/java/org/onlab/onos/provider/of/link/impl/LinkDiscovery.java
index 0c84aee..02176cc 100644
--- a/providers/openflow/link/src/main/java/org/onlab/onos/provider/of/link/impl/LinkDiscovery.java
+++ b/providers/openflow/link/src/main/java/org/onlab/onos/provider/of/link/impl/LinkDiscovery.java
@@ -62,9 +62,6 @@
  * fast. Every probeRate milliseconds, loop over all fast ports and send an
  * LLDP, send an LLDP for a single slow port. Based on FlowVisor topology
  * discovery implementation.
- *
- * TODO: add 'fast discovery' mode: drop LLDPs in destination switch but listen
- * for flow_removed messages
  */
 @Deprecated
 public class LinkDiscovery implements TimerTask {
@@ -331,7 +328,6 @@
      * port.
      *
      * @param t timeout
-     * @throws Exception
      */
     @Override
     public void run(final Timeout t) {
diff --git a/tools/package/bin/onos b/tools/package/bin/onos
index bd5059f..c94304e 100755
--- a/tools/package/bin/onos
+++ b/tools/package/bin/onos
@@ -6,4 +6,4 @@
 export JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-openjdk-amd64/}
 
 cd $(dirname $0)/../apache-karaf-$KARAF_VERSION/bin
-./client -h localhost "$@"
+./client -h localhost -u karaf "$@"
diff --git a/tools/package/bin/onos-service b/tools/package/bin/onos-service
index 299cb9a..9250d5b 100755
--- a/tools/package/bin/onos-service
+++ b/tools/package/bin/onos-service
@@ -4,7 +4,7 @@
 # -----------------------------------------------------------------------------
 
 export JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-openjdk-amd64/}
-export JAVA_OPTS="-Xms256M -Xmx2048M"
+export JAVA_OPTS="${JAVA_OPTS:--Xms256M -Xmx2048M}"
 
 cd /opt/onos
 /opt/onos/apache-karaf-$KARAF_VERSION/bin/karaf "$@"
diff --git a/tools/package/debian/onos.conf b/tools/package/debian/onos.conf
index 842a937..1d8f10a 100644
--- a/tools/package/debian/onos.conf
+++ b/tools/package/debian/onos.conf
@@ -12,6 +12,7 @@
 
 env LANG=en_US.UTF-8
 env JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
+env NEW_JAVA_HOME=/usr/lib/jvm/java-8-oracle/
 
 pre-stop script
     /opt/onos/bin/onos halt 2>/opt/onos/var/stderr.log
diff --git a/tools/test/bin/onos b/tools/test/bin/onos
index 5bd5de6..653b7f3c 100755
--- a/tools/test/bin/onos
+++ b/tools/test/bin/onos
@@ -9,4 +9,4 @@
 [ "$1" = "-w" ] && shift && onos-wait-for-start $1
 
 [ -n "$1" ] && OCI=$1 && shift
-client -h $OCI "$@" 2>/dev/null
+client -h $OCI -u karaf "$@" 2>/dev/null
diff --git a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
index 487fb5b..33be226 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
@@ -76,10 +76,10 @@
     /**
      * Converts a byte array and a given offset from the beginning of the
      * array into an IP address.
-     * <p/>
+     * <p>
      * The IP address is stored in network byte order (i.e., the most
      * significant byte first).
-     *
+     * </p>
      * @param value the value to use
      * @param offset the offset in bytes from the beginning of the byte array
      * @return an IP address
diff --git a/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java b/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
index f15946a..180b771 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
@@ -17,13 +17,15 @@
 
 import java.util.Objects;
 
+// TODO: Add support for IPv6 as well.
+
 /**
- * A class representing an IP prefix.
- * TODO: Add support for IPv6 as well.
- * <p/>
- * A prefix consists of an IP address and a subnet mask.
+ * A class representing an IP prefix. A prefix consists of an IP address and
+ * a subnet mask.
+ * <p>
  * NOTE: The stored IP address in the result IP prefix is masked to
  * contain zeroes in all bits after the prefix length.
+ * </p>
  */
 public final class IpPrefix {
     // Maximum network mask length
@@ -97,7 +99,7 @@
      * Converts a CIDR (slash) notation string (e.g., "10.1.0.0/16") into an
      * IP prefix.
      *
-     * @param value an IP prefix in string form, e.g. "10.1.0.0/16"
+     * @param address an IP prefix in string form, e.g. "10.1.0.0/16"
      * @return an IP prefix
      */
     public static IpPrefix valueOf(String address) {
diff --git a/utils/misc/src/main/java/org/onlab/util/NewConcurrentHashMap.java b/utils/misc/src/main/java/org/onlab/util/NewConcurrentHashMap.java
index 3b44ad4..2d222ea 100644
--- a/utils/misc/src/main/java/org/onlab/util/NewConcurrentHashMap.java
+++ b/utils/misc/src/main/java/org/onlab/util/NewConcurrentHashMap.java
@@ -24,8 +24,8 @@
  * Creates an instance of new ConcurrentHashMap on each {@link #get()} call.
  * <p>
  * To be used with
- * {@link org.apache.commons.lang3.concurrent.ConcurrentUtils#createIfAbsent()
- *  ConcurrentUtils#createIfAbsent}
+ * {@link org.apache.commons.lang3.concurrent.ConcurrentUtils#createIfAbsent}
+ * </p>
  *
  * @param <K> ConcurrentHashMap key type
  * @param <V> ConcurrentHashMap value type
diff --git a/utils/netty/src/main/java/org/onlab/netty/MessageHandler.java b/utils/netty/src/main/java/org/onlab/netty/MessageHandler.java
index fe91fb2..a87d8fc 100644
--- a/utils/netty/src/main/java/org/onlab/netty/MessageHandler.java
+++ b/utils/netty/src/main/java/org/onlab/netty/MessageHandler.java
@@ -24,8 +24,9 @@
 
     /**
      * Handles the message.
+     *
      * @param message message.
-     * @throws IOException.
+     * @throws IOException if an error is encountered handling the message
      */
     public void handle(Message message) throws IOException;
 }
diff --git a/utils/nio/src/main/java/org/onlab/nio/MessageStream.java b/utils/nio/src/main/java/org/onlab/nio/MessageStream.java
index 302b049..a19e8aa 100644
--- a/utils/nio/src/main/java/org/onlab/nio/MessageStream.java
+++ b/utils/nio/src/main/java/org/onlab/nio/MessageStream.java
@@ -318,10 +318,10 @@
      * Attempts to flush data, internal stream state and channel availability
      * permitting. Invoked by the driver I/O loop during handling of writable
      * selection key.
-     * <p/>
+     * <p>
      * Resets the internal state flags {@code writeOccurred} and
      * {@code writePending}.
-     *
+     * </p>
      * @throws IOException if implicit flush failed
      */
     void flushIfPossible() throws IOException {