Skip to content

Commit

Permalink
Updated roadmap
Browse files Browse the repository at this point in the history
  • Loading branch information
salmonb committed Feb 20, 2024
1 parent 0b53b60 commit 6989eb7
Showing 1 changed file with 32 additions and 17 deletions.
49 changes: 32 additions & 17 deletions .github/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
 

[![JFXCentral](https://img.shields.io/badge/Find_me_on-JFXCentral-blue?logo=googlechrome&logoColor=white)](https://www.jfx-central.com/tools/webfx)
[![Twitter](https://img.shields.io/badge/follow-%40WebFXProject-0f80c0?logo=twitter)](https://twitter.com/WebFXProject)
[![Discord](https://img.shields.io/badge/join-WebFX_chat-0f80c0?logo=discord&logoColor=white)](https://discord.gg/7FQh3S5S)
[![Twitter](https://img.shields.io/badge/follow-%40WebFXProject-0f80c0?logo=x)](https://twitter.com/WebFXProject)
[![Discord](https://img.shields.io/badge/join-support_chat-0f80c0?logo=discord&logoColor=white)](https://discord.gg/7FQh3S5S)

</div>

Expand Down Expand Up @@ -150,22 +150,23 @@ WebFX is still in the incubation phase. You can consult our roadmap below. At th
- [x] [WebFX Blog][webfx-blog]
- [ ] <img src="plot.svg"></img> JavaFX coverage
- [ ] <img src="plot.svg"></img> javafx-base ![](https://geps.dev/progress/80)
- [ ] <img src="plot.svg"></img> javafx-graphics ![](https://geps.dev/progress/70)
- [ ] <img src="plot.svg"></img> javafx-controls ![](https://geps.dev/progress/33)
- [ ] <img src="plot.svg"></img> javafx-graphics ![](https://geps.dev/progress/70)
- [ ] <img src="plot.svg"></img> javafx-controls ![](https://geps.dev/progress/33)
- [ ] <img src="plot.svg"></img> javafx-media ![](https://geps.dev/progress/85)
- [ ] <img src="plot.svg"></img> javafx-web ![](https://geps.dev/progress/80)
- [ ] <img src="plot.svg"></img> javafx-fxml ![](https://geps.dev/progress/10)
- [ ] <img src="plot.svg"></img> javafx-fxml ![](https://geps.dev/progress/10)
- [ ] <img src="plot.svg"></img> Build & Runtime Environments
- [x] [GWT][gwt-website] support
- [ ] <img src="plot.svg"></img> [J2CL][j2cl-repo] support ![](https://geps.dev/progress/50)
- [ ] <img src="plot.svg"></img> [TeaVM][teavm-website] support ![](https://geps.dev/progress/20)
- [ ] [Kotlin][kotlin-website] support
- [ ] [JxBrowser][jxbrowser-website] support ⓺
- [ ] <img src="plot.svg"></img> Ecosystem
- [ ] <img src="plot.svg"></img> [WebFX Platform][webfx-platform-repo] ![](https://geps.dev/progress/85)
- [ ] <img src="plot.svg"></img> [WebFX Extras][webfx-extras-repo] ![](https://geps.dev/progress/70)
- [ ] <img src="plot.svg"></img> [WebFX Stack][webfx-stack-repo] ![](https://geps.dev/progress/60)
- [ ] <img src="plot.svg"></img> [WebFX Extras][webfx-extras-repo] ![](https://geps.dev/progress/70)
- [ ] <img src="plot.svg"></img> [WebFX Stack][webfx-stack-repo] ![](https://geps.dev/progress/60)
- [ ] <img src="plot.svg"></img> WebFX CSS ![](https://geps.dev/progress/40)
- [x] [WebFX Libs][webfx-libs-repo] (subject to grow on demand)
- [ ] <img src="plot.svg"></img> Build & Runtime Environments
- [x] [GWT][gwt-website] support
- [ ] <img src="plot.svg"></img> [J2CL][j2cl-repo] support ![](https://geps.dev/progress/30)
- [ ] <img src="plot.svg"></img> [TeaVM][teavm-website] support ![](https://geps.dev/progress/20)
- [ ] [Kotlin][kotlin-website] support
- [ ] [JxBrowser][jxbrowser-website] support
- [ ] <img src="plot.svg"></img> [WebFX Maven Plugin][webfx-maven-plugin] ![](https://geps.dev/progress/40)
- [x] Enterprise application prototype
- [ ] <img src="plot.svg"></img> [Modality][modality-repo] (first Enterprise WebFX app) ![](https://geps.dev/progress/50)
Expand All @@ -179,9 +180,23 @@ WebFX is still in the incubation phase. You can consult our roadmap below. At th
- [ ] Rebase WebFX on OpenJFX latest version
- [ ] General Availability

An effort is currently being made to make WebFX transpiler-agnostic. J2CL & TeaVM will be supported in a near future. J2CL (successor of GWT in active development) is not only targeting JavaScript but also WebAssembly, which should boost the performance of WebFX apps. Whereas GWT & J2CL are Java-source transpilers, TeaVM is a byte-code transpiler, which will open the door to alternative JVM languages such as Kotlin. Also, TeaVM supports Java 21, including `record` and new `switch` expressions.
⓵ 100% = No 3D, no CSS. JavaFX 3D can't be easily mapped to HTML. For CSS, the WebFX approach is to rely on HTML CSS, rather than emulating JavaFX CSS in the browser. See ⓽ for more info about this approach.

⓶ WebFX supports the general javafx-controls API (allowing you to write custom controls). So far, the specific supported controls are: Button, CheckBox, RadioButton, ContextMenu, Label, Hyperlink, TextField, TextArea, PasswordField, ProgressBar, Slider, ScrollPane, SplitPane & TabPane.

⓷ FXML relies on reflection, which is not supported by transpilers. Alternatively, WebFX could transform fxml files into transpilable Java code. A prototype has been made with this approach using [Memory Game](https://github.com/JaretWright/MemoryGame), a FXML-based JavaFX game (see working [demo](https://memorygame.webfx.dev)).

⓸ An effort is currently being made to make WebFX transpiler-agnostic. J2CL (successor of GWT in active development) will be soon supported. This future-proof step will also bring all [next goodies](https://github.com/google/j2cl/issues/93) from J2CL, such as WebAssembly target (in addition to JS) and Kotlin language (in addition to Java).

⓹ TeaVM is another popular transpiler. Whereas GWT & J2CL are Java-source transpilers, TeaVM is a byte-code transpiler, which will open the door to other alternative JVM languages such as Scala. Also, TeaVM supports Java 21, including `record` and new `switch` expressions.

⓺ The JxBrowser support will offer an external web view that developers can use to run, test and debug the web version of their WebFX app directly from Java (no transpilation required!). The IDE will simply run your app with the WebFX Kit runtime (instead of OpenJFX) in the JVM, and the DOM generated by WebFX will be rendered in JxBrowser (a Chromium-based browser controlled by Java). This will considerably speed up the development cycle of web apps.

⓻ WebFX extras provides additional features for WebFX, and simpler alternative controls to the complex JavaFX controls not yet supported (ex: simple data grid and charts).

⓼ WebFX Stack provides additional enterprise-level features such as: UI router, I18n, Validation, Auth(n/z) with SSO support, client-side ORM, DB access, websocket-based event bus (for server communication - focus on Vert.x), and server push features. WebFX Stack + Vert.x is a Java full-stack solution (similar to React + Node.js).

The JxBrowser support will offer a web view that developers can use to run, test and debug the web version of their WebFX app directly from Java (no traspilation required). The IDE will simply run your app with the WebFX runtime (instead of OpenJFX) in the JVM, and the DOM generated by WebFX will be rendered in JxBrowser (a Chromium-based browser controlled by Java). This will considerably speed up the development cycle of web apps.
⓽ WebFX CSS relies on dual format: JavaFX CSS & HTML CSS. WebFX developers will need to write both formats. Although it's more work, this is the most optimised approach (emulating JavaFX CSS and loading caspian.css in the browser would be a heavy approach). WebFX CSS will provide a lighter initial CSS for JavaFX that will replace caspian, using a modern sleek minimalistic flat design.

Some redesign work is also necessary to transit from the current patching process (which is mainly a manual patch of OpenJFX 8) to a more professional patching process with tooling allowing regular rebasing onto OpenJFX.

Expand All @@ -208,12 +223,12 @@ Some redesign work is also necessary to transit from the current patching proces

## Support

For any questions or requests for help, feel free to open a GitHub [discussion](https://github.com/webfx-project/webfx/discussions), or chat with us on [Discord](https://discord.gg/7FQh3S5S). You can open an issue to report a bug, or request a feature.
For any questions or requests for help, feel free to open a GitHub [discussion](https://github.com/webfx-project/webfx/discussions), or use our [general chat channel](https://discord.gg/7FQh3S5S) on Discord. You can open an issue to report a bug, or request a feature.


## Keep updated

You can subscribe to our [blog][webfx-blog] (low traffic), or follow us on [Twitter](https://twitter.com/WebFXProject) (medium traffic), or on [Discord](https://discord.gg/7FQh3S5S) (higher traffic).
Depending on how often you would like to keep updated, you can subscribe to our [blog][webfx-blog] (low traffic), or follow us on [Twitter](https://twitter.com/WebFXProject) (medium traffic), or join the [news channel](https://discord.com/channels/1205089571835088907/1209157316197355530) on Discord (higher traffic).

## Get involved!

Expand Down

0 comments on commit 6989eb7

Please sign in to comment.