Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Eco system #351

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ familiar with MVP, you may want to read these articles first:
* [Large scale application development and MVP, Part I](../../articles/mvp-architecture.html)
* [Large scale application development and MVP, Part II](../../articles/mvp-architecture-2.html)

Note:</br>
Besides MVP Activities and Places, there are other third party implementations for managing browser history. Take a look [here](/eco/application.html).

**Definitions**

An _activity_ simply represents something the user is doing.
Expand Down
2 changes: 2 additions & 0 deletions src/main/markdown/doc/latest/DevGuideUi.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ In traditional JavaScript programming, dynamic user interface creation is done b
9. [Working with CSS](DevGuideUiCss.html) -- Style widgets with cascading style sheets
10. [Declarative UI with UiBinder](DevGuideUiBinder.html) -- Build widget and DOM structures from XML markup
11. [Bundling Image Resources](DevGuideUiImageBundles.html) -- Optimize image loading by reducing the number of HTTP requests for images

Note: The GWT Eco System provides also UI implementations. To learn more, take a look [here](/eco/ui.html).
4 changes: 4 additions & 0 deletions src/main/markdown/doc/latest/tutorial/clientserver.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ To try this out, see the tutorial, [Making Cross-Site Requests](Xsite.html).

Note: There is a variety of public sources of JSON-formatted data you can practice with, including [Google Data APIs](https://developers.google.com/gdata/) and [Yahoo! Web Services](http://developer.yahoo.com/).

### Using Third-Party-Libraries

Besides the client server communication provided by GWT, there are more options to communicate with the server. Take a look [here](/eco/com-and-more.html).

## Making Asynchronous Calls

Whether you use GWT RPC or get JSON data via HTTP, all the calls you make from the HTML page to the server are asychronous.
Expand Down
25 changes: 25 additions & 0 deletions src/main/markdown/eco/add-lib.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Update Information

We will add or update information on request.

## Request for adding Libraries to the Eco System site
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe generalize "library" to "dependency", so we can discuss frameworks, plugins, etc?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I'll switch from library to ** dependency** in general ...

Done


The GWT eco system is a living system. New libs will be created, other will be end of life. Also we know, that there are
much more libraries outside. If you think, one library not listed here is worth to be mentioned, open an issue
[here](https://github.com/gwtproject/gwt-site). This will trigger a process to get mentioned in the eco system content.

We will expect:

* The Issue must be created by a contributor of the library
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the concerns here, that someone else might publicize a library that wasn't ready to be showcased?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, remove it.

Done

* The Library must be under active development
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a tricky requirement - is GWT itself under active development, over the months at a time that no commits are merged? If a project is stable, or is a wrapper for a JS library that has a stable API, can it not be listed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll change it to something like: The Library must be maintained

Done.

* The Library must be well documented
* The Library must be deployed to Maven central
* The Library must be an Open Source project
* The Library requires a Apache 2 Licence
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we need both bullet points - if it must be Apache v2, we don't need the open source license.

With that said, why should Apache v2 be a requirement (closure-compiler has a MPL dependency, for example)? And while it has become less popular to use closed source UI libraries on the web, it seems reasonable that as long as it is labeled accordingly that it be allowed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you are right. I added this because I want to avoid adding paid libraries. I don't want to promote vommercial libraries. So I remove the The Library requires a Apache 2 License.

Done.


## Request for updating Library-Information

To update information of an already added library, open an issue [here](https://github.com/gwtproject/gwt-site)
containing the desired changes.

Changes can only be requested from contributor of the library.
34 changes: 34 additions & 0 deletions src/main/markdown/eco/application.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Application Frameworks

One of the main tasks, when writing a GWT application is separating the code and managing the state. GWT offers with
[MVP Activities and Places](/doc/latest/DevGuideMvpActivitiesAndPlaces.html) modules to do that. Over the
time other implementations evolved.

## domino-mvp and domino-historie<a id="domino-mvp-historyt"></a>
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

Domino-mvp is a small, simple and a very lightweight framework for building both simple and complex applications using
GWT, it introduce the concept of routing using both tokens and events, also allows the developers to write a modular
application and shared components with any other domino application.

For more information about domino-mvp, see: [domino-mvp at GitHub](https://github.com/DominoKit/domino-mvp)

Domino-historie is a wrapper for the browser history state API.
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

For more information about domino-history, see: [domino-history at GitHub](https://github.com/DominoKit/domino-history)
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

## Nalu<a id="nalu"></a>

Nalu is a tiny framework that helps you to create GWT based applications quite easily. Using the HTML 5 history for
routing and navigation, Nalu supports the browser's back-, forward-, and reload-button by default and without any
need to implement anything.

For more information about domino-history, see: [Nalu at GitHub](https://github.com/NaluKit/nalu)
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

## Support

The GWT project team does not support this projects. In case you have questions or would like to open an issue, please
contact the contributor of the project!

## Missing Something?

If you are missing something, following the instructions located [here](add-lib.html).
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved
46 changes: 46 additions & 0 deletions src/main/markdown/eco/archetype.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Archetypes Creator
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

The GWT framework comes with an archetype creator known as **webAppCreator**. This **webAppCreator** creates
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved
a simple Maven project with some test code. It is ready use, will launch and while running, do a RPC server call. All
classes are located in one Maven project.

Besides the **webAppCreator** there are more archetypes creator. Depending on your needs, this archetype creator might be
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved
a better choice for your needs.

## Creators

Here are a list of archetype creator. As far as we known, all of this projects are under active development.
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

### gwt-maven-archetypes<a id="create-third-party-tb"></a>

This archetype creator will generate a Maven based GWT project with separate modules for client-, shared- and server-code.
The server module is based on Jetty. In modern GWT development the separation of client-, shared- and server-code is the
way to go. This archetype generator is a great place to start.

For more information visit the archetype at [gwt-maven-archetypes at GitHub](https://github.com/tbroyer/gwt-maven-archetypes)
and follow the instructions.

### gwt-maven-springboot-archetype<a id="create-third-party-nk"></a>

This archetype creator will generate a Maven based GWT project with separate modules for client-, shared- and server-code
similar to the one above, but in opposite to the first one, uses Spring Boot on the server side. In case
you are planing to use Spring Boot on the server side, this is a prefect archetype to start

For more information visit the archetype at [gwt-maven-springboot-archetype at GitHub](https://github.com/NaluKit/gwt-maven-springboot-archetype)
and follow the instructions.

### domino-cli<a id="create-third-party-nk"></a>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same anchor as above

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed


The domino-cli provides a tool for generating application templates using the DominoKit tool stack.

For more information visit the archetype at [domino-cli at GitHub](https://github.com/DominoKit/domino-cli)
and follow the instructions.

## Support

The GWT project team does not support this projects. In case you have questions or would like to open an issue, please
contact the contributor of the project!

## Missing Something?

If you are missing an archetype creator, following the instructions located [here](add-lib.html).
57 changes: 57 additions & 0 deletions src/main/markdown/eco/com-and-more.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Communication, Validation & more ...

GWT comes with a variate of frameworks to communicate with the server.
Take a look at [Ajax Communication](/doc/latest/tutorial/clientserver.html) for more information about modules GWT offers.
Besides that, there are many useful libraries.

Check these:

## Client-Server-Communication

Besides the [communication to the server provided by GWT](/doc/latest/tutorial/clientserver.html)
there are alternative implementations, too.

### domino-rest<a id="domino-rest"></a>

Domino-rest is a lib for generating rest clients from JaxRs compatible interfaces, and the generated clients can be used
from both client side -browser- using GWT and on the server. The lib works with GWT2 and also with GWT3/J2CL. The
serialization and deserialization is based on domino-jackson and service definition is based on JaxRs annotations, while
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved
code generation uses annotation processing APT.

For more information see: [domino-rest at GitHub](https://github.com/DominoKit/domino-rest)
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

## Validation<a id="validation"></a>

There are several implementation to validate data in GWT:

### Iban4g - IBAN-Validation<a id="iban4g"></a>

A Java, GWT and J2CL ready library for generation and validation of the International Bank Account Numbers (IBAN ISO_13616)
and Business Identifier Codes (BIC ISO_9362). The library can be used on the client and server side.

For more information, see: [iban4g at GitHub](https://github.com/NaluKit/iban4g)

### Malio - POJO-Validation<a id="malio"></a>

Malio is a tiny framework to validate POJOs using annotations. It is easy to use by just adding annotations to members
of a POJO. No writing of validations or validators. Based on the annotations inside the POJO, the processor generates
a validator. The generated validator can be used to check or validate the POJO. Malio valdators can bes used in GWT, J2CL
and Java.

For more information, see: [malio at GitHub](https://github.com/NaluKit/malio)

### gwt-bean-validators<a id="wt-bean-validators"></a>
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved

Implementation of Bean Validation (JSR-303/JSR-349/JSR-380) for GWT as replacement of deprecated GWT internal validation
implementation.

For more information, see: [gwt-bean-validators at GitLab](https://gitlab.com/ManfredTremmel/gwt-bean-validators)

## Support

The GWT project team does not support this projects. In case you have questions or would like to open an issue, please
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved
contact the contributor of the project!

## Missing Something?

If you are missing something, following the instructions located [here](add-lib.html).
FrankHossfeld marked this conversation as resolved.
Show resolved Hide resolved
15 changes: 15 additions & 0 deletions src/main/markdown/eco/config.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>


<folder href="latest/DevGuide.html">
<toc>
<entries>
<entry name="add-lib" displayName="Add Library Request" description="Add Library Request"></entry>
<entry name="application" displayName="Application Frameworks" description="Application Frameworks"></entry>
<entry name="archetype" displayName="Archetype Creator" description="Archetype Creator"></entry>
<entry name="eco-news" displayName="Eco System News" description="Eco System News"></entry>
<entry name="eco-system" displayName="Eco System" description="The GWT Eco System"></entry>
<entry name="ui" displayName="UI Frameworks" description="UI Frameworks"></entry>
</entries>
</toc>
</folder>
165 changes: 165 additions & 0 deletions src/main/markdown/eco/eco-news.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
GWT News

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might try to investigate if we can automate this, by allowing libraries to publish some RSS feeds to some service where we can fetch and display them, libraries and apps might be able to include some RSS publishing right through the release process like github actions or other means.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be awesome if we can automate this. To start, I think, we can go with a manual solution.

===

This news page is the source for updates from GWT related projects. Maintainers have to create an
[issue](https://github.com/gwtproject/gwt-site/issues) to add a news on this page.

Updates about the official GWT team will be found [here](news.html).

<style>
.container-list-news {
display: flex;
flex-direction: column;
margin-top: 4em;
grid-gap: 1.5em;
gap: 1.5em;
box-sizing: border-box;
/*border: 0 solid white;*/
width: 100%
}

.container-news {
padding: 1em;
border: 1px solid darkgrey;
border-radius: 1em;
background: white;
}

.container-headline {
color: #f93535;
text-decoration: none;
font-weight: bold;
font-size: 160%;
}

.container-date {
padding: 1em 0 0 0;
font-weight: bold;
color: #9e9d9d;
}

.container-text {
padding: 1em 0 0 0;
color: black;
}

.container-link {
padding: 1em 0 0 0;
font-weight: bold;
color: #9e9d9d;
}
</style>
<div class="container-list-news">
<div class="container-news">
<a href="https://github.com/DominoKit/domino-jackson/releases/tag/1.0.4" target="_blank">
<div class="container-headline">
domino-jackson 1.0.4 released
</div>
</a>
<div class="container-date">
December 10, 2023
</div>
<div class="container-text">
The releases introduced a better way to do super sources that is compatible with GWT and J2CL, upgraded dependencies, moved to java 11 and introduces custom (de)serializers support.
</div>
<a href="https://github.com/DominoKit/domino-jackson/releases/tag/1.0.4" target="_blank">
<div class="container-link">
Read more
</div>
</a>
</div>
<div class="container-news">
<a href="https://github.com/DominoKit/domino-rest" target="_blank">
<div class="container-headline">
domino-rest 1.0.2 released
</div>
</a>
<div class="container-date">
December 10, 2023
</div>
<div class="container-text">
The releases introduced a better way to do super sources that is compatible with GWT and J2CL, upgraded dependencies, moved to java 11 and fixes some minor issues.
</div>
<a href="https://github.com/DominoKit/domino-rest" target="_blank">
<div class="container-link">
Read more
</div>
</a>
</div>
<div class="container-news">
<a href="https://github.com/DominoKit/domino-ui/releases/tag/1.0.6" target="_blank">
<div class="container-headline">
domino-ui 1.0.6 released
</div>
</a>
<div class="container-date">
December 10, 2023
</div>
<div class="container-text">
Adds a new method to the LocalListScrollingDataSource. Check the release notes for more information.
</div>
<a href="https://github.com/DominoKit/domino-ui/releases/tag/1.0.6" target="_blank">
<div class="container-link">
Read more
</div>
</a>
</div>
<div class="container-news">
<a href="https://github.com/DominoKit/domino-ui/releases/tag/2.0.0-RC5" target="_blank">
<div class="container-headline">
domino-ui 2.0.0-RC5 released
</div>
</a>
<div class="container-date">
December 10, 2023
</div>
<div class="container-text">
Adds a lot of enhancements and features. The release also contains a lot of bug fixes. To get a full list of enhancements, features and bug fixes, check the release notes.
</div>
<a href="https://github.com/DominoKit/domino-ui/releases/tag/2.0.0-RC5" target="_blank">
<div class="container-link">
Read more
</div>
</a>
</div>
<div class="container-news">
<a href="https://github.com/DominoKit/domino-rest/releases/tag/1.0.1" target="_blank">
<div class="container-headline">
domino-rest version 1.0.1 released
</div>
</a>
<div class="container-date">
November 28, 2023
</div>
<div class="container-text">
Update emulation and super sources to be compatible with gwt and j2cl, move to java 11 and upgrade dependencies.
</div>
<a href="https://github.com/DominoKit/domino-rest/releases/tag/1.0.1" target="_blank">
<div class="container-link">
Read more
</div>
</a>
</div>
<div class="container-news">
<a href="https://github.com/NaluKit/nalu/releases/tag/2.12.6" target="_blank">
<div class="container-headline">
nalu version 2.12.6 released
</div>
</a>
<div class="container-date">
September 12, 2023
</div>
<div class="container-text">
This is a bug fix release. It fixes an issue related to reloading a page in a non hash context.
</div>
<a href="https://github.com/NaluKit/nalu/releases/tag/2.12.6" target="_blank">
<div class="container-link">
Read more
</div>
</a>
</div>
</div>




Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change