XCF is a framework you use to write your POJOs (plain old java objects). It provides a mechanism to adapt your application to a variety of technology stacks, thus the POJO system you write can be easily deployed into a variety of environments (web app, client app, mobile app, etc.). The first question to ask is does the world need another java framework? The answer, of course, is no. So why build it? First and foremost, a framework is a complex application. Building one is an excellent opportunity to learn about common design patterns and on how to apply those design patterns. Furthermore, by building this framework not only will you understand better how to translate design ideas into implementation, you will also gain insight into how decisions translate to code that is either hard or easy to maintain down the road. But the most important reason is that when it comes down to it, we are a bunch of propeller heads and what can be more fun that building a framework?
XCF was developed by Dataskill, Inc. and Eternal Adventures, Inc. I would like to personally thank Nigel Hook for his support and faith. Without that this project would not have been possible, nor available to the open source community.
XCF was initially developed from 2000-2003 by:
- Sonjaya Tandon
- Curt Kaffer
- Ian Crawford
- David C. Papayoanou
- Jeff Margileth
- Wolfgang Black
Framework 101: Building XCF
If you are new to this series of articles, I recommend you start with the walk through in lesson 05. The first five lesson’s are heavily related to each other. The walk through will give you a good idea of what you are leading up to in all those articles. I recommend you skim the walk through, then move onto Lesson 01.
- Lesson 01: Building the core (Facade Design Pattern)
- Lesson 02: Request Processing(Composite Design Pattern)
- Lesson 03: Implementing Convention(Flyweight Design Pattern)
- Lesson 04: Interpreting XML(Interpreter Design Pattern)
- Lesson 05: Building the facade(Builder Design Pattern)
- Lesson 06: Rendering Responses(Strategy Design Pattern)
- Lesson 07: Writing a Native Listener
- Lesson 08: Adding Asynchronous Communication
- Lesson 09: Enhancing the Context Space
- Lesson 10: Adding a State Machine
- Lesson 11: Using the state machine to model a web application
- Lesson 12: Adding AJAX output renderers