Skip to end of metadata
Go to start of metadata

What is Oak?

Oak is a markup language that can be used to store data in files. Think of it as improved JSON.

  • Good: Use Oak out of the box to replace XML / JSON
    • (plus) More expressive, easier to read.
    • (minus) Doesn't yet have the tooling that JSON has, in particular plugins for Eclipse and IntelliJ. Java only
  • Better: Define your own grammar dialect. This is equivalent to a DTD in XML and gives you a domain specific language. For example you can define a Person.dialect and have Oak check the data for you.
    • (plus) Error checking, type safety. Many errors detected at compile time.
  • Best: Tree construction.
    • (plus) Automatic instantiation of Java objects.  For example you can have Oak automatically instantiate Person, Address and Email objects for you.


Oak is being developed as part of a larger project where it is easy to see that it is a worthwhile standalone project. It is being actively developed but is reaching a state of maturity from the design point of view. We can say the following:

  • The format of the file files is unlikely to change much going forward.
  • Parsing of the files works but leaves a lot to be desired regarding error checking. It's very much usable, errors do get trapped but the error messages aren't always the most informative. 
  • Once Oak fully stabilises then it would be good to see a JavaScript version of the parser, an Eclipse plugin and a JavaDoc equivalent.

Get it

Use it

Where to go next