Vision
Bored of Java Beans with boiler-plate code such as getters, setters, equals, hashCode?
Jealous of more dynamic languages like JavaScript?
Tired of dual-stack development with duplicated technology stacks?
But a fan of Java?
We boost your productivity to the speed of light.
We bring back the original promise of Java "Write once, run anywhere":
- With our framework you can write code in Java for client and server.
- It can obviously run on any JVM (Java21+).
- However, our code can run as cloud-native binary with GraalVM.
- Even better it can also be compiled to JavaScript or WebAssembly using TeaVM.
- From a single codebase you can implement clients again with pure Java that runs on the desktop using JavaFx, it can run in the browser as HTML5 web app, and it can run on android. We can free you from the dual-stack development nonsense without the need to leave the Java world and switch to TypeScript (Angular/React and NestJS), Dart (Flutter) or .NET/C# (Blazor and Xamarin).
- No boilerplate code, no redundancies, no waste - just pure efficiency with low or less code.
- mmm-ui-demo provides a demo showcase of the features offered by
mmm-ui
andmmm-bean
. - mmm-ui-api provides an API to build UIs toolkit agnostic.
- mmm-ui-fx provides an implementation of mmm-ui-api to run clients on desktop using JavaFx.
- mmm-ui-tvm provides an implementation of mmm-ui-api to run clients in the browser using TeaVM.
- mmm-ui-android provides an implementation of mmm-ui-api to run clients on android devices.
- mmm-ui-test provides an mock implementation of mmm-ui-api for headless unit tests of your UIs.
- mmm-rpc provides powerful and simple to use RPC framework for REST communication with minimum code.
- mmm-entity provides powerful entity beans based on mmm-bean with `Id` and `Link` to create data-models without limits.
- mmm-bean provides powerful Java beans based on mmm-property to make your life easier.
- mmm-property provides powerful value properties (similar to JavaFx).
- mmm-validation provides validation support.
- mmm-nls provides advanced native-language-support for internationalization (i18n).
- mmm-marshall provides support to marshall (serialize) and unmarshall (deserialize) data from/to structured formats such as JSON or XML.
- mmm-scanner helps to parse character sequences efficient and easily.
- mmm-event provides a generic and reusable event infrastructure.
- mmm-value provides generic and observable value containers.
- mmm-dbm provides mapping for mmm-entity-bean to databases.
- mmm-crypto provides simpler and safer usage of cryptography.
- mmm-code provides API for abstract syntax trees (AST) for Java byte- and source-code-reflection.
- mmm-base provides APIs and fundamental utils used by other modules.
- mmm-l10n provides localizations (l10n) for this project itself.
Principles
The mmm project follows these principles:- Provide small, reusable modules to run in any environment
- Fill gaps in the Java language or ecosystem
- Prevent boiler-plate code
- Provide introspection without deep reflection
- Make Java more dynamic (learn from JavaScript without loosing the strength of Java)
- Designed with beauty
- Coded with passion
- Tested with care
- Documented with devotion