Manifold is a new breed of Java tooling to make Java development more appealing and productive.
Clone or download
rsmckinney Manifold ext/json changes:
- replace usage of javax.script.SimpleBindings with our own DataBindings primarily so we can perform equals/hashcode calls on json interfaces
Latest commit 87a1ebe Jan 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Build improvements Jan 17, 2018
.github/ISSUE_TEMPLATE Update issue templates Nov 11, 2018
docs articles update Jan 9, 2019
manifold-all bump version Jan 17, 2019
manifold-bootstrap-plugin bump version Jan 17, 2019
manifold-core-parent bump version Jan 17, 2019
manifold-deps-parent Manifold ext/json changes: Jan 18, 2019
manifold-util bump version Jan 17, 2019
.gitignore beging move of site to github pages Jan 24, 2018
LICENSE minor Mar 15, 2018
README.md docs update Dec 11, 2018
authors.txt nexus release changes Sep 12, 2018
pom.xml bump version Jan 17, 2019
settings.xml include my .m2 settings.xml Sep 13, 2018

README.md

What is Manifold?

Manifold is a new breed of Java tooling. It provides powerful features to make Java development more appealing and productive. Simply add the Manifold jar to your project and begin taking advantage of it.

What can you do with Manifold?

Meta-programming

Gain direct, type-safe access to any data source. Remove the code gen step in your build process.

// JSON files are types!
Person person = Person.fromJsonUrl(url);
person.setFirstName("Scott");

Extensions

Add extension methods to existing Java classes, even String, List, and File. Eliminate boilerplate code.

String greeting = "hello";
greeting.myMethod(); // augment any type

Structural Typing

Unify disparate APIs. Bridge software components you do not control. Access maps through type-safe interfaces.

MyInterface thing = (MyInterface)notMyInterface;
thing.myMethod(); // treat as your interface

Type-safe Reflection

Access private features with @Jailbreak to avoid the drudgery and vulnerability of Java reflection.

@Jailbreak Foo foo = new Foo();
// Direct, type-safe access to *all* foo's members
foo.privateMethod(x, y, z); 
foo.privateField = value;

Templates

Make type-safe template files using pure Java. Use the same template expressions in Java strings.

int hour = 8;
// print "It is 8 o'clock"
System.out.println("It is $hour o'clock"); 

Libraries

Leverage stock Manifold extension libraries for standard Java classes. Save time and reduce boilerplate code.

File file = new File(path);
// Use refreshing extensions to File
String content = file.readText();

IntelliJ

Use the Manifold IntelliJ IDEA plugin to fully leverage Manifold in your development cycle. The plugin provides comprehensive support for IntelliJ features including code completion, navigation, usage searching, refactoring, incremental compilation, hotswap debugging, full-featured template editing, and more.

Learn More