aboutsummaryrefslogtreecommitdiff
path: root/java/com/xagasoft/gats/package-info.java
blob: 58606aa585672306955eef65cbd7c45e7cb9beec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
 * Copyright (C) 2007-2013 Xagasoft, All rights reserved.
 *
 * This file is part of the libgats library and is released under the
 * terms of the license contained in the file LICENSE.
 */

/**
 * The Generalized Agile Transport System.
 *
 * This package contains interfaces for working with GATS.  GATS is used to
 * serialize data structures to and from storage as well as over the network.
 * <p>
 * GATS has a number of advantages over other systems for doing serialization.
 * <ul>
 *  <li>GATS is a binary storage system, so values are stored accurately
 *  	and compactly.</li>
 *  <li>GATS is arbitrary precision.  There is no upper bound on any integers
 *  	or floating point values stored in gats.</li>
 *  <li>GATS is platform, language, and endianness agnostic.  Data transmitted or
 *  	stored using GATS can be received, read, and used on any platform
 *  	without worries.  The binary format of GATS does <b>not</b> change
 *  	dependent on the architecture.</li>
 *  <li>GATS guarantees no loss of precision for floating point numbers.  When
 *  	storing floating point numbers a binary format similar to that employed
 *  	by computer hardware is used.  All exceptional cases are also preserved,
 *  	including +/- infinity, NaN, etc.</li>
 *  <li>GATS offers a generalized hierarchical data structure much like many
 *  	textual encoding/storage systems like json, xml, yaml, etc.</li>
 *  <li>GATS is designed with efficient transmission, compression, and
 *  	encryption in mind which makes it an excellent choice as the underlying
 *  	format for modern protocols.</li>
 * </ul>
 *
 * GATS uses a generalized data structure for storing data which
 * supports the following data types:
 * <ul>
 * 	<li>dictionaries</li>
 * 	<li>lists</li>
 * 	<li>booleans</li>
 * 	<li>integers</li>
 * 	<li>floats</li>
 * 	<li>strings</li>
 * </ul>
 *
 * Please see {@link com.xagasoft.gats.GatsOutputStream} for more information
 * about how GATS is encoded.
 *
 *@author Mike Buland
 */
package com.xagasoft.gats;