Jacey is a simple and minimal JSON parser. It is a personal, mostly educational project that I like rewriting in different languages and paradigms. This repo contains the Java version of Jacey, aimed at exploring the language features and object-oriented design principles.
- the principles of OOP, GoF, GRASP design patterns
- see how OO paradigm works for parsers
- Java
- the language features, idiomatic Java code
- Java standard library, interfaces, developing classes that integrate well with language features
- a fully functional (as in it works) and well-tested JSON library
- extensible and composable code
- a lightweight, zero-dependency library. that's both a practical goal and a nice challenge
- highest possible performance. Performant patterns and idioms are still preferable, but this is a rather secondary criterion.
- wide feature set. new features will only be added if I consider them an interesting challenge or a useful thing to study
- simplicity. the complexity of code here is ridiculous and very unnecessary. Elegance and expressiveness in architecture are more of a primary goal, though. It's debatable whether this approach will result in a maintainable codebase, but I guess I'm about to find that out :D
I ain’t got no way of knowing whether there is a force capable of moving somebody to contribute to this kind of project, but if you happen to be one such person, you're more than welcome. Any pull requests can be expected to be reviewed by me promptly.
- suggest corrections or optimizations
- suggest and/or implement even crazier ways to stretch the capabilities of Java and OOP
- extend the functionality (and I will try to make it as extensible as I can do) or even suggest features or tweaks to API to be implemented, to keep me busy :D
This project is licensed under MIT License, feel free to do whatever you want with it and let me know how it goes with a pull request of a tweet.
Cheers!