[EDGENT-364] Update instructions on how to use release bundles
diff --git a/site/docs/downloads.md b/site/docs/downloads.md
index 0a65ce6..71fe590 100644
--- a/site/docs/downloads.md
+++ b/site/docs/downloads.md
@@ -4,13 +4,13 @@
Official Apache Edgent releases are available for download from the ASF distribution site. A release consists of a source code bundle and a convenience binary bundle. See the table below for a release's download links.
-If you just want to use Edgent, it is easiest to download and unpack a binary bundle. The bundle includes the release's javadoc. The javadoc is also accessible online. For more information, please refer to the [Getting started guide](edgent-getting-started)
+If you just want to use Edgent, it is easiest to download and unpack a binary bundle. The bundle includes the release's Javadoc. The Javadoc is also accessible online. For more information, please refer to the [Getting started guide](edgent-getting-started).
A source bundle contains a README describing how to build the sources.
-If you want to access the latest unreleased Edgent source or to contribute to the Edgent runtime development, use the [GitHub repository]({{ site.data.project.source_repository_mirror }}). You can also select a particular release version by release tag (e.g., 1.0.0-incubating). See README.md and DEVELOPMENT.md in the repository for more information.
+If you want to access the latest unreleased Edgent source or contribute to the Edgent runtime development, use the [GitHub repository]({{ site.data.project.source_repository_mirror }}). You can also select a particular release version by release tag (e.g., 1.0.0-incubating). See [README.md](https://github.com/apache/incubator-edgent/blob/master/README.md) and [DEVELOPMENT.md](https://github.com/apache/incubator-edgent/blob/master/DEVELOPMENT.md) in the repository for more information.
-See [community](community.html) for more information about contributing to Edgent development.
+See the [community](community) page for more information about contributing to Edgent development.
## Apache Edgent Releases
@@ -21,5 +21,5 @@
| Version | Date | Bundles | Release Notes | Docs | PGP | MD5 | SHA |
|:-----------------:|:--------------:|:-------:|:-------------:|:----:|:---:|:---:|:-----:|
-| 1.0.0-incubating | 2016-12-15 | [Source]({{ site.data.downloads.edgent_1-0-0_dist_location }}) | [1.0.0 Release]({{ site.data.downloads.edgent_1-0-0_release_note }}) | [JavaDoc]({{ site.data.downloads.edgent_1-0-0_doc_location }}) | [ASC]({{ site.data.downloads.edgent_1-0-0_asc_location }}) | [MD5]({{ site.data.downloads.edgent_1-0-0_md5_location }}) | [SHA]({{ site.data.downloads.edgent_1-0-0_sha_location }}) |
+| 1.0.0-incubating | 2016-12-15 | [Source]({{ site.data.downloads.edgent_1-0-0_dist_location }}) | [1.0.0 Release]({{ site.data.downloads.edgent_1-0-0_release_note }}) | [Javadoc]({{ site.data.downloads.edgent_1-0-0_doc_location }}) | [ASC]({{ site.data.downloads.edgent_1-0-0_asc_location }}) | [MD5]({{ site.data.downloads.edgent_1-0-0_md5_location }}) | [SHA]({{ site.data.downloads.edgent_1-0-0_sha_location }}) |
| | | [Binary]({{ site.data.downloads.edgent_1-0-0_bin_dist_location }}) | | | [ASC]({{ site.data.downloads.edgent_1-0-0_bin_asc_location }}) | [MD5]({{ site.data.downloads.edgent_1-0-0_bin_md5_location }}) | [SHA]({{ site.data.downloads.edgent_1-0-0_bin_sha_location }}) |
diff --git a/site/docs/edgent-getting-started.md b/site/docs/edgent-getting-started.md
index ee44b61..5a92068 100644
--- a/site/docs/edgent-getting-started.md
+++ b/site/docs/edgent-getting-started.md
@@ -25,24 +25,35 @@
### Downloading Apache Edgent
-To use Edgent you need the Edgent jars. You can either download the Edgent source and build it or you can download a pre-built version of Edgent. See the [download page]({{ site.data.project.download }}).
+To use Edgent, you need the Edgent JAR files, which you may obtain by completing the following steps.
-After you have the Edgent jars, you can set up your environment.
+1. Locate the Edgent release you would like to use on the [downloads page]({{ site.data.project.download }})
+2. In the Bundles column for the desired release:
+ * Click on the _Binary_ link if you simply want to use Edgent. This is the easiest method is to get up and running as it contains a pre-built version of Edgent.
+ * Click on the _Source_ link if you would like access to the Edgent source files. If you choose this method, you must manually build Edgent yourself.
+3. Download the .tgz file from one of the mirror sites
+4. Unpack the downloaded file: `tar zxvf apache-edgent-X.X.X-incubating-XXX.tgz`
+5. Obtain the JARs
+ * If you are using a binary bundle, then the Java 8 JARs are located in `edgent-X.X.X/java8`
+ * If you are using a source bundle, build the source code:
+ 1. Install [Gradle](https://gradle.org/) if it is not yet installed
+ 2. Navigate to the unpacked directory: `cd edgent-X.X.X-src`
+ 3. Run `gradle` to initialize the Gradle wrapper
+ 4. Build the code and Javadoc: `./gradlew assemble`
+ 5. The Java 8 JARs are located in `edgent-X.X.X-src/build/distributions/java8`
### Setting up your environment
-Ensure that you are running a supported environment. For more information, see the [Edgent overview](home). This guide assumes you're running Java 8.
-
-The Edgent Java 8 JAR files are located in the `edgent/java8/lib` directory.
+Ensure that you are running a supported environment. For more information, see the [Edgent overview](home). This guide assumes you're running Java 8. The Edgent Java 8 JAR files are located in either the `edgent-X.X.X/java8` or `edgent-X.X.X-src/build/distributions/java8` directory, depending on whether you downloaded a binary or source bundle.
1. Create a new Java project in Eclipse, and specify Java 8 as the execution environment JRE:
- <img src="images/New_Java_Project.JPG" style="width:448px;height:589px;">
+ <img src="images/New_Java_Project.jpg">
-2. Modify the Java build path to include all of the JAR files in the `edgent\java8\lib` directory:
+2. Add all of the JAR files in the `java8\lib` directory to the project's build path:
- <img src="images/Build_Path_Jars.JPG" style="width:660px;height:469px;">
+ <img src="images/Build_Path_JARs.jpg">
Your environment is set up! You can start writing your first Edgent application.
@@ -50,7 +61,7 @@
If you're new to Edgent or to writing streaming applications, the best way to get started is to write a simple program.
-Edgent is a framework that pushes data analytics and machine learning to *edge devices*. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data locally—such as, in a car engine, on an Android phone, or Raspberry Pi—before you send data over a network.
+Edgent is a framework that pushes data analytics and machine learning to *edge devices*. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data locally—such as, in a car engine, on an Android phone, or on a Raspberry Pi—before you send data over a network.
For example, if your device takes temperature readings from a sensor 1,000 times per second, it is more efficient to process the data locally and send only interesting or unexpected results over the network. To simulate this, let's define a (simulated) TempSensor class:
@@ -115,11 +126,11 @@
DirectProvider dp = new DirectProvider();
```
-A `Provider` is an object that contains information on how and where your Edgent application will run. A `DirectProvider` is a type of Provider that runs your application directly within the current virtual machine when its `submit()` method is called.
+A `Provider` is an object that contains information on how and where your Edgent application will run. A `DirectProvider` is a type of Provider that runs your application directly within the current virtual machine when its [`submit()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/providers/direct/DirectProvider.html#submit-org.apache.{{ site.data.project.unix_name }}.topology.Topology-) method is called.
### Creating a topology
-Additionally a Provider is used to create a [`Topology`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/Topology.html) instance:
+Additionally, a Provider is used to create a [`Topology`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/Topology.html) instance:
```java
Topology topology = dp.newTopology();
@@ -130,7 +141,7 @@
* Where the streams in the application come from
* How the data in the stream is modified
-In the TempSensor application above, we have exactly one data source: the `TempSensor` object. We define the source stream by calling `topology.poll()`, which takes both a `Supplier` function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:
+In the TempSensorApplication class above, we have exactly one data source: the `TempSensor` object. We define the source stream by calling [`topology.poll()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/Topology.html#poll-org.apache.{{ site.data.project.unix_name }}.function.Supplier-long-java.util.concurrent.TimeUnit-), which takes both a [`Supplier`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/function/Supplier.html) function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:
```java
TStream<Double> tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS);
@@ -140,11 +151,11 @@
Calling `topology.poll()` to define a source stream creates a `TStream<Double>` instance, which represents the series of readings taken from the temperature sensor.
-A streaming application can run indefinitely, so the `TStream` might see an arbitrarily large number of readings pass through it. Because a `TStream` represents the flow of your data, it supports a number of operations which allow you to modify your data.
+A streaming application can run indefinitely, so the [`TStream`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/TStream.html) might see an arbitrarily large number of readings pass through it. Because a `TStream` represents the flow of your data, it supports a number of operations which allow you to modify your data.
### Filtering a `TStream`
-In our example, we want to filter the stream of temperature readings, and remove any "uninteresting" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the `TStream`'s `filter` method and pass in a function that returns *true* if the data is interesting and *false* if the data is uninteresting:
+In our example, we want to filter the stream of temperature readings, and remove any "uninteresting" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the `TStream`'s [`filter`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#filter-org.apache.{{ site.data.project.unix_name }}.function.Predicate-) method and pass in a function that returns *true* if the data is interesting and *false* if the data is uninteresting:
```java
TStream<Double> filteredReadings = tempReadings.filter(reading -> reading < 50 || reading > 80);
@@ -154,7 +165,7 @@
### Printing to output
-When our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the `TStream.print()` method, which prints using `.toString()` on each tuple that passes through the stream:
+When our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the [`TStream.print()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#print--) method, which prints using `.toString()` on each tuple that passes through the stream:
```java
filteredReadings.print();
@@ -162,7 +173,7 @@
Unlike `TStream.filter()`, `TStream.print()` does not produce another `TStream`. This is because `TStream.print()` is a **sink**, which represents the terminus of a stream.
-In addition to `TStream.print()` there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking `TStream.sink()` and passing in your own function.
+In addition to `TStream.print()` there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking [`TStream.sink()`]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#sink-org.apache.{{ site.data.project.unix_name }}.function.Consumer-) and passing in your own function.
### Submitting your application
diff --git a/site/docs/images/Build_Path_JARs.jpg b/site/docs/images/Build_Path_JARs.jpg
new file mode 100644
index 0000000..3fb26a1
--- /dev/null
+++ b/site/docs/images/Build_Path_JARs.jpg
Binary files differ
diff --git a/site/docs/images/Build_Path_Jars.JPG b/site/docs/images/Build_Path_Jars.JPG
deleted file mode 100644
index 4290ba0..0000000
--- a/site/docs/images/Build_Path_Jars.JPG
+++ /dev/null
Binary files differ
diff --git a/site/docs/images/New_Java_Project.JPG b/site/docs/images/New_Java_Project.JPG
deleted file mode 100644
index d80070f..0000000
--- a/site/docs/images/New_Java_Project.JPG
+++ /dev/null
Binary files differ
diff --git a/site/docs/images/New_Java_Project.jpg b/site/docs/images/New_Java_Project.jpg
new file mode 100644
index 0000000..c535c6d
--- /dev/null
+++ b/site/docs/images/New_Java_Project.jpg
Binary files differ