Introducing a new Java framework for web development: Micro
Micro, for short: (μ) or Mu, is a modular Model View Controller framework (MVC Pull) for web development, and it was designed with simplicity in mind. Compared with other Java web frameworks, Micro doesn't force you to use the Java language for creating dynamic content, nor does it pigment your code with Java syntactic metadata or anything like that. With Micro you can start developing your web application right away even if the only content your site has is plain text or Markdown documents; you don't need Java for that. Micro uses Java under the hood, providing you the support that is specific to the web development: localization, template languages, scripting support for more advanced use, and a modular way to extend your dynamic content with controllers written in Java or using scripting, such as: Beanshell, server side Javascript(Rhino), JRuby and more.
Micro is distributed under the Apache 2 license and it is available as a Github repository: https://github.com/florinpatrascu/micro
Documentation: http://micro-docs.simplegames.ca, a Micro web application using Markdown for formatting the content; work in progress and available as an open source project too.
While still in beta, we believe you will find Micro interesting to work with and you are more than welcome to try it out and send us your feedback.
Thank you!
30 comments
[ 3.7 ms ] story [ 37.9 ms ] threadHow is this different from the recently released Play framework. And can you give us more details as to why it should be used over SpringMVC or frameworks like Play?
Just a nitpick: Play was initially released in 2007, so I wouldn't call it a "recent" framework :-)
I believe a web Designer will be less intimidated by Micro.
Forking Play 1.2.x could be a solution (and maybe remove the python console. After all that's a java framework)
Or.
Or one may use the extensibility of Play 2.x to remove the scala parts javaists don't want. It shouldn't too hard.
Here's a thread on the official forum about it : https://groups.google.com/forum/?fromgroups=#!topic/play-fra...
Working with Designers for so many years, I was trying to build something that a Designer can use in minutes and use it for publishing his work with the littlest effort possible; all these without writing a single line of Java code. I am sure Play/SpringMVC can do that too?!
For Micro, the separation of roles and concerns is adamant. Micro (like jpublish.org) is about helping the publishers taking their dynamic content to the web as easy as possible, while allowing the Developers to bring in as much business logic power as possible but without interfering with the content publishing concern; the true separation of roles and concerns. Please have a look at Micro's documentation web site: http://micro-docs.simplegames.ca/ (source on Github too); hosted at Heroku, it is a Micro web app and its entire content is written in Markdown. This is an example of what most of the web Designers and the small publishers will like to have, I think/hope?! Speaking about the Heroku, the compiled slug size, for a standard web app using Micro, is 11.7Mb. Micro is micro :)
At the end of the day, though, I'd be happy working in a Java framework wherein the experience didn't feel like I was forcing myself to write Java code. It's just such an uphill battle when the dev experience of (rails/node/django/webapp/web.py) is radically different from just about everything Java has to offer. The lack of a sane package manager, for one, is a major downer.
When compared to, for instance, NPM or Ruby Gems, I can't honestly say I've found much to like about the Java ecosystem. Part of the problem, of course, is that unlike in the case of the aforementioned two, build & dependency management in Java-land is quite fragmented (ant, maven, gradle, etc.).
As a Ruby developer, my first impulse was to use Rake but I started with Maven, trying to follow the bigger players, and I found myself struggling with managing various Maven dependencies and settings instead of focusing on getting the things done. Then I switched to Ant when I discovered the difference it makes when deploying to Heroku. Mu's compiled slug size deployed with Maven was 57Mb while the same core deployed with Ant today is 11.7Mb, give or take.
I'll commit the Maven configuration files soon, it is not my intention not too, but I will still search for a better solution. Any suggestions? Thank you for your feedback!
Thank you for pointing it out.
However having the framework in Java and actual web app logic in some dynamic language works very smoothly - I've done something similar with JS (Rhino) where the server actually takes care of auto reload and module system. Not really finished but: http://code.google.com/p/sodejs-java (wow maybe I should move it to github finally).
However, I am currently working on integrating the JCL (https://github.com/kamranzafar/JCL) library, recently released under a dual license by its author; it used to be LGPL only. This way I hope I can offer the class loading support at runtime, like Play is doing it, for example.
Also have you looked at dropwizard (http://dropwizard.codahale.com/) it's really simple to use. Would like to know your thoughts on that and also how your framework compares to theirs.
I believe more and more that Micro is talking to a specific audience, where the non-Java users have an important role too in the development of the site; Designers, Content managers, etc. With Micro they can prototype quickly before even calling for dev support. I am glad that when I compare Micro with similar frameworks, I realize how small Micro is:) And I truly like it this way. Sure Micro is lacking the persistence support for now (many other features too, probably) and it will be hard to compare it with other frameworks from this perspective. However, Micro is modular and can be expanded easily! (I am searching for a light ORM that I could add as an optional extension; activejdbc, maybe?)
Honestly, I see all the other similar frameworks as options, not as competitors. Let the users compare and choose based on what they want to accomplish. Maybe they'll use ... I don't know ... Play, to randomly pick one, for building an awesome e-comm web site, but would they use it for developing a .. blog, or a fast REST service front-end layer let's say?! The Ruby world is full with good examples where devs/designers are swinging between the fat Rails and the slimmer Sinatra/etc., shouldn't we be glad we can start doing the same in Java?
;)
Totally agree about giving better options to dev quickly in java too. There are so many times when I just end up using python to dev quickly and make a proof of concept web api and then when I have to interface with JVM systems, I end up writing thrift interfaces to keep my original python code around and to allow me to do quick changes to the api.
I tried dropwizard and it really makes it easy to write a webapi and is really fast. With that said, I will play with Micro very soon and let you know how it went.
I will clarify this aspect in the docs, many thanks for catching that!