---
# 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.
title: OpenWire
--- name:overview pipeline:jade

h1 OpenWire #{project_version}

| #{project_slogan}

--- name:content pipeline:markdown

[ActiveMQ OpenWire](http://activemq.apache.org/openwire/) is a stand-alone
library that provides the implementation of the native wire protocol used by
[ActiveMQ](http://activemq.apache.org) and its various client libraries.

## Features

* Small Core module with latest codecs only
* External legacy module with support for all past OpenWire Versions.
* JMS Wrappers around the OpenWire message types
* Tight or loose encoding at the wire level for small or fast marshaling.
* Message body compression.

## Documentation

* [Getting Started Guide](documentation/getting-started.html)
* [OpenWire Protocol Manual](documentation/openwire-manual.html)


