<?xml version="1.0" encoding="latin1" ?>
<!DOCTYPE chapter SYSTEM "chapter.dtd">

<chapter>
  <header>
    <copyright>
      <year>2006</year><year>2009</year>
      <holder>Ericsson AB. All Rights Reserved.</holder>
    </copyright>
    <legalnotice>
      The contents of this file are subject to the Erlang Public License,
      Version 1.1, (the "License"); you may not use this file except in
      compliance with the License. You should have received a copy of the
      Erlang Public License along with this software. If not, it can be
      retrieved online at http://www.erlang.org/.
    
      Software distributed under the License is distributed on an "AS IS"
      basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
      the License for the specific language governing rights and limitations
      under the License.
    
    </legalnotice>

    <title>Jinteface Release Notes History</title>
    <prepared></prepared>
    <docno></docno>
    <date></date>
    <rev></rev>
  </header>

  <section>
    <title>Jinterface 1.2.1</title>

    <section>
      <title>Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>A bug on the constructor for OtpNode which caused 
            NullPointerException, is fixed.</p>
          <p>Own Id: OTP-3721</p>
        </item>
      </list>
    </section>
  </section>

  <section>
    <title>Jinterface 1.2</title>

    <section>
      <title>Improvements and New features</title>
      <list type="bulleted">
        <item>
          <p>A new class, AbstractConnection, has been added to deal
            with most of the aspects of the Erlang communication
            protocol, and which can be subclassed in order to provide
            different levels of support to the application as necessary.
            OtpConnection is now a subclass to AbstractConnection.</p>
        </item>
        <item>
          <p>OtpCookedConnection is a new subclass to
            AbstractConnection, which together with OtpNode provides an
            intuitive mailbox-based communication mechanism. By using
            this interface, applications are no longer required to
            manage connections explicitly, since the OtpNode now opens
            and manages connections to remote nodes as needed. Outgoing
            messages are sent through mailboxes and automatically
            dispatched through the correct connections to
            the destination node, while incoming messages are queued in
            the destination mailbox. This allows parts of an
            application to communicate with several peers
            simultaneously without the need to sort and dispatch
            incoming messages. Additionally, mailboxes can be linked
            with Erlang processes or with each other, in much the same
            manner that Erlang processes can be linked together.</p>
        </item>
      </list>
    </section>

    <section>
      <title>Changes and additions</title>
      <list type="bulleted">
        <item>
          <p>The node class hierarchy has changed. The top class
            is now AbstractNode, and direct subclasses are OtpPeer and
            OtpLocalNode, of which the latter is extended by OtpNode and
            OtpSelf. This does not change the functionality of any of
            the existing classes or methods that take node arguments,
            however it was necessary in order to group OtpNode and
            OtpSelf and to provide some common methods for them.</p>
        </item>
        <item>
          <p>OtpServer is now deprecated. Its functionality has
            been added to OtpSelf.</p>
        </item>
        <item>
          <p>An open OtpConnection no longer requires service on
            a regular basis in order to keep the remote Erlang node from
            disconnecting. OtpConnection now extends java.lang.Thread so
            it can keep the connection open and respond to ticks when
            needed, without intervention from the application. Incoming
            messages are automatically received and queued for
            subsequent retrieval through one of the receive methods.</p>
        </item>
        <item>
          <p>Tracing of inter-node communication can now be set
            on a per-connection basis. The system property
            OtpConnection. Trace is still used as before, but now sets
            only the initial trace level for new connections. Once a
            connection has been created, its current trace level can be
            set or retrieved through new methods setTraceLevel and
            getTraceLevel.</p>
        </item>
        <item>
          <p>Constructors for OtpErlangAtom and OtpErlangTuple
            previously declared that OtpErlangDataException would be
            thrown for certain types of input. These constructors now
            throw java.lang.IllegalArgumentException instead, which is
            a runtime exception and is therefore not declared
            explicitly, nor is it necessary for the caller to
            explicitly catch it. The rules for creating atoms and
            tuples have not changed however.</p>
        </item>
        <item>
          <p>Some of the constructors for OtpErlangPid, OtpErlangPort
            and OtpErlangRef are now deprecated. The various
            OtpNode classes provide factory methods instead.</p>
        </item>
        <item>
          <p>OtpErlangObject and all subclasses representing
            Erlang data types now implement java.io.Serializable and
            java.lang.Cloneable.</p>
        </item>
        <item>
          <p>A user's guide is now available.</p>
          <p>Own Id: OTP-3424</p>
        </item>
      </list>
    </section>

    <section>
      <title>Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>A bug in the MD5 handshaking code, that could cause the
            connection to fail when the Java node was run in a 7-bit
            character encoding environment, has now been fixed.</p>
          <p>Own Id: OTP-3512</p>
        </item>
        <item>
          <p>A bug in OtpErlangList, which caused message corruption 
            when empty list where encoded, is fixed.</p>
          <p></p>
          <p>Own Id: OTP-3564</p>
        </item>
      </list>
    </section>
  </section>

  <section>
    <title>Jinterface 1.1</title>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Modifications for using along with new IC types.</p>
          <p>Some modifications were done on classes OtpInputStream amd
            OtpOutputStream in order to work with the new types added
            on IC.</p>
          <p>Own Id: OTP-3331</p>
        </item>
        <item>
          <p>Machine-depended character encoding problems fixed.</p>
          <p>The character encoding (LC_CTYPE) need no longer be 
            defined to an eight bit character set for 
            jinterface connections to work.</p>
          <p>Own Id: OTP-3512</p>
        </item>
      </list>
    </section>
  </section>

  <section>
    <title>Jinterface 1.0</title>
    <p>New application.</p>
  </section>
</chapter>

