Jmaki
From Wikipedia, the free encyclopedia
jMaki is an Ajax framework that provides a lightweight model for creating JavaScript centric Ajax-enabled web applications using Java, PHP, and Phobos.
About jMaki jMaki is a lightweight client/server framework for creating JavaScript centric Web 2.0 applications using CSS layouts, widgets widget model, client services such as publish/subscribe events to tie widgets together, JavaScript action handlers, and a generic proxy to interact with external RESTful web services. While jMaki abstracts much of the JavaScript and CSS by providing defaults for widgets, the JavaScript widgets and CSS are made easily accessible so they may be customized by a designer or page developer. jMaki focuses on the aspects of delivering JavaScript to the client allowing the JavaScript to communicate to various server-technologies including PHP, Java (JSP/JSF), and Phobos in a server-technology neutral way.
Following are the client and the server modules that make up jMaki.
Client Side Components jMaki Layouts: - jMaki Layouts provide a standards based starting point for creating your web applications using HTML and CSS. The CSS is in plain view so it can be easily customized for your needs. jMaki Client Runtime: - The jMaki Client Runtime is the JavaScript responsible for bootstrapping all widgets and passing parameters provided by a server-side runtime to the widgets. Parameters are unique to each widget, and the JavaScript runtime makes sure that each widget instance gets the correct parameters that were passed from the server-side runtime. In cases where parameters are not provided the runtime uses default parameters that may then be customized for each widget. jMaki Client Services:Services such convenient APIs for performing XMLHttpRequest and publish subscribe on the client are provided to all widgets as a means of communication. jMaki glue is built on top of publish/subscribe events. jMaki Glue is built on top of the publish/subscribe mechanism. It allows you to define application behavior and time widgets together widgets using JavaScript actions when a specific event is published to a topic. jMaki Timers allow JavaScript action handlers to be called or events to be published at a set interval. The jMaki Injector is a client service that allows you to bring in an external page into any given div element. The Injector transfers scripts and CSS to the global page content and allows widgets to be loaded much like an iframe without the usability issues.
jMaki Widget Model - The jMaki widget model provides a component model for reusable JavaScript components. The structure is based on a HTML, JavaScript and CSS. You can use this structure to create your own widgets or wrap widgets from any given toolkit. jMaki provides default wrappers and a server tie-in for many commonly-used Dojo, Yahoo UI, Prototype, and some native widgets. jMaki also defines a widget.json format which is a common way of describing which so that they are accessible by tools. Server Components: jMaki Server Runtime - The jMaki Server Runtime is responsible for tying the jMaki JavaScript Client Runtime to a server-side runtime such as Java, PHP, or the JavaScript-based Phobos runtime. The server runtime tracks and renders all script and CSS references based on library type being used making sure that the duplicate script and CSS links are not duplicated. The server-runtime also makes sure API keys (such as Google and Yahoo Map keys) are applied when necessary based on a configurable set of keys. The server runtime renders the HTML templates making and serializes data in JavaScript such that each widget instance is provided the proper data. XmlHttpProxy - The XmlHttpProxy module provides a means for widgets to access JSON or XML access RESTful XML-based services outside of the web application domain. Such services include RSS feeds, Yahoo services such as geocoding, Flickr image searches, and many more to come. The XmlHttpProxy allows widgets to access services in a uniform way by providing XSL-to-JSON transformations that can be easily customized.
For more details about jMaki please see the developer documentation[1]