Chris, thanks for taking the time and providing the positive feedback. It really feels good, and for me extra good this particular week ;-)
Hope to see the outcome of your academic work one day. On Tue, Aug 2, 2011 at 1:48 PM, Chris Chapman <[email protected]> wrote: > I have really enjoyed reading things on the Qi4j list. I am fairly new > to Qi4j, having discovered it while working on my MS project. I am not a > very experienced developer, so while I have not contributed to the list > or to the Qi4j project yet, I have tried to soak up as much as I can. I > am thinking that some of my naivete might be useful in this discussion. > > I think Qi4j is the best thing that has happened to Java since Java got > interfaces. > > I am a systems thinker and have trouble keeping complicated algorithms > straight in my head. So as I learned how to program, I gravitated toward > OOD, then role-based design using interfaces, and eventually to DDD. I > made it through (most of) Eric Evan's book. DCI introduces the idea of > context and interaction. Taking the idea of DDD and (mis)applying to the > "software application" domain makes it easy to understand CQRS and Event > Sourcing. All of this makes sense to me because it models the world and > results in simple code that is easy to maintain. > > A couple years ago (before I discovered Qi4j) I implemented a simple > CQRS framework for a job assignment (learning basic ideas from Udi Dahan > and Greg Young). As I built up a domain model using roles, the domain > classes got bigger and bigger as they had more roles to implement. I > kept wishing there was a way to share the "Describable" role > implementation (among others), so I didn't have to implement it for > every class that played that role. I stumbled on the Qi4j website in the > course of some research. My first impression of the project was that it > was an extremist approach to software development, like XP is to > software methodology. But I decided to look into it more and discovered, > instead of an extreme approach, that Qi4j solves a fundamental problem > with OOD. Yes, the runtime and assembly take a little getting used to, > although application assembly is simpler (and MUCH more powerful) than > Spring's XML configuration. Mixins fixed the role implementation problem > that I mentioned before. Concerns, Constraints, and SideEffects make AOP > much simpler to implement, and add semantic intent to the code. (BTW, > Rickard et al., the Command/Query HATEOAS web interface in Streamflow is > awesome. In the CQRS framework mentioned previously, I used an MVC web > architecture that created a command in a controller method and sent it > to the system. I never thought of extending commands and queries into > the web interface and tying everything together with hypertext. > Although, +1 for pluggable JSON serialization for Value objects in Qi4j 2.0) > > I see Qi4j as an information system platform. It is more than a > framework. It seems especially geared for intelligent information > systems, rather than unintelligent, anemic information systems. Qi4j > with DCI seems like a good approach for most intelligent systems. > > Many of my fellow students seem caught up in Ruby or .NET hype. When I > talk to them about the awesomeness of designing with roles, I usually > get blank stares (I've never had a software development job outside of a > university setting, so I don't know how it is in the "real world" :) ). > Many of them learn languages but don't learn patterns. I think the > patterns are more important than the implementation language. Patterns > solve problems. Qi4j is a pattern language that makes it easier to > create intelligent software systems. One of the greatest strengths of > Qi4j is that it makes it easier to implement complicated patterns. > > Thank you! > > FYI, my master's project (built on Qi4j) includes building a > collaborative system for historical and genealogical research. > Conclusions are built up by extracting bits of information from original > source documents. Kind of like case management with a few twists. Qi4j > has made development much more manageable and enjoyable. I am surprised > sometimes with what Qi4j can do. > > Thanks, > Chris Chapman > > _______________________________________________ > qi4j-dev mailing list > [email protected] > http://lists.ops4j.org/mailman/listinfo/qi4j-dev > -- Niclas Hedhman, Software Developer http://www.qi4j.org - New Energy for Java I live here; http://tinyurl.com/3xugrbk I work here; http://tinyurl.com/24svnvk I relax here; http://tinyurl.com/2cgsug _______________________________________________ qi4j-dev mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/qi4j-dev

