Skip to content

Commit 8a228cf

Browse files
authored
Update README.md (#591)
1 parent a63f295 commit 8a228cf

File tree

1 file changed

+31
-8
lines changed

1 file changed

+31
-8
lines changed

README.md

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# <img alt="Smithy" src="https://github.com/smithy-lang/smithy/blob/main/docs/_static/smithy-anvil.svg?raw=true" width="32"> Smithy Java
1+
# <img alt="Smithy" src="https://github.com/smithy-lang/smithy/blob/main/docs/_static/smithy-anvil.svg?raw=true" width="32"> Smithy Java
2+
23
[![ci](https://github.com/smithy-lang/smithy-java/actions/workflows/ci.yml/badge.svg)](https://github.com/smithy-lang/smithy-java/actions/workflows/ci.yml)
34
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
45

@@ -8,6 +9,7 @@
89
> This project is still in development and is not intended for use in production.
910
1011
---
12+
1113
This repository contains two major components:
1214
1. Smithy code generators for Java
1315
2. Core modules and interfaces for building services and clients in Java
@@ -19,11 +21,12 @@ The [codegen](./codegen) directory contains the source code for generating clien
1921
> This repository does not contain any generated clients, such as for S3 or other AWS services.
2022
> Rather, these are the tools that facilitate the generation of those clients and non-AWS Smithy clients.
2123
22-
## Getting Started
24+
## Getting Started
25+
2326
If this is your first time using Smithy, follow the [Smithy Quickstart guide](https://smithy.io/2.0/quickstart.html)
2427
to learn the basics and create a simple Smithy model.
2528

26-
For a guided tour of this project, see the [Smithy Java Quickstart guide](https://smithy.io/2.0/java/quickstart.html).
29+
For a guided introduction to this project, see the [Smithy Java Quickstart guide](https://smithy.io/2.0/java/quickstart.html).
2730

2831
The [examples](./examples) are standalone projects that showcase the usage of Smithy Java for generating clients
2932
and building services. These examples can be used as a template for a new project using the
@@ -35,6 +38,7 @@ and building services. These examples can be used as a template for a new projec
3538
> Smithy-Java only supports **Java 17** or later. Older Java versions are not supported.
3639
3740
### Codegen (Gradle)
41+
3842
To use the Smithy Java code generators with Gradle, first create a Smithy Gradle project.
3943

4044
> [!NOTE]
@@ -97,75 +101,94 @@ tasks.named("compileJava") {
97101
```
98102

99103
### Stability
104+
100105
Classes and API's annotated with `@SmithyInternal` are for internal use by Smithy-Java libraries and should **not** be
101106
used by Smithy users. API's annotated with `@SmithyUnstableApi` are subject to change in future releases.
102107

103108
## Core modules and Interfaces
109+
104110
### Common
111+
105112
- `core` - Provides basic functionality for (de)serializing generated types and defining `Schema`'s, minimal representations
106113
of the Smithy data model for use at runtime.
107114
- `io` - Common I/O functionality for clients/servers.
108115
- `auth-api` - shared Authorization/Authentication API for clients and servers.
109116
- `framework-errors` - Common errors that could be thrown by the Smithy Java framework.
110117

111118
### Client
119+
112120
- `client-core` - Provides protocol and transport agnostic functionality for clients.
113121
All generated clients require this package as a runtime dependency.
114122
- `client-http` - Client-side implementation of HTTP transport.
115123
- `dynamic-client` - Smithy client that exposes a dynamic API that doesn't require codegen.
116124

117125
### Server
126+
118127
- `server-core` - Provides protocol and transport agnostic functionality for servers.
119128
All generated server-stubs require this package as a runtime dependency.
120129
- `server-netty` - Provides an HTTP server implementation using the [Netty](https://netty.io/) runtime.
121130

122-
### Codegen
131+
### Codegen
132+
123133
- `codegen:core` - Provides the basic framework necessary for codegen plugins and integrations to generate Java
124134
code from a Smithy model. Only codegen plugins and integrations should depend on this directly.
125135
- `codegen:plugins` - Aggregate package that provides all code generation plugins.
126136

127137
Codegen integrations that modify the code generated by codegen plugins can be found in [codegen/integrations](codegen/integrations).
128138

129139
### Protocols
130-
Smithy Java, like the Smithy IDL, is protocol-agnostic. Servers to support any number of protocols and clients can
140+
141+
Smithy Java, like the Smithy IDL, is protocol-agnostic. Servers support any number of protocols and clients can
131142
set the protocol to use at runtime.
132143

144+
> [!NOTE]
145+
> The `rpcv2-cbor`protocol is a generic binary protocol provided by Smithy Java that can be a good
146+
> choice for services that want a fast, compact data format.
147+
133148
The [`protocol-test-harness`](protocol-test-harness) package provides a framework for testing protocols.
134149

135-
#### Client
150+
#### Client
151+
136152
- `client-rpcv2-cbor` - Implementation [rpcv2-cbor](https://smithy.io/2.0/additional-specs/protocols/smithy-rpc-v2.html#smithy-rpc-v2-cbor-protocol) protocol.
137153
- `aws-client-awsjson` - Implementation of [AWS JSON 1.0](https://smithy.io/2.0/aws/protocols/aws-json-1_0-protocol.html#aws-json-1-0-protocol) and [AWS JSON 1.1](https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html#aws-json-1-1-protocol) protocols.
138154
- `aws-client-restjson` - Implementation of [AWS restJson1](https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html#aws-json-1-1-protocol) protocol.
139-
- `aws-client-restXml` - Implementation of [AWS restXml](https://smithy.io/2.0/aws/protocols/aws-restxml-protocol.html#aws-restxml-protocol) protocol.
155+
- `aws-client-restXml` - Implementation of [AWS restXml](https://smithy.io/2.0/aws/protocols/aws-restxml-protocol.html#aws-restxml-protocol) protocol.
140156

141157
#### Server
158+
142159
- `server-rpcv2-cbor` - Implementation [rpcv2-cbor](https://smithy.io/2.0/additional-specs/protocols/smithy-rpc-v2.html#smithy-rpc-v2-cbor-protocol) protocol.
143160
- `aws-server-restjson` - Implementation of [AWS restJson1](https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html#aws-json-1-1-protocol) protocol.
144161

145162
#### Codecs
163+
146164
Codecs provide basic (de)serialization functionality for protocols.
147165
- `json-codec` - (de)serialization functionality for [JSON](https://www.json.org/json-en.html) format
148166
- `cbor-codec` - Binary (de)serialization functionality for [CBOR](https://cbor.io/) format
149167
- `xml-codec` - (de)serialization functionality for [XML](https://www.w3.org/TR/REC-xml/) format
150168

151169
### Utilities
170+
152171
- `jmespath` - [JMESPath](https://jmespath.org/) implementation that allows querying a `Document` using a JMESPath expression.
153172

154173

155174
## Development
175+
156176
See [CONTRIBUTING](CONTRIBUTING.md) for more information on contributing to the Smithy-Java project.
157177

158178
### Pre-push hooks
179+
159180
Pre-push hooks are automatically added for unix users via the `addGitHooks` gradle task.
160181

161-
**Note**: In order to successfully execute the pre-defined hooks you must have the `smithy` CLI installed.
182+
**Note**: In order to successfully execute the pre-defined git hooks you must have the `smithy` CLI installed.
162183
See [installation instructions](https://smithy.io/2.0/guides/smithy-cli/cli_installation.html) if you do not already have the CLI installed.
163184

164185
## Security
186+
165187
If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our
166188
[vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/).
167189
Please do **not** create a public GitHub issue.
168190

169191
## License
192+
170193
This project is licensed under the Apache-2.0 License.
171194

0 commit comments

Comments
 (0)