What's special about YAJAF
What was my objective with writing YAJAF? Well quoting Paul Graham:
Ordinarily technology changes fast. But programming languages are different: programming languages are not just technology, but what programmers think in. They're half technology and half religion.
Everyone (me included) who develops code can be described by this statement. When I started writing YAJAF, I had a few goals:
- Develop code that runs in a browser
- Not require an end user to download anything special (e.g. Flash) to execute the code, a seamless experience
- Work across as many modern browsers as possible.
I have a design philosophy that great design taps into the tacit knowledge of those you are designing for (why newfangled keyboards, with strange key layouts, will never catch on). Programmers are used to writing code a certain way, with a certain religion. How much UI design experience is out there for Java, C++, and C#? Wouldn't it be great if that could be tapped for this next stage of software development, web applications?
All this boils down to the following piece of YAJAF code that could be executed anywhere Yajaf is loaded.
var myPanel = new FX.FXWT.FXpanel();
var myFrame = new FX.FXWT.FXframe();
var myButton = new FX.FXWT.FXbutton("press me!")
Voila, we've crated a frame widget with a panel, and a button on the panel.
All of that though is the YAJAF library in action, again mimicking Java. The two things that are special, first I can write code that uses a library in a way thats familiar, and second, the actual library components are written in such a way that I can extend the behavior of them in any way I wish. I could create new 'classes' extending the base 'classes' and adding custom code.
I've come to the decision that I'm going to start opening up the YAJAF framework, but I need to polish off a couple of the rough edges of the framework before I do. Hopefully this quick essay will help those visiting understand what I think makes this framework different.