Bridging the Client-Server Solution Gap

[Java API] [Implemented Patterns] [J2EE Web Application] [Marrow-MUSCLE Application] [SF Project]

Project Marrow is:

Marrow is an easy to use, simple, extensible, and solid framework for building client-server applications. The framework consits of abstract and concrete implementations of common J2EE core patterns, allowing developers to easily implement application logic through the Command pattern. A complete list of all implemented patterns is available.

Marrow integrates seamlessly with J2EE Application Servers and Servlet containers (like tomcat) to run applications as J2EE enterprise application archive (.ear) or web archive (.war) applications. It accomplishes this through it's HttpFrontController.

The core Application Controller, Command invocation, and request / response handling within Marrow is protocol agnostic. Allowing multiple Font Controllers, Request Context Factories, and ViewMappers to be plugged in seamlessly. This makes Marrow applications completely unbound to the communication protocol over which it is deployed. Your Command implementations will execute the exact same way, weather invoked via a servlet, over a P2P Muscle session, or though an Message Driven Entity Java Bean. Moving your app from a Servlet FrontController to a P2P MUSCLE Application is as simple as configuring the FrontController in the .xml descriptor. Zero Code Modification Required.

Marrow includes a MuscleFrontController for building distributed client-server applications atop a P2P style communications protocol. Using MUSCLE for service discovery and messaging, Marrow provides a total server implementation and abstract client implementation. This allows you to build client-server applications with intrinsic support for clustering, fail-over, and asynchronous type-safe messaging. If that isn't enough, Marrow also supplies a small HTTP server bridge. Allowing you to expose your MUSCLE Marrow application as an AJAX Web Application. Building a Web Application in this manner completely removes the necessity for Servlets, J2EE Application Servers, and the insanity that comes with packaging your client and server code in the same projects.

Project Marrow is NOT:

Marrow is not an arcane, heavyweight MVC framework (although we do implement MVC) with an identity crisis. It does not branch out into IOC. It does not handle transaction demarcation. You're more than welcome to integrate Marrow on top of those solutions if you so desire. Marrow is not a persistence layer.

Is Marrow right for my project?

That's up to you. The use of patterns greatly simplifies application development. A single XML descriptor is used to tell Marrow about commands, validators, and FrontController configurations. There's not a lot of overhead. If you're looking for a simple way to develop quick web-applications, without needing the arcane complexity of Struts, the incorrectly named objects in SpringMVC, and need something solid and quick, perhaps Marrow is for you. If you're looking for a way of freeing yourself from Application Servers, Servlet Containers, and want to write Client-Server applications that are real applications: You definately need to look at Marrow-MUSCLE. If you like Struts, if you think SpringMVC is wonderful, or if you find yourself overwhealmingly agreeing with industry analysts, then you'll probably want to ignore or avoid Marrow -- You won't think it makes sense to do things this straightforward.

History of Marrow:

Marrow was created based upon patterns and strategies cataloged in the book J2EE Core Patterns. Originally conceived to be a basic framework for the development of new J2EE applications as part of an infrastructure overhaul at UMMC, it could prove quite useful to others. The more eyeballs we have looking at it, the better it will get. Let us know if you're able to use this project in your own way!


SourceForge.net Logo